Declarative by nature and get parallelism and concurrency from the world class ghc runtime ; avoid call back style js, locks mutex, semaphores
Type classes
Type inference
Io capturing the messy real world of state, side effects, io, async concurrency, parallelism
Pure functions or expressions as opposed to imperative Statements
Pattern matching
Monads >>=
Monadic transformers
Maybe Monad equivalent to option type in rust ocaml to avoid null (f# might still have nulls)
Hackage cabal stack and world class libraries
Green threads like erlang Otp elixir
Cloud haskell is haskell's answer to erlang
Lazy default evaluation with strict constraints if needed
Perform unsafeio but explicitly
Immutable by default
Stm software transactional memory when need mutations that compose well
Heavily optimized ghc compiler with fast gc
Type safety Compilers giving errors on type mismatches : trusting the compiler and refactoring with abandon - if it compiles it works
Haskell native compiled code can be Very fast as in golang / ocaml
Tldr haskell makes easy things hard with a steep learning curve and hard things easy as composing is way more useful than Oops. Theoretically, functional programs should: have fewer bugs, be easier to optimize for performance, allow you to add features more quickly, achieve the same outcome with less effort, require less time to get familiarized with a new codebase, etc.
As venerable prof Joe armstrong says you need haskell erlang for fp ; you need c for high performance ; you really don't need cpp Java python c#
Most of these points apply to varying degrees to common lisp racket erlang elixir rust
Declarative by nature and get parallelism and concurrency from the world class ghc runtime ; avoid call back style js, locks mutex, semaphores
Type classes
Type inference
Io capturing the messy real world of state, side effects, io, async concurrency, parallelism
Pure functions or expressions as opposed to imperative Statements
Pattern matching
Monads >>=
Monadic transformers
Maybe Monad equivalent to option type in rust ocaml to avoid null (f# might still have nulls)
Hackage cabal stack and world class libraries
Green threads like erlang Otp elixir
Cloud haskell is haskell's answer to erlang
Lazy default evaluation with strict constraints if needed
Perform unsafeio but explicitly
Immutable by default
Stm software transactional memory when need mutations that compose well
Heavily optimized ghc compiler with fast gc
Type safety Compilers giving errors on type mismatches : trusting the compiler and refactoring with abandon - if it compiles it works
Haskell native compiled code can be Very fast as in golang / ocaml
Tldr haskell makes easy things hard with a steep learning curve and hard things easy as composing is way more useful than Oops. Theoretically, functional programs should: have fewer bugs, be easier to optimize for performance, allow you to add features more quickly, achieve the same outcome with less effort, require less time to get familiarized with a new codebase, etc.
As venerable prof Joe armstrong says you need haskell erlang for fp ; you need c for high performance ; you really don't need cpp Java python c#
Most of these points apply to varying degrees to common lisp racket erlang elixir rust