The table shows a comparison of functional programming languages which compares various features and designs of different functional programming languages.

Name Pure Lazy evaluation Typing Abstract data types Algebraic data types Data is immutable Type classes Garbage collection First appeared Common Lisp Dynamic 1984 Scheme Dynamic 1975 Racket Default in Lazy Racket Strong, Dynamic, statically typed with gradual typing in Typed Racket Yes, with Algebraic Racket 1995 Clojure Dynamic 2007 Standard ML StaticWikibooks:Standard ML Programming/Types 1983 OCaml Static 1996 F# Static 2005 Haskell Default Static 1990 Scala Static 2004 JavaScript Dynamic Immutable object#JavaScript 1995 Clean , with optional strictness annotations Static with uniqueness/optionally dynamic , except for unique types 1987 Miranda Default Static 1986 SASL Turner, D.A. "An Implementation of SASL". University of St. Andrews, Department of Computer Science Technical Report. TR/75/4. Dynamic 1972 Elixir Dynamic 2012 Erlang Dynamic 1986 Elm Static 2012 Futhark Static 2014 Python Dynamic Immutable object#Python 1991 Idris Static 2007 Nix Dynamic 2003Wolfram Language Static 1988KotlinStatic 2011SwiftStatic 2014JuliaDynamic 2012PureScriptStatic 2013Rust and external librariesStatic, through traits 2010Bosque Static2019 D Static 2001 Gleam Static 2019

References