CS 541 Lecture -*- Outline -*- * Research Directions in Functional Programming Languages Reference: Hudak (the following is seen by an outsider, and somewhat out of date) Better source for new things: http://haskell.org/communities/ ** Adapting ideas to mainstream languages side effect control seems promising (FX, alias control) linear types more powerful expressions in mainstream languages ** Type systems Making polymorphic functions first class without having too much to write Better tools for extensible language interpreters Better module systems ** Integration with real world Using monads to do foreign function calls, control side effects, etc. ** More expressive syntax pattern matching for abstract types (see Hudak's discussion of views) ** Compilation and Optimization *** On conventional machines **** when is it safe to implement updates destructively e.g., for arrays **** implicit caching and memoization *** Novel architectures Note that these have never gotten anywhere **** Data Flow Machines **** Graph reduction machines based on use of combinators ... ** Parallelism *** How to express? **** Implicit (as in data flow) **** Explicit (what constructs?) *** How to map processes to processors? *** mobile code, distribution ** Nondeterminism how to salvage referential transparency? how to deal with logic languages, etc.