Personal tools

Blog articles

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(expand title of nominolo's "Network.HTTP + ByteStrings" article)
 
(48 intermediate revisions by 6 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]
   
* [http://www.onlamp.com/pub/a/onlamp/2007/05/21/an-introduction-to-haskell---part-1-why-haskell.html ONLamp: An Introduction to Haskell]
+
== Introductory material ==
* [http://www.alpheccar.org/en/posts/show/67 Haskell Study Plan]
 
* [http://programming.reddit.com/goto?id=uzuc On Haskell, Intuition And Expressive Power]
 
* [http://programming.reddit.com/goto?id=15bx1 Haskell: Raising the bar]
 
* [http://printf.wordpress.com/2007/02/27/haskell-functional-programming-language/ Learning the Haskell programming language]
 
* [http://osfameron.vox.com/library/post/on-learning-haskell.html On learning Haskell]
 
* [http://onthebalcony.wordpress.com/2007/02/19/my-evolution-as-a-haskell-programmer/ My evolution as a Haskell programmer]
 
* [http://qftblog.wordpress.com/2007/02/14/why-its-so-hard-for-imperative-programmers-to-learn-funtional-languages/ Why its hard for imperative programmers to learn Haskell]
 
* [http://johnleesmiller.blogspot.com/2007/02/first-post.html Flirting with Functional Programming]
 
* [http://toomuchcode.blogspot.com/2007/02/building-firewall-against-complexity.html Building a Firewall Against Complexity]
 
* [http://syntaxfree.wordpress.com/2007/01/08/haskell-bondage-and-discipline-and-separation-of-concerns-programming/ Haskell, bondage-and-discipline and separation-of-concerns programming]
 
* [http://programming.reddit.com/info/xbc7/comments/cxfs0 Type systems as safety belts]
 
* [http://blog.interlinked.org/tutorials/haskell_introduction.html Haskell introduction for beginners]
 
* [http://blog.interlinked.org/tutorials/haskell_2.html Haskell Basics]
 
* [http://scienceblogs.com/goodmath/2006/11/haskell_preliminaries_implemen.php Haskell Preliminaries: Implementations and Tools]
 
* [http://scienceblogs.com/goodmath/2006/11/simple_functions_in_haskell_1.php Simple Functions in Haskell]
 
* [http://metacircular.wordpress.com/2007/03/05/a-haskell-study-plan/ A Haskell study plan]
 
* [http://antoniocangiano.com/articles/2007/03/13/haskell-eye-for-the-ruby-guy Haskell Eye for the Ruby Guy]
 
   
==== First impressions ====
+
* [[/Introductions|Introductions to Haskell]]
  +
* [[/Comparisons|Comparing Haskell to other languages]]
  +
* [[/Functional_programming|Functional programming in general]]
  +
* [[/Exercises|Small programming exercises]]
   
* [http://blogs.nubgames.com/code/?p=15 Haskell First Impressions]
+
== Specific topics ==
* [http://blogs.nubgames.com/code/?p=17 One month in Haskell]
 
* [http://kevin.scaldeferri.com/blog/2007/02/12/OneWeek.html Thoughts on one week in Haskell]
 
* [http://clemens.endorphin.org/weblog/archives/2006-06.shtml#e2006-06-23T09_16_52.txt The beauty of Haskell]
 
* [http://gimbo.org.uk/blog/2007/03/08/the_mapm_and_haskell_irc_post/ Monad wrangling, and the joy of #haskell]
 
* [http://ashish.typepad.com/ashishs_niti/2007/03/learning_haskel.html Learning Haskell]
 
* [http://www.noulakaz.net/weblog/2007/04/20/i-like-haskell-a-lot/ I like Haskell a lot]
 
   
=== Comparisons to other languages ===
+
* [[/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]]
   
==== Ruby ====
+
== Further reading ==
   
* [http://notes-on-haskell.blogspot.com/2007/01/ruby-vs-haskell-choose-what-works.html Ruby vs Haskell: choose what works]
+
Further material on these topics is available in [http://en.wikibooks.org/wiki/Haskell The Haskell Wikibook]
* [http://notes-on-haskell.blogspot.com/2007/01/haskell-open-secret.html Haskell: open secret in Ruby land]
 
* [http://antoniocangiano.com/articles/2007/03/13/haskell-eye-for-the-ruby-guy Haskell Eye for the Ruby Guy]
 
* Monads in Ruby
 
** [http://meta-meta.blogspot.com/2006/12/monads-in-ruby-part-1-identity.html Part 1: Identity]
 
** [http://meta-meta.blogspot.com/2006/12/monads-in-ruby-part-15-identity.html Part 1.5: Identity]
 
* [http://rushcheck.rubyforge.org/ RushCheck, a lightweight random testing tool for Ruby similar to QuickCheck]
 
* [http://praisecurseandrecurse.blogspot.com/2007/03/haskell-for-short-attention-span-run.html part 1]
 
* [http://onthebalcony.wordpress.com/2007/03/10/ruby-and-elegance-transpose/ zip and transpose]
 
* [http://etorreborre.blogspot.com/2007/04/pattern-matching-with-ruby.html Pattern matching in Ruby]
 
   
==== Erlang ====
+
For libraries divided into similar topics, see:
   
* [http://www.acooke.org/cute/ErlangsSyn0.html Small comparison of Erlang's syntactic difficulties]
+
* [http://hackage.haskell.org/packages/archive/pkg-list.html the Hackage database]
  +
* [http://haskell.org/haskellwiki/Applications_and_libraries Other libraries and tools]
   
==== Ada ====
+
For in-depth research into these topics:
 
* [http://neilmitchell.blogspot.com/2007/03/describing-haskell-to-ada-programmer.html Describing Haskell to an Ada programmer]
 
 
==== Java ====
 
 
* [http://blogs.msdn.com/ralflammel/archive/2006/12/21/more-haskell-in-java-7-or-8.aspx More Haskell in Java 7 or 8?]
 
* [http://syntaxfree.wordpress.com/2006/12/23/et-tu-brute/ Type classes in Java]
 
* [http://www.javac.info/closures-v03.html Closures and bottom for Java]
 
* [http://jpmoresmau.blogspot.com/2006/12/in-haskell-you-can-define-infinite.html An infinite list in Java]
 
* [http://blog.tmorris.net/maybe-monad-in-java/ Maybe monad in Java]
 
 
==== Perl 6 ====
 
 
* [http://diveintoperl6.blogspot.com/2007/05/perl-6-round-1_22.html Perl 6]
 
 
==== Eiffel ====
 
 
* [http://teameiffel.blogspot.com/2006/11/type-system-of-ecma-eiffel.html The type system of ECMA Eiffel (modelled in Haskell)]
 
 
==== Javascript ====
 
 
* [http://satta.org/2007/01/08/foldr-and-foldl-in-javascript/ foldr and foldl in JavaScript]
 
 
==== C ====
 
 
* [http://jaortega.wordpress.com/2007/01/29/the-functional-c-programmer/ The functional C programmer]
 
 
==== C# ====
 
 
* [http://www.developer.com/net/csharp/article.php/3598381 The New Lambda Expressions Feature in C# 3.0]
 
* [http://blogs.msdn.com/wesdyer/archive/2007/03/01/immutability-purity-and-referential-transparency.aspx Immutability, Purity, and Referential Transparency in C#]
 
* [http://themechanicalbride.blogspot.com/2007/04/haskell-for-c-3-programmers.html Haskell for C# 3 Programmers]
 
* [http://lukeplant.me.uk/blog.php?id=1107301659 Null pointers vs None vs Maybe]
 
 
==== Scala ====
 
 
* [http://blog.tmorris.net/ignorance-is-mostly-bliss-but-not-always/ Haskell, CAL and Scala]
 
* [http://blog.tmorris.net/the-power-of-type-classes-with-scala-implicit-defs Type classes]
 
 
==== CAL ====
 
 
* [http://jpmoresmau.blogspot.com/2007/04/haskell-code-java-ui.html Haskell code/Java UI]
 
 
==== Python ====
 
 
* [http://wiki.python.org/moin/PythonVsHaskell Haskell versus Python]
 
* [http://www.kuarepoti-dju.net/index.php?p=86 Using Haskell in Python: haskellembed]
 
* [http://lukeplant.me.uk/blog.php?id=1107301643 Understanding Monads Via Python List Comprehensions]
 
 
==== Scheme ====
 
 
* [http://programming.reddit.com/goto?id=nq1k Haskell versus Scheme]
 
 
==== Forth ====
 
 
* [http://shaurz.wordpress.com/2007/03/03/forth-as-a-haskell-dsl-or-lambda-the-ultimate-stack/ Forth as a Haskell DSL]
 
 
==== Factor ====
 
 
* [http://www.bluishcoder.co.nz/2006/10/factor-parser-combinator-example.html Haskell-style parser combinators in Factor: s-expression reader]
 
 
==== Lisp ====
 
 
* [http://www.defmacro.org/ramblings/lisp-in-haskell.html Writing lisp in Haskell]
 
* [http://common-lisp.net/project/patty/patty.html Haskell like data structures in Common Lisp]
 
 
==== Lua ====
 
 
* [http://salimma.livejournal.com/72850.html Lazy streams for Lua]
 
 
==== Qi ====
 
 
* [http://programmingkungfuqi.blogspot.com/2007/05/foldl-and-foldr.html Foldl and Foldr]
 
* [http://programmingkungfuqi.blogspot.com/2007/05/sk-combinator-in-qi-type-system.html SKI in Qi's type system]
 
 
=== Functional programming ===
 
 
* [http://www.yomi.at/archive/2007/02/115 A fold-like procedure in C]
 
* [http://notes-on-haskell.blogspot.com/2007/02/whats-wrong-with-for-loop.html What's wrong with for loops]
 
* [http://notes-on-haskell.blogspot.com/2007/02/whats-wrong-with-for-loop-revisited.html More on what's wrong with for loops]
 
* [http://blogs.nubgames.com/code/?p=4 Liberating Myself from the von Neumann Style]
 
* [http://josefsblog.blogspot.com/2007/01/programming-productivity-and.html Programming Productivity and Programming Languages]
 
* [http://channel9.msdn.com/ShowPost.aspx?PostID=261386#261386 Haskell - A valuable language]
 
* [http://www.pbell.com/index.cfm/2006/11/26/On-Functional-Programming On Functional Programming]
 
* [http://cogito.blogthing.com/2006/12/06/no-silver-bullet-and-functional-programming/ Functional programming is a silver bullet]
 
* [http://cogito.blogthing.com/2006/12/08/silverbulletsincoming/ Silver Bullets Incoming!]
 
* [http://dynamic.ropine.com/yesh/article/computers-were-invented-to-keep-track-of-boring-things Computers were invented to keep track of boring things]
 
* [http://www.defmacro.org/ramblings/fp.html Functional programming for the rest of us]
 
* [http://azaidi.blogspot.com/2007/04/zen-and-art-of-functional-programming.html Zen and the Art of Functional Programming]
 
* [http://totherme.livejournal.com/3845.html Thinking in types]
 
 
=== 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 ===
 
 
==== HTTP ====
 
 
* [http://nominolo.blogspot.com/2007/05/networkhttp-bytestrings.html Network.HTTP + ByteStrings]
 
* [http://www.alpheccar.org/en/posts/show/73 Haskell: Preventing irreversible updates from HTTP GET with types]
 
 
==== TCP ====
 
 
* [http://sequence.complete.org/node/258 Simple STM TCP server]
 
* [http://stephan.walter.name/blog/computers/programming/haskell/interacttcp.html Haskell's 'interact' with TCP sockets]
 
* [http://greek-lord.gr/WordPress/?p=10 Port Scanner in Haskell]
 
* Simple socket programming:
 
** [http://metavar.blogspot.com/2007/03/simple-socket-programming.html Part 1]
 
** [http://metavar.blogspot.com/2007/03/simple-socket-programming-2-revenge-of.html Part 2]
 
* [http://austin.youareinferior.net/?q=node/24 On haskell: writing a packet sniffer]
 
* [http://abstractabsurd.blogspot.com/2007/05/couple-of-silly-examples.html A simple echo server]
 
 
==== IRC ====
 
 
* [http://blog.nurd.se/hype/?p=30 An IRC client/server in Haskell]
 
* [http://haskell.org/haskellwiki/Roll_your_own_IRC_bot Roll your own Haskell IRC bot]
 
 
=== Parallelism and Concurrency ===
 
 
* [http://radar.oreilly.com/archives/2007/01/threads_conside.html 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]
 
 
=== Monads ===
 
 
* [http://cale.yi.org/index.php/The_Monad_Laws The monad laws]
 
* [http://sigfpe.blogspot.com/2007/04/trivial-monad.html The Trivial Monad]
 
* [http://sigfpe.blogspot.com/2007/04/homeland-security-threat-level-monad.html Tracking tainted data: Homeland Security Threat Level Monad]
 
* [http://sigfpe.blogspot.com/2006/10/monads-field-guide.html Monads: a field guide]
 
* [http://sigfpe.blogspot.com/2006/11/variable-substitution-gives.html Variable substitution gives a ... monad]
 
* [http://sigfpe.blogspot.com/2007/01/monads-hidden-behind-every-zipper.html The monad behind every zipper]
 
* [http://sigfpe.blogspot.com/2007/02/monads-for-vector-spaces-probability.html Monads for vector spaces, probability and quantum mechanics pt. I]
 
* [http://sigfpe.wordpress.com/2007/03/04/monads-vector-spaces-and-quantum-mechanics-pt-ii/ Monads, Vector Spaces and Quantum Mechanics pt. II]
 
* [http://sigfpe.blogspot.com/2007/06/how-to-write-tolerably-efficient.html How to write tolerably efficient optimzation code without really trying...]
 
* [http://cgi.cse.unsw.edu.au/~dons/blog/2006/12/11#interpreters-with-reader-monads Quick interpreters with the Reader monad]
 
* [http://hierodule.livejournal.com/69052.html Monads]
 
* [http://neilbartlett.name/blog/?p=13 More on Haskell, Side Effects and Code Reuse]
 
* [http://scienceblogs.com/goodmath/2007/01/haskell_a_first_step_into_mona_1.php A First Step Into Monads]
 
* [http://scienceblogs.com/goodmath/2007/01/more_monads_stateful_programmi_1.php More Monads: Stateful Programming]
 
* [http://scienceblogs.com/goodmath/2007/01/the_theory_of_monads_and_the_m_1.php The theory of monads]
 
* [http://www.alpheccar.org/en/posts/show/60 A newbie in Haskell land or another monad tutorial]
 
* [http://www.alpheccar.org/en/posts/show/61 A newbie in Haskell land : The (->) monad]
 
* [http://www.randomhacks.net/articles/2007/03/03/smart-classification-with-haskell Smart classification using Bayesian monads]
 
* [http://www.randomhacks.net/articles/2007/03/05/three-things-i-dont-understand-about-monads 3 open problems with monads]
 
* [http://www.randomhacks.net/articles/2007/03/12/monads-in-15-minutes Monads in 15 minutes: Backtracking and Maybe]
 
* [http://www.randomhacks.net/articles/2007/03/15/data-set-monad-haskell-macros How to make Data.Set a monad]
 
* [http://www.sdowney.org/2007/01/monads-rest-and-c-template.html Monads work because they have a tight interface]
 
* [http://www.serpentine.com/blog/2007/01/09/haskell-bootstrapping-into-a-clue-about-monads/ Haskell: bootstrapping into a clue about monads]
 
* [http://www.rfc1149.net/blog/2007/03/06/why-monads-matter/#more-110 Why monads matter]
 
* [http://www.bolour.com/papers/monads-through-pictures.html Monads through Pictures]
 
* [http://gelisam.blogspot.com/2006/10/monads-as-universe-helpers.html Monads as universe helpers]
 
* [http://therning.org/magnus/archives/215 Simple state monad]
 
* [http://therning.org/magnus/archives/269 repeat and sequence]
 
* [http://lukeplant.me.uk/blog.php?id=1107301659 What's a monad?]
 
 
==== Monad transformers ====
 
 
* [http://conway.rutgers.edu/~ccshan/wiki/blog/posts/Monad_transformers.html A twisted history of monad transformers]
 
* [http://cale.yi.org/index.php/How_To_Use_Monad_Transformers How To Use Monad Transformers]
 
* [http://sigfpe.blogspot.com/2006/09/local-and-global-side-effects-with.html Local and global side effects with monad transformers]
 
* [http://sigfpe.blogspot.com/2006/05/grok-haskell-monad-transformers.html Grok monad transformers]
 
* [http://scsibug.com/2006/11/28/a-simple-game-with-statet/ A Simple Game with StateT]
 
 
==== Arrows ====
 
 
* [http://kpreid.livejournal.com/7351.html Concatenative programming in Haskell's Arrows]
 
* [http://abstractabsurd.blogspot.com/2007/04/arrows-security.html Arrows and security]
 
 
==== Comonads ====
 
 
* [http://sigfpe.blogspot.com/2007/02/comonads-and-reading-from-future.html Comonads and reading from the future]
 
* [http://sigfpe.blogspot.com/2006/12/evaluating-cellular-automata-is.html Evaluating cellular automata is co-monadic]
 
* [http://gelisam.blogspot.com/2007/04/i-understand-comonads.html Understanding 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 ===
 
 
* [http://programming.reddit.com/goto?id=139vk Haskell and Web Applications]
 
* [http://programming.reddit.com/goto?id=12a6a Ruby and Haskell: write your Rails backend code in Haskell instead of C]
 
* Writing a Simple Search Engine in Haskell
 
** [http://blogs.nubgames.com/code/?p=18 Part 0 Introduction]
 
** [http://blogs.nubgames.com/code/?p=19 Part 1 Maybe and List]
 
* [http://haskell-web.blogspot.com/2006/12/some-ideas-in-progress_13.html Haskell and the web: some ideas in progress]
 
* [http://haskell-web.blogspot.com/2006/11/search-engine-written-in-haskell.html A search engine (core) written in Haskell]
 
* [http://haskell-web.blogspot.com/2006/11/transactional-cache-for-haskell.html Haskell Transactional Cache]
 
 
==== HTML ====
 
 
* [http://www.movethemarkets.com/richard/2007/04/14/use-of-textxhtmlstrict-for-outputting-xhtml/ Use of Text.XHtml.Strict for Outputting XHTML]
 
* [http://blog.kfish.org/2007/06/review-tagsoup.html Library review: TagSoup]
 
 
==== XML, Atom, RSS ====
 
 
* [http://mult.ifario.us/articles/2007/02/27/really-simple-atom-syndication Really simple Atom syndication]
 
* [http://cale.yi.org/index.php/HRSS A simple RSS aggregator in 50 lines of Haskell using HXT]
 
* [http://www.haskell.org/haskellwiki/HXT Using the Haskell XML Toolbox]
 
 
=== Maths ===
 
 
==== Haskell for mathematics ====
 
 
* [http://sigfpe.blogspot.com/2006/09/learn-maths-with-haskell.html Learn Maths with Haskell]
 
* [http://sigfpe.blogspot.com/2006/09/practical-synthetic-differential.html Practical Synthetic Differential Geometry]
 
* [http://sigfpe.blogspot.com/2006/09/more-low-cost-geometric-algebra.html More Low Cost Geometric Algebra]
 
* [http://sigfpe.blogspot.com/2006/08/algebraic-topology-in-haskell.html Algebraic Topology in Haskell]
 
* [http://sigfpe.blogspot.com/2006/09/infinitesimal-types.html Infinitesimal Types]
 
* [http://sigfpe.blogspot.com/2006/08/geometric-algebra-for-free_30.html Geometric Algebra for Free!]
 
* [http://sigfpe.blogspot.com/2006/01/eleven-reasons-to-use-haskell-as.html Eleven Reasons to use Haskell as a Mathematician]
 
* [http://sigfpe.blogspot.com/2006/06/laws-of-form-opinion.html Laws of Form: An Opinion]
 
* [http://blog.mikael.johanssons.org/archive/2006/11/a-algebras-and-group-cohomology/ A-algebras and group cohomology]
 
* [http://blog.mikael.johanssons.org/archive/2006/10/prototyping-thought/ Prototyping thought]
 
* [http://blog.mikael.johanssons.org/archive/2006/10/computational-group-theory-in-haskell-1-in-a-series/ Computational Group Theory in Haskell]
 
* [http://blog.mikael.johanssons.org/archive/2006/07/carry-bits-and-group-cohomology/ Carry bits and group cohomology]
 
* [http://www.quetzal.com/sambangu/2006/12/polynomials-as-numbers Polynomials as numbers]
 
* [http://vandreev.wordpress.com/2006/12/04/non-standard-analysis-and-automatic-differentiation/ Non-standard analysis, automatic differentiation, Haskell]
 
* [http://vandreev.wordpress.com/2007/06/18/feistel-ciphers-and-des-in-haskell/ Feistel Ciphers and DES in Haskell]
 
* [http://vandreev.wordpress.com/2007/01/07/arithmetic-coding/ Arithmetic coding in Haskell]
 
* [http://www.polyomino.f2s.com/ Haskell for Maths]: commutative algebra, combinatorics, number theory, and group theory
 
* [http://www.serpentine.com/blog/2007/01/11/two-dimensional-spatial-hashing-with-space-filling-curves/ Two-dimensional spatial hashing with space-filling curves]
 
* [http://japple.blogspot.com/2007/02/countable-ordinals-in-haskell.html Countable Ordinals in Haskell]
 
* [http://www.quetzal.com/sambangu/2006/12/polynomials-as-numbers Polynomials as numbers]
 
* The Division Bell
 
** [http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me.html Part One]
 
** [http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me-part-two.html Part Two]
 
** [http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me-part-three.html Part Three]
 
** [http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me-part-four.html Part Four (Conclusion)]
 
** [http://praisecurseandrecurse.blogspot.com/2006/12/divisive-aftermath.html The Divisive Aftermath]
 
* [http://www.alpheccar.org/en/posts/show/57 Haskell, PDF and penrose tilings]
 
* Overloading Haskell numbers
 
** [http://augustss.blogspot.com/2007/04/overloading-haskell-numbers-part-1.html Part 1: symbolic expressions]
 
** [http://augustss.blogspot.com/2007/04/overloading-haskell-numbers-part-2.html Part 2: Forward Automatic Differentiation]
 
** [http://augustss.blogspot.com/2007/04/overloading-haskell-numbers-part-3.html Part 3: Fixed Precision]
 
** [http://augustss.blogspot.com/2007/05/i-was-asked-if-my-fixed-number-module.html Dynamic epsilons in Haskell with a bit of type hackery]
 
 
==== Theorem proving ====
 
 
* [http://vandreev.wordpress.com/2006/12/24/quick-and-dirty-theorem-prover/ Quick and Dirty Theorem Prover]
 
 
==== Quantum computing ====
 
 
* [http://sigfpe.blogspot.com/2007/02/essence-of-quantum-computing.html The Essence of Quantum Computing]
 
* [http://sigfpe.blogspot.com/2007/02/monads-for-vector-spaces-probability.html Monads for vector spaces, probability and quantum mechanics pt. I]
 
* [http://sigfpe.blogspot.com/2007/03/monads-vector-spaces-and-quantum.html Monads, Vector Spaces and Quantum Mechanics pt. II]
 
* [http://sigfpe.blogspot.com/2007/03/independence-entanglement-and.html Independence, entanglement and decoherence with the quantum monad]
 
* [http://sigfpe.blogspot.com/2007/03/shor-quantum-error-correcting-code-and.html The Shor Quantum Error Correcting Code (and a Monad for Heat)]
 
* [http://www.alpheccar.org/en/posts/show/68 The Frame Of Reference Monad]
 
 
==== Mathematics of Haskell ====
 
 
* [http://sigfpe.blogspot.com/2006/11/why-isnt-listt-monad.html Why isn't ListT list a monad?]
 
* [http://sigfpe.blogspot.com/2006/11/yoneda-lemma.html Reverse Engineering Machines with the Yoneda Lemma]
 
* [http://sigfpe.blogspot.com/2006/11/variable-substitution-gives.html Variable substitution gives a...]
 
* [http://sigfpe.blogspot.com/2006/11/from-l-theorem-to-spreadsheet.html From Lb's Theorem to Spreadsheet Evaluation]
 
* [http://sigfpe.blogspot.com/2006/10/games-strategies-and-self-composition.html Games, Strategies and the Self-Composition of the List Monad.]
 
* [http://scienceblogs.com/goodmath/2006/09/programs_are_proofs_models_and_1.php Programs are Proofs: Models and Types in Lambda Calculus]
 
* [http://scienceblogs.com/goodmath/2006/11/why_haskell.php Why Haskell?]
 
* [http://www.onebadseed.com/blog/?p=51 Don't need the Y combinator]
 
* [http://www.rubrication.net/2007/04/21/how-a-real-module-system-should-work/ ML, Haskell and Coq]
 
* [http://www.alpheccar.org/en/posts/show/70 Djinn, Coq, Monad and a bit of Haskell]
 
* [http://www.alpheccar.org/en/posts/show/74 Category Theory and the category of Haskell programs]
 
 
=== 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 ===
 
 
* [http://www.serpentine.com/blog/2007/02/20/haskell-cabal-now-with-extra-crunchy-rpm-goodness/ Cabal and rpms]
 
* [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 ===
 
 
* [http://iguanarama.com/blog/?p=8 Haskell and HDL's]
 
* [http://sigfpe.blogspot.com/2007/05/haskell-incarnate.html Haskell incarnate: robots and Haskell]
 
 
=== Neural networks ===
 
 
* [http://jpmoresmau.blogspot.com/2007/06/very-dumb-neural-network-in-haskell.html A neural network in Haskell]
 
   
  +
* [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: