- todo - interpreter - overloaded functions - garbage collection - compiler - generate C code - optimize code - monads - pattern matching - (x, y) = foo; ==> q = foo; x = first q; y = second q; - function (x, y) -> foo; ==> function q -> let x = first q; y = second q; in foo; - functional type system - native functions - exception handling --------- - Grammer --------- terminal : symbol number string [ list ] ( expression ) function args -> expression let definitions in expression if expression then expression else expression member : terminal member . terminal multiply : member multiply * member addition : multiply addition + multiply apply : addition apply pair : apply apply , pair list : pair pair :: list expression : list definition : symbol = expression symbol args = expression