diff --git a/README.md b/README.md index 9b0dc68..3b614dc 100644 --- a/README.md +++ b/README.md @@ -65,13 +65,9 @@ To install Haskell 7.8x from the unofficial repo (Fedora 21+ will include it in ### Arch Linux -To install Haskell from the official repos on Arch Linux +To install Haskell from the official repos on Arch Linux, run -Update your mirrorlist -- `sudo pacman -Syy` - -Download Haskell -- `sudo pacman -S cabal-install ghc happy alex haddock` + su -c "pacman -S cabal-install ghc happy alex haddock" ### Mac OS X @@ -218,6 +214,16 @@ If you need JavaScript, you probably want Purescript for generating JS. Purescri - http://www.christopherbiscardi.com/2014/06/22/getting-started-with-purescript/ Great guide for getting started +## Parsing and generating JSON + +- http://blog.raynes.me/blog/2012/11/27/easy-json-parsing-in-haskell-with-aeson/ + +- http://bitemyapp.com/posts/2014-04-11-aeson-and-user-created-types.html + +- http://bitemyapp.com/posts/2014-04-17-parsing-nondeterministic-data-with-aeson-and-sum-types.html + +- https://www.fpcomplete.com/school/starting-with-haskell/libraries-and-frameworks/text-manipulation/json + ## Laziness, strictness, guarded recursion - http://chimera.labs.oreilly.com/books/1230000000929/ch02.html Marlow's book about parallelism and concurrency has one of the best introductions to laziness and normal form I've found. Use other material too if it doesn't stick immediately. @@ -266,22 +272,6 @@ let a = 1 * a -- not guarded, (*) is strict - http://www.haskell.org/haskellwiki/Functional_Reactive_Programming -## Recursion Schemes - -Some of the crazy *-morphism words you've heard are actually about recursion. NB - before tackling this material you should know how to implement foldr for lists and at least one other data structure, such as a tree. (folds are catamorphisms) Knowing how to implement an unfold (anamorphism) for the same will round things out a bit. - -This material dovetails with traversable and foldable. - -- http://patrickthomson.ghost.io/an-introduction-to-recursion-schemes/ - -- http://fho.f12n.de/posts/2014-05-07-dont-fear-the-cat.html - good demonstration of how hylomorphism is the composition of cata and ana. - -- http://comonad.com/reader/2009/recursion-schemes/ - this field guide is excellent. - -- http://eprints.eemcs.utwente.nl/7281/01/db-utwente-40501F46.pdf - -- https://www.fpcomplete.com/user/edwardk/recursion-schemes/catamorphisms - ## Lenses and Prisms People vastly overestimate the difficulty of using Lens. Anybody comfortable with Functor/Foldable/Traversable (or even just the first one) can leverage lenses and prisms to make their life happier. @@ -318,6 +308,22 @@ From: - https://vimeo.com/73648150 +## Recursion Schemes + +Some of the crazy *-morphism words you've heard are actually about recursion. NB - before tackling this material you should know how to implement foldr for lists and at least one other data structure, such as a tree. (folds are catamorphisms) Knowing how to implement an unfold (anamorphism) for the same will round things out a bit. + +This material dovetails with traversable and foldable. + +- http://patrickthomson.ghost.io/an-introduction-to-recursion-schemes/ + +- http://fho.f12n.de/posts/2014-05-07-dont-fear-the-cat.html - good demonstration of how hylomorphism is the composition of cata and ana. + +- http://comonad.com/reader/2009/recursion-schemes/ - this field guide is excellent. + +- http://eprints.eemcs.utwente.nl/7281/01/db-utwente-40501F46.pdf + +- https://www.fpcomplete.com/user/edwardk/recursion-schemes/catamorphisms + ## Type and Category Theory (*not* needed to actually write Haskell, just for those interested!) If you want to follow up on the type and category theory: @@ -386,7 +392,7 @@ Didn't know where else to put these: ## GHC Core and performance tuning -- [Write Haskell as Fast as C](write_haskell_as_fast_as.md) +- [Write Haskell as Fast as C](write_haskell_as_fast_as_c.md) - https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/CoreSynType