Comparison of functional programming languages: Difference between revisions

From HaskellWiki
m (w/ -> with. We don't need to save bandwidth.)
mNo edit summary
 
(One intermediate revision by one other user not shown)
Line 3: Line 3:
{| class="wikitable" style="text-align:center;"
{| class="wikitable" style="text-align:center;"
|
|
! Evaluation
! Default Evaluation
! IO
! Effects
! Typing
! Typing
! Pure
! [[Pure]]
|-
|-
! Haskell
! Haskell
| lazy
| lazy
| monads
| IO type + monads
| static
| yes
|-
! PureScript
| eager
| Effect type + monads
| static
| yes
|-
! Elm
| eager
| Cmd/Sub events
| static
| static
| yes
| yes
Line 25: Line 37:
| static
| static
| yes
| yes
|-
! F#
| eager
| raw side-effects
| static
| no
|-
|-
! ML
! ML
| eager
| eager
| side-effects
| raw side-effects
| static
| static
| no
| no
Line 34: Line 52:
! Scheme
! Scheme
| eager
| eager
| side-effects
| raw side-effects
| dynamic
| dynamic
| no
|-
! Typed Racket
| eager
| raw side-effects
| gradual
| no
|-
! Clojure
| eager
| raw side-effects
| dynamic + type hints
| no
| no
|-
|-
! Erlang
! Erlang
| eager
| eager
| side-effects
| raw side-effects
| dynamic with compiler annotations for static typing
| dynamic + type hints
| no
| no
|}
|}

Latest revision as of 21:43, 3 May 2024


Default Evaluation Effects Typing Pure
Haskell lazy IO type + monads static yes
PureScript eager Effect type + monads static yes
Elm eager Cmd/Sub events static yes
Clean lazy uniqueness static yes
Miranda lazy lazy lists static yes
F# eager raw side-effects static no
ML eager raw side-effects static no
Scheme eager raw side-effects dynamic no
Typed Racket eager raw side-effects gradual no
Clojure eager raw side-effects dynamic + type hints no
Erlang eager raw side-effects dynamic + type hints no