
When I first started to learn Haskell, monads appeared as mysterious, if not mystical, entities. Reading tutorials, I had the impression that without monads one could accomplish things as exciting as generating the Fibonacci sequence, yet anything more real required mastering the concept of a monad.
Every now and then I need to acceptance-test some date-related code. Consider a following scenario to test a default issue date of an invoice:
This is my first attempt to write a sudoku solver. It's aim is not to be short or efficient - instead I tried to make the logic behind it clear. It does no guessing. It does not branch (ie. if there is no way to figure out for sure where to put a number). Adding branching should be easy - I'll try that once I read more about parallel strategies. It has no validation (it will loop infinitely for an ill-formed problem or one that requires branching). It CAN solve some sudokus :)