Haskell is a statically typed pure functional programming language. It is based on highly sound academic theory and principal. Haskell has pioneered many modern concepts in functional programming such as monads, currying and advanced type inference.
Here is an example of the 100 doors problem:
-- A data structure for a door, either Open or Closed: data Door = Open | Closed deriving Show -- A function named 'toggle' that will open a closed door or close an opened door: toggle :: Door -> Door toggle Open = Closed toggle Closed = Open -- Get the final state of the nth door: final :: Int -> Door final n = foldr toggleIfMultiple Closed [1..n] where toggleIfMultiple m door = if n `rem` m == 0 then toggle door else door -- Print a message reporting the final state each of our 100 doors: main = putStr (concatMap report [1..100]) where report n = "Door " ++ show n ++ " is " ++ show (final n) ++".\n"
Haskell is an advanced programming language based on rigorous theory. It has a strict type system that allows for many programming errors to be caught at compile time and has a functional design that makes concurrency and parallelism relatively easy.
Knowledge of higher order functions can provide the programmer with unique ways of solving certain problems, and lazy evaluation can make certain kinds of algorithms possible that aren't possible to implement in other languages (without modification of the algorithm)