This course studies pure functional programming in the Haskell language and the use of functional programming to build domain specific languages (DSLs): customized, application specific programming languages. This course starts with an introduction to Haskell and its essential ideas of lazy evaluation and type inference. Advanced functional programming topics will include type classes, monads and monad transformers, arrows, templates, dependent types, parser combinators, and multiple parameter type classes. The class will study existing DSLs and DSL implementation techniques, including languages for reactive programming, computer vision, hardware design, computer music, and parallel processing. Students will implement a DSL of their choice in Haskell.
I'm looking at using a new book (just publshed!): https://www.amazon.com/Programming-Haskell-Graham-Hutton/dp/1316626229/ref=sr_1_1
- /Week 1 - Lambda Calculus and the theory of functional programming
- Week 2 - Haskell and Type Systems
- /Week 3 IO and Type Classes
- /Week 4 Functional Programming
- /Week 5 Monads
- Week 6 (October 8, 10) - Parsing and Testing
- /Week 7 Parsing
The final project in this class will be a DSL. Teams can have up to 3 people on them. All code must be in a public github repository.
Teams / project proposals are due Oct 28.
- /LambdaCalculus - Due Monday, August 29 by midnight - put under my door
- /Lists - Due Friday, September 2 by midnight - submit via blackboard
- /IO and Types - Due Friday, September 16 at midnight - submit via blackboard
- /Monads - Due Friday, September 30 at midnight
- /Parsers - Due Monday October 18 at midnight
- Embedded DSLs: Euterpea - Due October 28