Personal tools

Blog articles

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Functional programming)
 
(32 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Many areas of Haskell have been explored in the form of blog posts. This page
+
Many areas of Haskell have been explored in the form of blog posts. This
collects the best of those articles from across the web.
+
page collects the best of those articles from across the web. Due to the
  +
vast amount of material, this page is divided into sub-categories:
   
=== Introductions to Haskell ===
+
New material is posted to the [http://www.reddit.com/r/haskell/ Haskell Reddit]
  +
  +
== Introductory material ==
   
 
* [[/Introductions|Introductions to Haskell]]
 
* [[/Introductions|Introductions to Haskell]]
  +
* [[/Comparisons|Comparing Haskell to other languages]]
  +
* [[/Functional_programming|Functional programming in general]]
  +
* [[/Exercises|Small programming exercises]]
   
=== Comparisons to other languages ===
+
== Specific topics ==
 
* [[/Comparisons|Comparisons to other languages]]
 
 
=== Functional programming ===
 
 
* [[/Functional_programming|Articles about functional programming in general]]
 
 
=== Programming exercises ===
 
 
* [http://alangloria.blogspot.com/2006/11/okay.html Diff in Haskell]
 
* [http://blog.moertel.com/articles/2006/10/31/introductory-haskell-solving-the-sorting-it-out-kata Introductory Haskell: Solving the Sorting-It-Out Kata]
 
* [http://jcreigh.blogspot.com/2006/11/simple-rpn-calculator-in-haskell.html A Simple RPN Calculator in Haskell]
 
* [http://kenta.blogspot.com/2006/11/eratosthenes-sieve.html Eratosthenes sieve]
 
* [http://mult.ifario.us/articles/2006/10/25/solitaire-cipher-in-haskell Software Cipher]
 
* [http://mult.ifario.us/articles/2006/12/18/secret-santas-in-haskell-i-preliminaries Secret Santas in Haskell I: Preliminaries]
 
* [http://mult.ifario.us/articles/2006/12/18/secret-santas-in-haskell-ii-orbits-and-lists Secret Santas in Haskell II: Orbits and Lists]
 
* [http://mult.ifario.us/articles/2006/12/22/secret-santas-in-haskell-iii-collect-reap-repeat Secret Santas in Haskell III: Lather, Rinse, Repeat 1]
 
* [http://praisecurseandrecurse.blogspot.com/2006/12/dot-matrix-printhead-haskell-toy.html The Dot-Matrix Printhead: a Haskell Toy]
 
* [http://praisecurseandrecurse.blogspot.com/2006/12/revised-dot-matrix-printhead.html The Revised Dot-Matrix Printhead]
 
* Run length encoding:
 
** [http://praisecurseandrecurse.blogspot.com/2007/03/haskell-for-short-attention-span-run.html part 1]
 
** [http://praisecurseandrecurse.blogspot.com/2007/03/haskell-for-short-attention-span-run_05.html part 2]
 
** [http://praisecurseandrecurse.blogspot.com/2007/03/haskell-for-short-attention-span-run_07.html part 3]
 
* [http://sancho-ex.livejournal.com/7056.html Overlap function in Haskell for rectangles]
 
* [http://sigfpe.blogspot.com/2006/12/tying-knots-generically.html Tying Knots Generically]
 
* [http://vandreev.wordpress.com/2006/12/24/quick-and-dirty-theorem-prover/ A quick and dirty theorem prover in Haskell]
 
* [http://www.joachim-breitner.de/blog/archives/161-Brainfuck-interpreter-in-Haskell.html Brainf*k interpreter in Haskell]
 
* [http://www.joachim-breitner.de/blog/archives/210-FourFours-in-Haskell.html FourFours in Haskell]
 
* [http://www.randomhacks.net/articles/2007/02/22/bayes-rule-and-drug-tests Using Bayesian filtering instead of 'if' in Haskell]
 
* [http://mackys.livejournal.com/424766.html Prime sieves in Haskell]
 
* Bowling in Haskell
 
** [http://www.xprogramming.com/xpmag/dbcHaskellBowling.htm Haskell Bowling]
 
** [http://www.randomhacks.net/articles/2007/04/28/bowling-in-haskell Bowling in Haskell Response]
 
* [http://www.serpentine.com/blog/2007/05/14/norvigs-spell-checker-and-idiomatic-haskell/ Norvig's spell checker and idiomatic Haskell]
 
 
==== Games ====
 
 
* [http://www.steffen-mazanek.de/blog/2007/02/haskell-chess.html Haskell chess]
 
* [http://jpmoresmau.blogspot.com/2006/11/my-first-haskell-adventure-game.html My first Haskell adventure game!]
 
* [http://www.joachim-breitner.de/blog/archives/152-Hangman-AI-in-haskell.html Hangman AI in Haskell]
 
* [http://www.joachim-breitner.de/blog/archives/139-Haskell-as-a-puzzle-Solver.html Haskell as a puzzle solver]
 
 
=== Laziness ===
 
 
* [http://blog.interlinked.org/tutorials/haskell_laziness.html Haskell laziness]
 
* [http://mult.ifario.us/articles/2007/01/25/laziness-and-fizzbuzz-in-haskell Laziness and fizzbuzz in Haskell]
 
* [http://community.livejournal.com/evan_tech/206250.html Lazy lists as iterators]
 
 
=== Records ===
 
 
* [http://bloggablea.wordpress.com/2007/04/24/haskell-records-considered-grungy/ Haskell records considered grungy]
 
 
=== IO ===
 
 
* [http://blogs.nubgames.com/code/?p=22 Haskell I/O for imperative programmers]
 
* Directory tree printing:
 
** [http://blog.moertel.com/articles/2007/02/22/a-simple-directory-tree-printer-in-haskell Part 1]
 
** [http://blog.moertel.com/articles/2007/03/07/directory-tree-printing-in-haskell-part-two-refactoring Part 2]
 
* [http://cod3po37ry.blogspot.com/2007/02/more-on-haskell-io-and-interact.html Introductory console IO in Haskell]
 
* [http://therning.org/magnus/archives/228 Listing files in Haskell]
 
* [http://therning.org/magnus/archives/249 Playing unsafe Haskell]
 
* [http://journal.conal.net/#%5B%5Bseparating%20IO%20from%20logic%20--%20example%5D%5D separating IO from logic -- example]
 
* Programming Haskell
 
** [http://cgi.cse.unsw.edu.au/~dons/blog/2006/12/16#programming-haskell-intro Programming Haskell: part 1]
 
** [http://www.cse.unsw.edu.au/~dons/blog/2006/12/17#programming-haskell-part-2 Programming Haskell: part 2]
 
** [http://cgi.cse.unsw.edu.au/~dons/blog/2006/12/18#ph-3 Programming Haskell: part 3]
 
* [http://notes-on-haskell.blogspot.com/2007/03/design-patterns-in-haskell-bracket.html Design Patterns in Haskell: bracket]
 
* [http://www.friendofthepigeon.co.uk/wordpress/?p=54 7 Rules for IO in Haskell]
 
* [http://therning.org/magnus/archives/223 File related hacking]
 
 
==== Command line arguments ====
 
 
* [http://leiffrenzel.de/papers/commandline-options-in-haskell.html Command line arguments in Haskell]
 
 
==== Unix ====
 
 
* [http://programming.reddit.com/goto?id=jgbf Simple Unix Tools in Elegant Haskell]
 
* [http://changelog.complete.org/posts/587-guid.html HSH: a Haskell scripting environment]
 
* [http://porg.es/blog/functional-programming-apl-and-unix-pipes Function composition and unix pipes]
 
* [http://cgi.cse.unsw.edu.au/~dons/blog/2007/03/06#programmable-semicolons Practical Haskell: shell scripting with error handling and privilege separation]
 
* [http://praisecurseandrecurse.blogspot.com/2007/04/haskell-for-short-attention-span-simple.html A simple file filter]
 
* [http://therning.org/magnus/archives/285 Signal handling]
 
 
=== Network ===
 
 
* [[/Network|Articles on networking with Haskell]]
 
 
=== Parallelism and Concurrency ===
 
 
* [http://radar.oreilly.com/archives/2007/01/threads_conside.html Threads Considered Harmful] (discusses [http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.html The Problem with Threads])
 
* STM and IO
 
** [http://mult.ifario.us/articles/2007/03/04/stm-and-io STM, IO, and a Simple Persistence Model]
 
** [http://mult.ifario.us/articles/2007/03/13/stm-and-io-redux STM and IO Redux]
 
* Synchronised threads:
 
** [http://sequence.complete.org/node/252 part1]
 
** [http://sequence.complete.org/node/253 part2]
 
* [http://mikeburrell.wordpress.com/2007/04/16/more-haskell-parallelism/ More Haskell parallelism]
 
 
=== Performance ===
 
 
* [http://www.randomhacks.net/articles/2007/01/22/high-performance-haskell High performance Haskell]
 
* [http://www.haskell.org/pipermail/haskell-cafe/2007-February/022315.html Reading GHC Core and tuning assembly output]
 
* [http://syntaxfree.wordpress.com/2007/05/04/lra/ Simple performance analysis]
 
 
=== Parsing ===
 
 
* [http://a-preponderance-of-pondering.blogspot.com/2006/12/parser-combinators.html Parser combinators]
 
* [http://gbacon.blogspot.com/2007/02/my-first-monadic-program.html Monadic parsing]
 
* [http://jpmoresmau.blogspot.com/2006/12/adventures-in-haskell-parsec-magic.html Adventures in Haskell: the Parsec magic weapon]
 
* [http://jpmoresmau.blogspot.com/2006/12/adventures-in-haskell-parsing-game.html Adventures in Haskell: parsing the game world]
 
* [http://mikeburrell.wordpress.com/2007/02/25/combinator-parsing/ Combinator parsing]
 
* [http://sequence.complete.org/node/231 Parser with Writer monad]
 
* [http://sequence.complete.org/node/259 Simple Parsec Example: HTMangL]
 
* [http://unenterprise.blogspot.com/2007/03/parsers-parsec-and-haskell.html Parsers, Parsec and Haskell]
 
* [http://www-etud.iro.umontreal.ca/~laurieti/parser.html Interesting parsers in Haskell]
 
* [http://www.knowing.net/PermaLink,guid,0cc63c2f-e167-406d-a00e-4f390e9494f6.aspx Explicit Typing, Trail Blazing, and Packrat Parsing]
 
* [http://www.serpentine.com/blog/2007/01/19/playing-fast-and-loose-with-parsec-for-parsing-in-haskell/ Playing fast and loose with Parsec for parsing in Haskell]
 
* [http://www.serpentine.com/blog/2007/01/31/parsing-a-simple-config-file-in-haskell/ Config file parsing]
 
* [http://notes-on-haskell.blogspot.com/2007/05/parsing-json.html Parsing JSON in Haskell]
 
* [http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html Write yourself a Scheme in 48 hours]
 
* [http://davblog48.blogspot.com/2007/05/parsec.html A beginner with Parsec]
 
 
=== Code generation ===
 
 
* Writing x86 code generators with Harpy:
 
** [http://augustss.blogspot.com/2007/06/playing-with-harpy-recently-there-was.html Generating x86 assembly]
 
** [http://augustss.blogspot.com/2007/06/simple-compiler-in-my-last-post-i.html Compiling a DSL to x86 assembly]
 
** [http://augustss.blogspot.com/2007/06/disassembly-harpy-package-also-contains.html Disassembling x86]
 
 
=== Monads ===
 
 
* [[/Monads|Articles about monads and comonads]]
 
 
=== Error handling and exceptions ===
 
 
* [http://edwinb.wordpress.com/2007/01/15/error-handling-in-haskell/ Error handling in Haskell]
 
* [http://praisecurseandrecurse.blogspot.com/2006/11/some-very-basic-haskell-and-thoughts-on.html Some Very Basic Haskell and Thoughts on Error Diagnosis]
 
* [http://www.randomhacks.net/articles/2007/03/10/haskell-8-ways-to-report-errors 8 ways to report errors in Haskell]
 
* [http://nominolo.blogspot.com/2007/05/towards-better-error-handling.html Towards Better Error Handling]
 
 
=== Types ===
 
 
* [http://blog.moertel.com/articles/2006/10/18/a-type-based-solution-to-the-strings-problem A type-based solution to the 'strings problem']
 
* [http://babel.ls.fi.upm.es/~pablo/Papers/Notes/GADTs.html Generalised Algebraic Data Types, Phantom Types, and Dependent Types]
 
* [http://scienceblogs.com/goodmath/2006/12/functions_types_function_types_1.php Functions, Types, Function Types, and Type Inference]
 
* [http://scienceblogs.com/goodmath/2006/12/building_datatypes_in_haskell_1.php Building Datatypes in Haskell (part 1)]
 
* [http://cucumariid.livejournal.com/36757.html Rank-2 polymorphism is a strange thing]
 
* [http://liftm.wordpress.com/2007/06/03/scientificdimension-type-arithmetic-and-physical-units-in-haskell/ Scientific.Dimension: Type Arithmetic and Physical Units in Haskell]
 
 
==== Type classes ====
 
 
* [http://babel.ls.fi.upm.es/~pablo/Papers/Notes/typeClassOvld.html Type Classes: Not Quite Overloading"]
 
* [http://scienceblogs.com/goodmath/2007/01/haskell_the_basics_of_type_cla_1.php Haskell: the Basics of Type Classes]
 
 
=== Data structures ===
 
 
* [http://www.randomhacks.net/articles/2007/02/08/haskell-queues-without-pointers Queues without pointers]
 
* [http://scienceblogs.com/goodmath/2006/12/a_tree_grows_up_in_haskell_bui_1.php A Tree Grows Up in Haskell: Building a Dictionary Type]
 
* [http://progexpr.blogspot.com/2006/11/haskell-stacks-two-different-ways.html Haskell Stacks : Two Different Ways]
 
* [http://syntaxfree.wordpress.com/2007/02/11/finally-some-hacking-of-my-own-a-counter-datatype/ A counter datatype with constant-time update]
 
* [http://www.randomhacks.net/articles/2007/02/10/map-fusion-and-haskell-performance Map fusion: Making Haskell 225% faster]
 
* [http://cgi.cse.unsw.edu.au/~dons/blog/2007/05/17#xmonad_part1b_zipper Roll Your Own Window Manager: Tracking Focus with a Zipper]
 
 
====Strings====
 
 
* [http://gimbo.org.uk/blog/2007/04/20/splitting-a-string-in-haskell/ Splitting a string in Haskell]
 
 
=== Algorithms and techniques ===
 
 
* [http://twan.home.fmf.nl/blog/haskell/Knuth-Morris-Pratt-in-Haskell.details Knuth-Morris-Pratt in Haskell]
 
* [http://illicittech.blogspot.com/2007/06/travelling-salesman-problem.html Travelling Salesman Problem: Introduction (in Haskell)]
 
 
====Folds====
 
 
* [http://www.acooke.org/andrew/writing/folds.html Second order folds]
 
* [http://mikeburrell.wordpress.com/2007/02/01/functional-idempotence-optimization/ Folds and functional programming]
 
* [http://cale.yi.org/index.php/Fold_Diagrams Fold diagrams]
 
 
====Dynamic programming====
 
 
* [http://sequence.complete.org/node/263 Dynamic Programming in Haskell]
 
 
====Mutable data====
 
 
* [http://neilbartlett.name/blog/2007/04/11/haskell-an-imperative-language-with-mutable-state/ Haskell: an Imperative Language with Mutable State]
 
 
====Sections and Currying====
 
 
* [http://www.movethemarkets.com/richard/2007/04/28/functional-programming-idiom-plan-for-currying/ Currying]
 
* [http://gimbo.org.uk/blog/2007/04/13/playing-with-sections-in-haskell/ Playing with sections in Haskell]
 
 
=== GUIs ===
 
 
* [http://j-van-thiel.speedlinq.nl/EddyAhmed/GladeGtk2Hs.html Developing Gnome Apps with Glade]
 
* [http://www.ventonegro.org/?p=95 Haskell in the real, mundane world]
 
* [http://araujoluis.blogspot.com/2007/04/haskell-gui-programing.html Haskell GUI Programing]
 
 
=== Databases ===
 
 
* [http://davblog48.blogspot.com/2007/05/trying-to-learn-haskell-database.html Learning Haskell databases]
 
 
=== Graphics ===
 
 
* [http://www.alpheccar.org/en/posts/show/69 IFS In Haskell]
 
* [http://playtechs.blogspot.com/2007/04/raytracing-on-grid-in-haskell.html Raytracing on a grid in Haskell]
 
* [http://scsibug.com/2007/04/21/mandelbrot-hs/ Fractals with Haskell-GD]
 
 
=== Web and XML ===
 
 
* [[/Web|Articles on HTML and XML]]
 
 
=== Maths ===
 
 
* [[/Mathematics|Articles on mathematics and Haskell]]
 
 
=== Testing, correctness and proofs ===
 
 
* [http://haskell.org/haskellwiki/Introduction_to_QuickCheck Introduction to QuickCheck]
 
* [http://cgi.cse.unsw.edu.au/~dons/blog/2007/05/01#xmonad_part1_model QuickChecking a window manager]
 
* [http://blogs.teamb.com/craigstuntz/archive/2006/12/08/UnitTestingAndTypeSafety.aspx On Unit Testing and Type Safety]
 
* [http://abstractabsurd.blogspot.com/2007/02/sussman-robustness-quickcheck.html Robustness and QuickCheck]
 
* [http://neilmitchell.blogspot.com/2007/05/does-xmonad-crash.html Does XMonad crash? On proving pattern coverage with Catch]
 
* [http://neilmitchell.blogspot.com/2007/05/preconditions-on-xmonad.html Preconditions on XMonad]
 
 
=== Regular expressions ===
 
 
* [http://www.serpentine.com/blog/2007/02/27/a-haskell-regular-expression-tutorial/ A regular expression tutorial]
 
* [http://haskell.org/haskellwiki/Regular_expressions Using the new regex packages]
 
* [http://michaelspeer.blogspot.com/2007/05/initial-code-at-regular-expressions-in.html Regular expressions in Haskell]
 
 
=== The foreign function interface ===
 
 
* [http://blog.acolyte.co.za/articles/2007/01/01/simple-demonstration-of-haskell-ffi Simple demonstration of Haskell FFI]
 
* [http://therning.org/magnus/archives/238 C and Haskell sitting in a tree]
 
* [http://therning.org/magnus/archives/280 Haskell and C: functions returning more than one value]
 
 
=== Tips and tricks ===
 
 
* [http://www.joachim-breitner.de/blog/archives/156-Haskell-on-the-Command-Line.html Using Haskell from the command line]
 
   
=== Cabal and libraries ===
+
* [[/Algorithms|Algorithms and techniques]]
  +
* [[/Data|Data and control structures]]
  +
* [[/Databases|Databases in Haskell]]
  +
* [[/Errors|Error handling and exceptions]]
  +
* [[/GUIs|GUIs in Haskell]]
  +
* [[/Graphics|Graphics]]
  +
* [[/Web|HTML and XML and the Web]]
  +
* [[/Hardware|Hardware and robots]]
  +
* [[/Language|Haskell language features]]
  +
* [[/Performance|High performance Haskell]]
  +
* [[/IO|IO in Haskell]]
  +
* [[/FFI|The FFI: interfaces to other languages]]
  +
* [[/Libraries|Libraries and packages]]
  +
* [[/Mathematics|Mathematics and Haskell]]
  +
* [[/Monads|Monads, Comonads, Arrows]]
  +
* [[/Network|Networking]]
  +
* [[/Parallel|Parallel and concurrent programming]]
  +
* [[/Parsing|Parsing, regular expressions]]
  +
* [[/EDSLs|Domain specific languages and code generation]]
  +
* [[/Types|Programming with types]]
  +
* [[/Testing|Testing, correctness and proofs]]
   
* [http://www.serpentine.com/blog/2007/02/20/haskell-cabal-now-with-extra-crunchy-rpm-goodness/ Cabal and rpms]
+
== Further reading ==
* [http://www.serpentine.com/blog/2007/01/05/getting-started-with-installing-third-party-haskell-packages/ Getting started with installing third-party Haskell packages]
 
* [http://www.cse.unsw.edu.au/~dons/blog/2006/12/11#release-a-library-today The lambda revolution: how you can help]
 
* [http://pupeno.com/blog/the-lambda-revolution-episode-v-the-deb-strikes-back The lambda revolution, Episode V, the deb strikes back]
 
* [http://sambangu.blogspot.com/2006/12/questions-on-haskell-style-and Questions on Haskell Style (and Polynomials redux)]
 
* [http://gimbo.org.uk/blog/2007/04/27/haskell-packages-gotcha-global-vs-per-user-package-databases/ Using the Haskell package system]
 
* [http://www.brandonwerner.com/2007/06/10/how-to-install-haskell-haddock-on-mac-os-x/ How To Install Haskell Haddock on Mac OS X]
 
   
=== Robots and Hardware ===
+
Further material on these topics is available in [http://en.wikibooks.org/wiki/Haskell The Haskell Wikibook]
   
* [http://iguanarama.com/blog/?p=8 Haskell and HDL's]
+
For libraries divided into similar topics, see:
* [http://sigfpe.blogspot.com/2007/05/haskell-incarnate.html Haskell incarnate: robots and Haskell]
 
   
=== Neural networks ===
+
* [http://hackage.haskell.org/packages/archive/pkg-list.html the Hackage database]
  +
* [http://haskell.org/haskellwiki/Applications_and_libraries Other libraries and tools]
   
* [http://jpmoresmau.blogspot.com/2007/06/very-dumb-neural-network-in-haskell.html A neural network in Haskell]
+
For in-depth research into these topics:
   
  +
* [http://haskell.org/haskellwiki/Research_papers Research paper database]
  +
 
[[Category:Tutorials]]
 
[[Category:Tutorials]]

Latest revision as of 19:35, 23 November 2008

Many areas of Haskell have been explored in the form of blog posts. This page collects the best of those articles from across the web. Due to the vast amount of material, this page is divided into sub-categories:

New material is posted to the Haskell Reddit

[edit] 1 Introductory material

[edit] 2 Specific topics

[edit] 3 Further reading

Further material on these topics is available in The Haskell Wikibook

For libraries divided into similar topics, see:

For in-depth research into these topics: