Haskell is a pure functional programming language that is statically typed and implements immutable data structures. It uses recursion extensively in place of loops. Some key features include: - Functional programming with immutable values and functions as first-class citizens - Static typing with type inference - Recursion instead of loops for iteration - List comprehensions and pattern matching It has compilers like GHC and interpreters like Hugs. Code examples demonstrate list handling, recursion, and functional concepts like currying, partial application, and let/in bindings. Haskell has advantages for learning functional programming but also has disadvantages like initial complexity and lack of performance of other languages.