FL is a dynamically typed strict functional language with throw and catch exception semantics much like in ML. Each function has an implicit history argument which is used for doing things like strictly functional I/O, but is also used for linking to C code. For doing optimization, there exists a type-system which is an extension of Hindley-Milner type inference.