Building Programatica
- Implementation of tools
- Front-end for Haskell 98
People
- Thomas Hallgren
- Iavor Diatchki
- ...
Previous work (before Sept 10th, 2001)
- Module system
- Careful reading of the Module section of the Haskell 98 report
- Results:
- a clarification of the report
- an implementation
- Extensible type checker for Haskell 98
- Translation of Haskell to the proof editor Alfa
Progress since last visit (Sept 10th 2001)
- Integration of module system implementation in the front-end
- A new lexical analyzer for Haskell
- Translation of Haskell to HTML
- StripComments
- Support for P logic
- PFE - a front-end framework
- PFE Haskell Browser
- Publications
Integration of module system implementation in the front-end
Processing multi-module Haskell programs is now easy
- Operator precedences
- Scoping
- Type checking
- Translation to Alfa
A new lexical analyzer for Haskell
- The old lexer was hand-written, clumsy and buggy
- The new one is split into two main parts
- A lexical grammar specifications
- A simple transliteration of the grammar in the Haskell report
- A reusable regular expression compiler
- Based on standard text book methods
- All implemented in Haskell 98
Translation of Haskell to HTML
- Syntax highlighting
- Information pop-ups
- Hyperlinks to definitions
- Preserved comments and layout
- Example: the new Lexer for Haskell
StripComments
- We released a simple tool that strips comments and white space from Haskell 98 programs
- (Again, based on the new lexical analyzer)
- It was asked for on the Haskell mailing list
- Useful when measuring code size
Support for P logic
- Extension of Haskell 98
- Predicate definitions
- Assertions
- Parsing, pretty printing, type checking
PFE - a front-end framework
- All the front-end functionality has been collected in an extensible framework
- Used mainly through a command line interface
- Command line interface inspired by CVS
- Built-in make(1)-like functionality
- (Dependencies between modules are detected automatically)
- Extensible in several dimensions
- Language extensions
- New commands
- Extended internal state
PFE Haskell Browser
- A Haskell browser based on the PFE framework
- Similar to the HTML translation of Haskell
- Syntax highlighting
- Navigation
- Can type check and display types
- Can be developed
- to a graphical user interface to the PFE frame-work
- from a browser to an editor
- In progress: support for certificates
Publications
- "A Formal Specification of the Haskell 98 Module System"
- Iavor S. Diatchki, Mark P. Jones, Thomas Hallgren
- A paper submitted to the 2002 Haskell Workshop
- "A Lexer for Haskell in Haskell"
- Thomas Hallgren
- A talk presented at the Haskell Implementers Meeting, Portland, January 2002
What's next
- Integrate support for certificates in the PFE framework
- More work on translation of Haskell and the P logic to theorem provers
- Polish off parts of the tools and release them to the Haskell community
- Tools often asked for (that we could implement with little effort):
- Replace layout with explicit braces and semi-colons
- Transform away the module system
- (combining many modules into one)
- Transform away overloading
- Documentation tools
The end
Questions?