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
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:
import Test.HUnit, a Haskell unit-testing framework.
check, a thin wrapper around HUnit's
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.