Skip to content

Latest commit

 

History

History
273 lines (198 loc) · 10.9 KB

haskell_links.markdown

File metadata and controls

273 lines (198 loc) · 10.9 KB

% HaskellerZ - Link Collection

This link collection was originally assembled for the Functional Programming and Formal Methods course taught at the CS department of ETH Zurich. It is now maintained by the HaskellerZ meetup group for the benefit of all fellow Haskellers.

Note: if you are interested in Haskell and located near Zurich, then why don't you drop by in one of the HaskellerZ meetups? You are very welcome there :-)

Haskell Beginners

Installing GHCi:

  • The easiest way to install GHCi on OS X and Windows is to use the Haskell platform packages.

  • On Linux, we recommend to use GHC packages provided by your distribution or the binary packages provided on the GHC hompage.

Using GHCi:

Learning Haskell:

Haskell programmers

Using the Glasgow Haskell Compiler (GHC)

As soon as you develop some real applications, you'll need a good build environment and the speed of a compiled executable. The first is given the the Common Architecture for Building Applications and Libraries (cabal). The later is given by the Glasgow Haskell Compiler (GHC), whose interactive shell GHCi you are already using. Apart from GHCi, GHC also supports various extensions to the Haskell language and features an integrated debugger.

Do not reinvent the wheel: know thy libraries

There exists a fast growing repository of Haskell libraries that will serve you very well during your daily programming excursions. They are all developed collaboratively on Hackage go and check them out. A few that you should definitively have a look at are:

  • vector: the state-of-the art array library

  • bytestring: types and functions to manipulate sequences of bytes

  • text: types and functions to manipulate strings, i.e., sequences Unicode characters

  • attoparsec: efficiently parsing bytestrings and text values.

  • aeson: JSON decoding and encoding

  • cmdargs: command-line parsing made easy

  • criterion: benchmarking Haskell functions made easy. Note that criterion supports the precise measurements of functions taking just a few nano-seconds to execute.

  • repa: high performance, regular, multi-dimensional, shape polymorphic parallel arrays. See this real-time raytracer implemented using it.

Some of the libraries are also just cool and understanding them will widen your computer science horizon.

Cool Applications: FP in "The Real World"

For a long time, Haskell and other functional languages like OCaml, SML, Scala, and F# have been a research only programming languages. However this is no longer the case. There are companies like Galois Inc. (Haskell), Bluespec (Haskell), Credit Suisse (F#) Twitter (Scala) and quite a few more that are using functional languages like Haskell to solve their real world problems. See the book
"Real World Haskell" (online) for explanations on how to do this best.

Furthermore, there are also a number of exciting open-source project being developed using Haskell. Most notably there are:

  • darcs version control system

  • xmonad window manager

  • yesod, and snap, and happstack are Haskell web application servers similar to Ruby on Rails, but with added benefits like type safety and the speed of a compiled language. See the book about yesod for more information about the benefits.

  • yi text editor fully scriptable using dynamically loaded Haskell plugins

  • and many more

All of these projects are open for contributions, not to forget that there surely are plenty of ideas you have that could possibly be realised using Haskell...

Haskell Community: Blogs & Facts

Haskell has attracted a very active and friendly community. They use the following communication channels

Some interesting blogs (posts) are:

Haskell Experts

There is a lot of active research going on with respect to functional languages and more correct and more productive programming in general. A very good starting point to delve into these topics is Oleg Kiselyov's homepage. For a starting point with respect to the implementation of functional languages see Simon Peyton Jones homepage. A few topics you might want to investigate

\