Difference between revisions of "Blog articles"
From HaskellWiki
DonStewart (talk | contribs) (→Network) |
DonStewart (talk | contribs) (→Monads) |
||
Line 150: | Line 150: | ||
=== Monads === |
=== Monads === |
||
− | * [http://cale.yi.org/index.php/The_Monad_Laws The monad laws] |
||
+ | * [[/Monads|Articles about monads and comonads]] |
||
− | * [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 === |
=== Error handling and exceptions === |
Revision as of 04:39, 28 June 2007
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.
Contents
- 1 Introductions to Haskell
- 2 Comparisons to other languages
- 3 Functional programming
- 4 Programming exercises
- 5 Laziness
- 6 Records
- 7 IO
- 8 Network
- 9 Parallelism and Concurrency
- 10 Performance
- 11 Parsing
- 12 Code generation
- 13 Monads
- 14 Error handling and exceptions
- 15 Types
- 16 Data structures
- 17 Algorithms and techniques
- 18 GUIs
- 19 Databases
- 20 Graphics
- 21 Web and XML
- 22 Maths
- 23 Testing, correctness and proofs
- 24 Regular expressions
- 25 The foreign function interface
- 26 Tips and tricks
- 27 Cabal and libraries
- 28 Robots and Hardware
- 29 Neural networks
Introductions to Haskell
Comparisons to other languages
Functional programming
- A fold-like procedure in C
- What's wrong with for loops
- More on what's wrong with for loops
- Liberating Myself from the von Neumann Style
- Programming Productivity and Programming Languages
- Haskell - A valuable language
- On Functional Programming
- Functional programming is a silver bullet
- Silver Bullets Incoming!
- Computers were invented to keep track of boring things
- Functional programming for the rest of us
- Zen and the Art of Functional Programming
- Thinking in types
Programming exercises
- Diff in Haskell
- Introductory Haskell: Solving the Sorting-It-Out Kata
- A Simple RPN Calculator in Haskell
- Eratosthenes sieve
- Software Cipher
- Secret Santas in Haskell I: Preliminaries
- Secret Santas in Haskell II: Orbits and Lists
- Secret Santas in Haskell III: Lather, Rinse, Repeat 1
- The Dot-Matrix Printhead: a Haskell Toy
- The Revised Dot-Matrix Printhead
- Run length encoding:
- Overlap function in Haskell for rectangles
- Tying Knots Generically
- A quick and dirty theorem prover in Haskell
- Brainf*k interpreter in Haskell
- FourFours in Haskell
- Using Bayesian filtering instead of 'if' in Haskell
- Prime sieves in Haskell
- Bowling in Haskell
- Norvig's spell checker and idiomatic Haskell
Games
Laziness
Records
IO
- Haskell I/O for imperative programmers
- Directory tree printing:
- Introductory console IO in Haskell
- Listing files in Haskell
- Playing unsafe Haskell
- separating IO from logic -- example
- Programming Haskell
- Design Patterns in Haskell: bracket
- 7 Rules for IO in Haskell
- File related hacking
Command line arguments
Unix
- Simple Unix Tools in Elegant Haskell
- HSH: a Haskell scripting environment
- Function composition and unix pipes
- Practical Haskell: shell scripting with error handling and privilege separation
- A simple file filter
- Signal handling
Network
Parallelism and Concurrency
- Threads Considered Harmful (discusses The Problem with Threads)
- STM and IO
- Synchronised threads:
- More Haskell parallelism
Performance
Parsing
- Parser combinators
- Monadic parsing
- Adventures in Haskell: the Parsec magic weapon
- Adventures in Haskell: parsing the game world
- Combinator parsing
- Parser with Writer monad
- Simple Parsec Example: HTMangL
- Parsers, Parsec and Haskell
- Interesting parsers in Haskell
- Explicit Typing, Trail Blazing, and Packrat Parsing
- Playing fast and loose with Parsec for parsing in Haskell
- Config file parsing
- Parsing JSON in Haskell
- Write yourself a Scheme in 48 hours
- A beginner with Parsec
Code generation
- Writing x86 code generators with Harpy:
Monads
Error handling and exceptions
- Error handling in Haskell
- Some Very Basic Haskell and Thoughts on Error Diagnosis
- 8 ways to report errors in Haskell
- Towards Better Error Handling
Types
- A type-based solution to the 'strings problem'
- Generalised Algebraic Data Types, Phantom Types, and Dependent Types
- Functions, Types, Function Types, and Type Inference
- Building Datatypes in Haskell (part 1)
- Rank-2 polymorphism is a strange thing
- Scientific.Dimension: Type Arithmetic and Physical Units in Haskell
Type classes
Data structures
- Queues without pointers
- A Tree Grows Up in Haskell: Building a Dictionary Type
- Haskell Stacks : Two Different Ways
- A counter datatype with constant-time update
- Map fusion: Making Haskell 225% faster
- Roll Your Own Window Manager: Tracking Focus with a Zipper
Strings
Algorithms and techniques
Folds
Dynamic programming
Mutable data
Sections and Currying
GUIs
Databases
Graphics
Web and XML
Maths
Testing, correctness and proofs
- Introduction to QuickCheck
- QuickChecking a window manager
- On Unit Testing and Type Safety
- Robustness and QuickCheck
- Does XMonad crash? On proving pattern coverage with Catch
- Preconditions on XMonad
Regular expressions
The foreign function interface
- Simple demonstration of Haskell FFI
- C and Haskell sitting in a tree
- Haskell and C: functions returning more than one value
Tips and tricks
Cabal and libraries
- Cabal and rpms
- Getting started with installing third-party Haskell packages
- The lambda revolution: how you can help
- The lambda revolution, Episode V, the deb strikes back
- Questions on Haskell Style (and Polynomials redux)
- Using the Haskell package system
- How To Install Haskell Haddock on Mac OS X