Comparison of functional programming languages: Difference between revisions
BrettGiles (talk | contribs) m (→Haskell compared to other Functional Programming Languages: Heading redundant, category) |
mNo edit summary |
||
(5 intermediate revisions by 5 users not shown) | |||
Line 3: | Line 3: | ||
{| class="wikitable" style="text-align:center;" | {| class="wikitable" style="text-align:center;" | ||
| | | | ||
! Evaluation | ! Default Evaluation | ||
! | ! 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 19: | Line 31: | ||
| static | | static | ||
| yes | | yes | ||
|- | |- | ||
! Miranda | |||
| lazy | |||
| lazy lists | |||
| static | |||
| yes | |||
|- | |||
! F# | |||
| eager | |||
| raw side-effects | |||
| static | |||
| no | |||
|- | |||
! ML | ! ML | ||
| | | eager | ||
| side-effects | | raw side-effects | ||
| static | | static | ||
| no | | no | ||
|- | |- | ||
! Scheme | ! Scheme | ||
| | | 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 | ||
| side-effects | | raw side-effects | ||
| | | 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 |