Sorting Morphisms / Lex Augusteijn |
Introduction / 1: |
Morphisms on Lists / 2: |
The List Catamorphism / 2.1: |
The List Anamorphism / 2.2: |
The List Hylomorphism / 2.3: |
Insertion Sort / 2.4: |
Selection Sorts / 2.5: |
Leaf Trees / 3: |
The Leaf-Tree Catamorphism / 3.1: |
The Leaf-Tree Anamorphism / 3.2: |
The Leaf-Tree Hylomorphism / 3.3: |
Merge Sort / 3.4: |
Binary Trees / 4: |
The Tree Catamorphism / 4.1: |
The Tree Anamorphism / 4.2: |
The Tree Hylomorphism / 4.3: |
Quicksort / 4.4: |
Heap Sort / 4.5: |
Paramorphisms / 5: |
The List Paramorphism / 5.1: |
Insert As Paramorphism / 5.2: |
Remove As Paramorphism / 5.3: |
Generalizing Data Structures / 6: |
Generalizing Quicksort / 6.1: |
Generalizing Heap Sort / 6.2: |
Conclusions / 7: |
Generic Programming - An Introduction / Roland Backhouse ; Patrik Jansson ; Johan Jeuring ; Lambert Meertens |
The Abstraction-Specialisation Cycle / 1.1: |
Genericity in Programming Languages / 1.2: |
Path Problems / 1.3: |
The Plan / 1.4: |
Why Generic Programming? / 1.5: |
Algebras, Functors and Datatypes |
Algebras and Homomorphisms |
Functors |
Polynomial Functors |
Datatypes Generically |
A Simple Polytypic Program |
PolyP |
Regular Functors in PolyP |
An Example: psum |
Basic Polytypic Functions |
Type Checking Polytypic Functions |
More Examples of Polytypic Functions / 3.5: |
PolyLib: A Library of Polytypic Functions / 3.6: |
Generic Unification |
Monads and Terms |
From Functions to Relations |
Why Relations? |
Parametric Polymorphism |
Relators |
Occurs-In / 5.4: |
Solutions to Exercises |
Generic Program Transformation / Oege de Moor ; Ganesh Sittampalam |
Abstraction versus Efficiency |
Minimum Depth of a Tree |
Decorating a Tree |
Partitioning a List |
Automating the Transition: Fusion and Higher Order Rewriting |
The MAG System |
Getting Acquainted |
Accumulation Parameters |
Tupling |
Carrying On |
Matching Typed ?-Expressions |
Types |
Expressions |
Substitutions |
Matching |
Concluding Remarks |
Answers to Exercises |
Designing and Implementing Combinator Languages / S. Doaitse Swierstra ; Pablo R. Azero Alcocer ; João Saraiva |
Defining Languages |
Extending Languages |
Embedding Languages |
Overview |
Compositional Programs |
The Rep_Min Problem |
Table_Formatting |
Defining Catamorphisms |
Discussion |
Attribute Grammars |
The Table_Formatting Problem |
Comparison with Monadic Approach |
Pretty Printing |
The General Approach |
Improving Filtering |
Loss of Sharing in Computations |
Strictification |
Pretty Printing Combinators Strictified |
Using MetaML: A Staged Programming Language / Tim Sheard |
Why Staging? |
Relationship to Other Paradigms |
Introducing MetaML |
The Bracket Operator: Building Pieces of Code |
The Escape Operator: Composing Pieces of Code |
The run Operator: Executing User-Constructed Code |
The lift Operator: Another Way to Build Code |
Lexical Capture of Free Variables: Constant Pieces of Code |
Pattern Matching Against Code |
A Staged Term Rewriting System |
Safe Reductions under Brackets |
Safe-Beta |
Safe-Eta |
Safe-Let-Hoisting / 6.3: |
Non-standard Extensions |
Higher Order Type Constructors / 7.1: |
Local Polymorphism / 7.2: |
Monads / 7.3: |
Monads in MetaML / 7.4: |
An Example Monad / 7.5: |
Safe Monad-Law-Normalization Inside Brackets / 7.6: |
From Interpetors to Compilers Using Staging / 8: |
The While-Language / 8.1: |
The Structure of the Solution / 8.2: |
Step1: Monadic Interpreter / 8.3: |
Step2: Staged Interpreter / 8.4: |
Typing Staged Programs / 9: |
Type Questions Still to be Addressed / 9.1: |
Conclusion / 10: |
Exercises / 11: |
Cayenne - A Language with Dependent Types / Lennart Augustsson |
The Type of printf |
The Set "Package" |
The Eq Class |
Core Cayenne |
Functions |
Data Types |
Records |
The Type of Types |
Full Cayenne |
Hidden Arguments |
Syntactic Sugar |
Modules |
The Cayenne Type System |
Translucent Sums |
Typing and Evaluation Rules |
Type Checking |
Undecidability in Practice |
Cayenne as a Proof System |
Implementation |
Erasing Types |
Keeping Types |
The Current Implementation |
Related Work |
Future Work |
Acknowledgments |
The TautologyFunction / A: |
Haskell as an Automation Controller / Daan Leijen ; Erik Meijer ; James Hook |
Minuscule Introduction to Haskell |
Using COM Components |
MS Agents in Haskell |
Essential COM |
Interface Types |
Inheritance |
IDL |
Automation |
Using Automation |
Methods |
Properties |
HaskellDirect |
Advanced Automation / 5.5: |
Variants |
Optional Arguments |
Advanced Example |
Webster |
Interacting with other Languages |
The Script Server Interfaces |
Exporting Values from Haskell |
Visual Basic and Haskell |
Importing Values into Haskell |
Handling Events / 8.5: |
Sorting Morphisms / Lex Augusteijn |
Introduction / 1: |
Morphisms on Lists / 2: |