

Haskell is completely referentially transparent.Lambda expressions: create functions without giving them explicit names.

List comprehensions to create a list based on existing lists.Clear, intuitive syntax inspired by mathematical notation.The allocation and GarbageCollection system.Īpart from this Haskell has its own advantages such as: If you are always allocating new objects, rather thanĭestructively manipulating existing ones, the locking can be hidden in Safe multithreading! Immutable data structures are not subject to data race conditions, and consequently don't have to be protected by Many housekeeping tasks made for you: deconstructing data structures (PatternMatching), storing variable bindings (LexicalScope withĬlosures), strong typing (TypeInference), GarbageCollection, storageĪllocation, whether to use boxed (pointer-to-value) or unboxed (value Hierarchy decided the message is flawed? How about having a history of Wouldn't it be just too cool to be able toĮasily roll back every change if some object deep in the call Imagine you have a complex OO system processing messages - every component might make stateĬhanges depending on the message and then forward the message to some The ability to have your cake and eat it. but what do I know?įP is modular in the dimension of functionality, where ObjectOrientedProgramming is modular in the dimension of different As such, I think it is the best software design paradigm for ExtremeProgrammers. Often this leads to enhancedįP encourages quick prototyping.

If you want to know "why Haskell?", then you need to consider advantages of functional programming languages (taken from ):įunctional programs tend to be much more terse than their ImperativeLanguage counterparts.
