19 Mar 2013
In the few years since Ruby Koans first came out, the approach has been mimicked in a wide variety of programming languages. Work on Haskell Koans was started in January 2012 by Román González and Tatsuhiro Ujihisa.
The premise is simple: A koan is a small snippet of almost-correct code, given for "meditation". Each koan is a kind of puzzle, and is a great way for users to learn more about a language.
Here's a simple example:
import Test.HUnit
check p = do
assert p
putStrLn "OK"
--show
result = fixMe
main = check (2 + 2 == result)Running this as-is gives a compile error, since fixMe is undefined. But changing the code by replacing fixMe with 4 gives a reassuring OK. You can edit the above code in place before executing it. Go try it!
A lot of programmers are "hands-on" learners, and would rather just try out a new tool and explore some possibilities, rather than starting with a thorough review of documentation or associated research papers.
Building koans on School of Haskell is easy. Here's the markdown behind the above example:
```active haskell
import Test.HUnit
check p = do
assert p
putStrLn "OK"
--show
result = fixMe
main = check (2 + 2 == result)
```The code before --show is hidden, and has two parts:
- First we
import Test.HUnit, a Haskell unit-testing framework. - Next we define
check, a thin wrapper around HUnit'sassertcommand.
So in general, each koan can look like this:
```active haskell
import Test.HUnit
check p = do
assert p
putStrLn "OK"
--show
YOUR KOAN HERE
```That's really all there is to it. Koans are a great fit with our Active Haskell, and we'd especially love to see how this approach can be used to introduce users to new libraries.