Blog articles
Revision as of 00:55, 11 March 2007 by DonStewart (talk | contribs) (→Error handling and exceptions)
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.
Introductions to Haskell
- Haskell Study Plan
- On Haskell, Intuition And Expressive Power
- Haskell: Raising the bar
- Learning the Haskell programming language
- On learning Haskell
- My evolution as a Haskell programmer
- Why its hard for imperative programmers to learn Haskell
- Flirting with Functional Programming
- Building a Firewall Against Complexity
- Haskell, bondage-and-discipline and separation-of-concerns programming
- Type systems as safety belts
- Haskell introduction for beginners
- Haskell Basics
- Haskell Preliminaries: Implementations and Tools
- Simple Functions in Haskell
- Reconsidering my approach to learning Haskell
- A Haskell study plan
First impressions
- Haskell First Impressions
- One month in Haskell
- Thoughts on one week in Haskell
- Haskell, first impressions (with sexy results)
- The beauty of Haskell
- Monad wrangling, and the joy of #haskell
Comparisons to other languages
Ruby
- Ruby vs Haskell: choose what works
- Haskell: open secret in Ruby land
- Monads in Ruby
- RushCheck, a lightweight random testing tool for Ruby similar to QuickCheck
- part 1
- zip and transpose
Ada
Java
- More Haskell in Java 7 or 8?
- Type classes in Java
- Closures and bottom for Java
- An infinite list in Java
- Maybe monad in Java
Eiffel
Javascript
C
C#
- The New Lambda Expressions Feature in C# 3.0
- Immutability, Purity, and Referential Transparency in C#
Scala
Python
- Haskell versus Python
- Using Haskell in Python: haskellembed
- Understanding Monads Via Python List Comprehensions
Scheme
Forth
Factor
Lisp
Lua
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
- What is so cool about Functional Programming?
Programming exercises
- Diff in Haskell
- Introductory Haskell: Solving the Sorting-It-Out Kata
- Fibonacci series one-liner in Haskell
- A Simple RPN Calculator in Haskell
- My first Haskell adventure game!
- 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
- Haskell as a puzzle solver
- Hangman AI in Haskell
- Brainf*k interpreter in Haskell
- FourFours in Haskell
- Using Bayesian filtering instead of 'if' in Haskell
- Haskell Bowling
- Prime sieves in Haskell
Laziness
IO
- Haskell I/O for imperative programmers
- Directory tree printing:
- Introductory console IO in Haskell
- Listing files in Haskell
- separating IO from logic -- example
- Programming Haskell
- Design Patterns in Haskell: bracket
Unix
- Simple Unix Tools in Elegant Haskell
- Introductory Haskell Programming in the UNIX Environment
- HSH: a Haskell scripting environment
- Function composition and unix pipes
- Practical Haskell: shell scripting with error handling and privilege separation
Network
- An IRC client/server in Haskell
- Simple STM TCP server
- Roll your own Haskell IRC bot
- Haskell's 'interact' with TCP sockets
- Simple socket programming:
Concurrency
- Threads
- STM, IO, and a Simple Persistence Model
- Synchronised threads:
Performance
Parsing
- Config file parsing
- Combinator parsing
- Interesting parsers in Haskell
- Parser with Writer monad
- Parser combinators
- Adventures in Haskell: parsing the game world
- Explicit Typing, Trail Blazing, and Packrat Parsing
- Monadic parsing
- Playing fast and loose with Parsec for parsing in Haskell
- Adventures in Haskell: the Parsec magic weapon
- Simple Parsec Example: HTMangL
Monads
- The monad laws
- Quick interpreters with the Reader monad
- Monads
- More on Haskell, Side Effects and Code Reuse
- A First Step Into Monads
- More Monads: Stateful Programming
- The theory of monads
- Monads: a field guide
- Variable substitution gives a ... monad
- The monad behind every zipper
- Monads for vector spaces, probability and quantum mechanics pt. I
- Monads, Vector Spaces and Quantum Mechanics pt. II
- A newbie in Haskell land or another monad tutorial
- A newbie in Haskell land : The (->) monad
- Smart classification using Bayesian monads
- 3 open problems with monads
- Monads work because they have a tight interface
- Haskell: bootstrapping into a clue about monads
- Why monads matter
- Monads through Pictures
Monad transformers
- A twisted history of monad transformers
- How To Use Monad Transformers
- Local and global side effects with monad transformers
- Grok monad transformers
- A Simple Game with StateT
Arrows
Comonads
Error handling and exceptions
- Error handling in Haskell
- Some Very Basic Haskell and Thoughts on Error Diagnosis
- 8 ways to report errors in Haskell
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
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
Algorithms and techniques
- Second order folds
- Folds and functional programming
- Fold diagrams
- foldr, foldl
- Dynamic Programming in Haskell
GUIs
Web and XML
- Haskell and Web Applications
- Ruby and Haskell: write your Rails backend code in Haskell instead of C
- Writing a Simple Search Engine in Haskell
- Haskell and the web: some ideas in progress
- A search engine (core) written in Haskell
- Haskell Transactional Cache
XML, Atom, RSS
- Really simple Atom syndication
- A simple RSS aggregator in 50 lines of Haskell using HXT
- Using the Haskell XML Toolbox
Maths
Haskell for mathematics
- Learn Maths with Haskell
- Practical Synthetic Differential Geometry
- More Low Cost Geometric Algebra
- Algebraic Topology in Haskell
- Infinitesimal Types
- Geometric Algebra for Free!
- Eleven Reasons to use Haskell as a Mathematician
- Laws of Form: An Opinion
- A-algebras and group cohomology
- Prototyping thought
- Computational Group Theory in Haskell
- Carry bits and group cohomology
- Polynomials as numbers
- Non-standard analysis, automatic differentiation, Haskell
- Haskell for Maths: commutative algebra, combinatorics, number theory, and group theory
- Two-dimensional spatial hashing with space-filling curves
- Arithmetic coding in Haskell
- Countable Ordinals in Haskell
- Polynomials as numbers
- The Division Bell
- Haskell, PDF and penrose tilings
Mathematics of Haskell
- Why isn't ListT list a monad?
- Reverse Engineering Machines with the Yoneda Lemma
- Variable substitution gives a...
- From Lb's Theorem to Spreadsheet Evaluation
- Games, Strategies and the Self-Composition of the List Monad.
- Programs are Proofs: Models and Types in Lambda Calculus
- Why Haskell?
- Don't need the Y combinator
Testing
- Introduction to QuickCheck
- On Unit Testing and Type Safety
- Testing ... testing
- Robustness and QuickCheck
Regular expressions
The foreign function interface
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)