Functional Languages
Standard ML
ML = Meta Language
LISP
Common Lisp
Clojure
Racket
Scheme
Haskell
General purpose
Declarative, where the program describes what result is wanted, not how (the how is done for you, much like SQL where you describe what you want and the database does the how for you)
Statically typed, where variable types are known at compile time
Type inference, process of determining the appropriate types for expressions based on how they are used
Lazy evaluation, call-by-need, which is an evaluation strategy that delays evaluation of an expression until its value is needed (non-strict evaluation) and this helps avoid repeated evaluations (resource sharing)
programming
SML
]