Fork me on GitHub

Project Notes

#009 Haskell

Haskell probably came to the notice of many programmers when it earned a chapter in Bruce Tate’s Seven Languages in Seven Weeks.

Hakell In a Nutshell

Haskell is…

  • an advanced purely-functional programming language
  • strongly typed
  • statically typed
  • non-strict i.e. reduction proceeds from the outside in and doesn’t evaluate what it doesn’t need to. This is almost (but not quite) lazy evaluation
  • polymorphic
  • brief
  • free

Haskell has..

  • strong support for integration with other languages
  • Erlang-style pattern matching and guards
  • list comprehensions
  • tuples
  • built-in concurrency and parallelism
  • a full tool-chain: debuggers, profilers, libraries, IDEs etc
  • an active community,

Haskell is governed by..

  • a first version defined in 1990
  • a latest definition in The Haskell 2010 Report released July 2010
  • a committee which is formed for the period of one year. Members are nominated from the community and selected by the outgoing committee.

Haskell implementations include..

  • a main implementation in the Glasgow Haskell Compiler (7.10.3 released 8 December 2015)
  • quite a few others in various states of development: Ajhc; Helium; UHC; Frege.

Why Haskell?

Most claims concerning Haskell seem to be second order and nebulous (like increased productivity compared to Erlang).

They all seem to boil down to three specific features of Haskell from which all other benefits arise:

  • code is shorter
  • code is clearer
  • the language provides rigorous control of side effects

Credits and References

About LCK#9 Haskell
Project Source on GitHub Return to the Project Catalog

LittleCodingKata is my collection of programming exercises, research and code toys broadly spanning things that relate to programming and software development (languages, frameworks and tools).

These range from the trivial to the complex and serious. Many are inspired by existing work and I'll note credits and references where applicable. The focus is quite scattered, as I variously work on things new and important in the moment, or go back to revisit things from the past.

This is primarily a personal collection for my own edification and learning, but anyone who stumbles by is welcome to borrow, steal or reference the work here. And if you spot errors or issues I'd really appreciate some feedback - create an issue, send me an email or even send a pull-request.

LittleArduinoProjects LittleModelArt More on my blog