University of Zagreb Faculty of Electrical Engineering and Computing PROGRAMMING IN HASKELL Academic Year 2015/2016 WRAP-UP v1.0 (c) 2015 Jan Ć najder ============================================================================== == RESOURCES ================================================================= * Haskell home: http://www.haskell.org * GHC http://www.haskell.org/ghc/ Libraries * Haskell Hierarchical Libraries http://www.haskell.org/ghc/docs/latest/html/libraries/ * Hackage http://hackage.haskell.org * Hoogle http://www.haskell.org/hoogle/ * Hayoo! (searches over Hackage) http://holumbus.fh-wedel.de/hayoo/hayoo.html Learning * Try Haskell http://tryhaskell.org/ * Learn you a Haskell for a Great Good http://learnyouahaskell.com/ * FPComplete School of Haskell https://haskell.fpcomplete.com/school Prize to be won: 1k$ * Haskell Wiki http://en.wikibooks.org/wiki/Haskell * Real World Haskell http://book.realworldhaskell.org/read/ * Parallel and Concurrent Programming in Haskell http://chimera.labs.oreilly.com/books/1230000000929/index.html * 24 days of Haskell http://ocharles.org.uk/blog/ Community * Haskell Reddit http://www.reddit.com/r/haskell * Haskell mailing lists http://www.haskell.org/haskellwiki/Mailing_Lists * Haskell IRC channel http://www.haskell.org/haskellwiki/IRC_channel * Haskell Communities and Activities Report (HCAR) http://www.haskell.org/haskellwiki/Haskell_Communities_and_Activities_Report * Haskell Weekly News http://planet.haskell.org/ * Monad Reader http://themonadreader.wordpress.com/ * Haskellers http://www.haskellers.com/ == WHAT NEXT? ================================================================ First, you need to consolidate your working knowledge of Haskell. Start by reading "Learn you a Haskell for a Greater Good". If you feel confident in the material covered in this course, you can immediately start with chapter 10. You can then deepen your knowledge by reading "Real World Haskell". From there you can take basically take two different paths: a practical one (advanced Haskell programming, functional programming design) or a theoretical one (theory underlining FP, lambda calculus, category theory, functional data structures). Or you can, of course, take a middle road. == PUH 2 ===================================================================== PUH 2 will take it from where PUH left off. It will focus on two aspects: * Advanced Haskell programming ==> "Real World Haskell" and beyond * Functional algorithms design ==> "Pearls of Functional Algorithm Design" Similar to PUH, it's going to be more technical and less theoretical (a programming course rather than a theoretical CS course). Desiderata: * monad transformers * applicative programming * monadic parser combinators * the unavoidable stuff: GUI, networking, databases, etc. * GHC language extensions * parallel and concurrent programming * foreign function interface * profiling and code optimization * template Haskell * arrows * generalized algebraic types * generics * lenses * pipes * zippers * useful Hackage packages * zygohistomorphic prepromorphisms