Piazza
- We will be using Piazza for announcements and as a place for you to ask questions.
Installation and coding environment
-
Visit Haskell Platform download page for Windows, Mac, and Linux installers and instructions. We will use GHC 8.4.3 (the latest version as of writing) for this course.
After you installed the platform, run
cabal install HUnit
cabal install hlint
The recommended text editor for the course is Atom with the language-haskell and linter-hlint packages
If you have a favorite text editor (such as emacs or vim) it will work just fine for editing Haskell programs. There is a nice haskell-mode for emacs. Vim comes with syntax highlighting for Haskell out of the box; for more options try this vim haskell mode. Other editors commonly used with Haskell include Nodepad++, TextMate, Gedit, or Sublime.
Help/community
-
Your first stop for asking questions related to this course should be Piazza. However, if you have questions of a more general nature or are interested in exploring the larger Haskell community, read on!
-
The #haskell IRC channel is a great place to get help. Strange as it may seem if you’ve spent time in other IRC channels, #haskell is always full of friendly, helpful people.
-
The Haskell-beginners mailing list is a good place to ask beginner-level questions.
-
The Haskell-cafe mailing list can also be a good place to ask questions, but is much higher-traffic.
-
The Haskell wiki has a list of frequently asked questions.
-
tryhaskell.org gives you a ghci session in your browser, and includes a very simple tutorial. It also features an interface to the #haskell IRC channel.
-
hpaste.org is a good place to paste programs you’re having trouble with in order to get help from people in #haskell.
-
Haskell PasteBin is another paste site, which visualizes a
example
top level value. If it is a function, it will create input widges for its parameters, and if it returns a diagram, it draws that result.
Reading
-
FP Complete’s School of Haskell, a set of online tutorials.
-
Real World Haskell, by Bryan O’Sullivan, Don Stewart, and John Goerzen, published by O’Reilly. A thorough and detailed introduction to Haskell that gets into the nitty gritty of using Haskell effectively in the “real world”. Can be read online for free, or in dead tree form.
-
Learn You a Haskell for Great Good! is a whimsical and easy-to-follow Haskell tutorial, with super awesome illustrations. Also available online or in dead tree form.
-
Beginning Haskell is a recent addition to the Haskell canon. It can be seen as an update of Real World Haskell. This is not available for free.
-
Some reflections on Haskell.
-
The Haskell wikibook actually contains a substantial amount of well-written information; a great resource if you’re having trouble understanding a particular topic and want a different approach.
-
The Haskell wiki is a huge grab-bag of all sorts of information, examples, explanations. The quality varies but it’s definitely a great resource.
-
The Typeclassopedia explains many of the type classes in the standard libraries (
Functor
,Applicative
,Monad
,Monoid
,Arrow
,Foldable
,Traversable
…). -
Planet Haskell aggregates blog posts from the Haskell community.
-
There is a Haskell subreddit for aggregating Haskell-related websites, blog posts, and news.
Reference
-
A useful Haskell cheatsheet.
-
Hackage is a huge repository of Haskell packages. If it isn’t on Hackage, it doesn’t exist. Packages can be automatically downloaded and installed from Hackage using the cabal-install tool.
-
Looking for a function but don’t know what it’s called? Want to see the documentation for a particular function? Hoogle searches many standard libraries and can search either by name or by type.
-
Hayoo is another search engine for the Haskell documentation, which is much more complete (it searches all of Hackage).
-
If you really want the nitty-gritty details of the Haskell language standard, see the 2010 Haskell report.
Previous installments of CIS194
- Fall 2016 by Joachim Breitner
- Spring 2015 by Noam Zilberstein
- Fall 2014 by Richard Eisenberg
- Spring 2013 by Brent Yorgey