Download presentation
Presentation is loading. Please wait.
1
Generic Haskell Where to start from
2
Issues Touched Language Ideas Tools Pitfalls
3
Language Ideas Truely generic programming Better class system Better error messages More “first classness” Better programming environments
4
Better Type System F2? Type inference wherever possible “No religion” approach Polymorphic recursion Accept non-termination of compiler Polymorphic parameters Existential types
5
Better class system Current system is worn out Overloading should be programmable Classes as first class objects API for type system?
6
Better Error Messages Current error messages of Hugs are below standard –Sometimes at the wrong place –Sometimes uninformative –Sometimes just too large –Not user programmable
7
More “First Classness” Modules Classes Types?
8
Tools we have created or are creating Parser Combinator Library Attribute Grammar System Pretty Printing Combinators Library for user definable syntax (small)
9
Parser Combinator Library Quite adequate Furher development in details of usage Basic interface is stable Research on explanation of what is going on Convert into parser generator (Vladimir Costas)
10
Attribute Grammar System (Current) No reason not to use it Provides modularity of language definitions Not written in itself (to be done) Error messages can be improved Support for list like structures
11
Attribute Grammar System (Arthur Baars) Strictification optimisations Transformations, while also transforming attribution rules Supporting different views Flexible to extend for newly encountered situations. Programmable patterns
12
Pretty Printing Combinators Can be used in editors and unparsings Provide insight in language design Editor construction (Martijn Schrage)
13
LRC (editor generator, history)) Can be used Is written in the wrong language Editor generation is laborious Works and is useable! Memoisation is supported
14
User defineable Syntax BExpr_And (BExpr_Or x y) (BExpr_Not (BExpr_And x y) ) => "either" x "or" y BExpr_Or (BExpr_Not x) y => "(" x "->" y ")"
15
Overall Goals Everything nicely documented Integrated documentation and motivation Usable, user friendly system Student proof and student digestable Lecturing material
16
Error Messages (Bastaan Heeren) Locate most probable error source Provide useful feedback Provide as much feedback as possible
17
Implementation Partial evaluation needed for sufficient speed Framework for global analyses needed Code generation for different machines through code generator generators
18
Pitfalls Algol68 syndrom –Do not try to include everything Perform many small experiments Just in time programming Extreme programming
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.