Docs

Lectures & Modules

Modules can be submitted via this Google form. Only one member of each team needs to submit (just be sure all team members’ names are recorded).

  • T 21 Aug, Th 23 Aug
    • Module 00: Introduction to CSCI 360 [ html | md ]
    • Module 01: Introduction to Haskell [ html | lhs ]
  • T 28 Aug
    • Module 02: Algebraic data types and pattern matching [ html | lhs ] (due 30 Aug)
  • Th 30 Aug
    • Module 03: Polymorphism and Lists [ html | lhs ] (due 4 Sep)
  • T 4 Sep, Th 6 Sep
    • Module 04: Syntax and semantics [ html | lhs ] (due 11 Sep)
  • T 11 Sep
    • Module 05: Arith: pretty-printing [ html | lhs ] (due Th 20 Sep)
  • Th 13 Sep
    • Module 06: Arith: parsing [ html | lhs ] (due Th 20 Sep)
  • T 18 Sep, Th 20 Sep
  • T 2 Oct, Th 4 Oct
    • Module 08: Variables [ html | lhs ] (due T 9 Oct)
  • T 16 Oct
    • Module 09: Dynamic type checking [ html | lhs ] (due T 23 Oct)
  • Th 18 Oct
    • Module 10: Static type checking [ html | lhs ] (due T 23 Oct)
  • T 23 Oct, Th 25 Oct
  • T 30 Oct, Th 1 Nov
    • Project 3
  • T 6 Nov, Th 8 Nov, T 13 Nov
    • Module 12: Quilt EDSL [ html | lhs ] (due T 27 Nov)
  • Th 15 Nov, T 20 Nov
  • T 27 Nov, Th 29 Nov

Projects

  • Project 1: Arith compiler [ html, lhs, Parsing.hs ]
    Assigned: Saturday, 9/22
    Due: Tuesday, 10/2 @ 9:45am

  • Project 2: Calculator [ html, lhs, CalcREPL.hs ]
    Assigned: Tuesday, 10/9
    Due: Friday, 10/26 @ 3pm

  • Project 3: Quilt [ html, starter code ]
    Assigned: Tuesday, 10/30
    Due: Tuesday, 11/13 @ 9:45am

  • Final project
    Assigned: Tuesday, 11/13
    Due: Wednesday, 12/5 @ 9:00am

Resources

Installation and coding environment

  • To install Haskell on your computer, follow the instructions here to install the stack tool. You should then be able to run ghci using the command stack ghci. (You may have to run stack setup first.) Come ask for help if you are stuck.

  • If you have a favorite text editor it will probably work just fine for editing Haskell programs. If you use emacs I recommend installing Intero. Other editors commonly used with Haskell include Atom, TextMate, and Sublime Text.

Help/community

  • 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 tends to be full of friendly, helpful people.

  • 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.

  • lpaste.net is a good place to paste programs you’re having trouble with in order to get help from people in #haskell.

  • Many people from the Haskell community are active on StackOverflow, which can be a good place to ask questions.

  • 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.

Reading

  • Graham Hutton’s Programming in Haskell is a required text for the class.

  • Haskell Programming from first principles is a book in progress which has been getting good reviews. An early access, electronic version is currently available for purchase.

  • The Typeclassopedia explains many of the type classes in the standard libraries (Functor, Applicative, Monad, Monoid, Arrow, Foldable, Traversable…).

  • 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.

  • Learn You a Haskell for Great Good! is a whimsical Haskell tutorial with funny illustrations. Might be good as an extra reference though I disagree with many of the pedagogical choices it makes. Available for free online or in dead tree form.

  • 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.

  • Planet Haskell aggregates blog posts from the Haskell community.

  • There is a Haskell subreddit for aggregating Haskell-related websites, blog posts, and news.

Reference

  • Haskell standard library documentation.

  • 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.