Due to popular demands, both from iTunes reviews and, well, reddit comment, I'm adding new features to my wowwiki app. First thing is to clean up this mess, and result is very interesting! I copied design patterns from both OO and functional languages, such as Delegate and Zipper.
*Icy.Wiki.App.Console> init_app
initialize_state
*Icy.Wiki.App.Console> search "mage"
*Icy.Wiki.App.Console> URL: http://wowwiki.com/mage
History: Zip [] ["http://wowwiki.com/mage"]
["Mage - WoWWiki - Your guide to the World of Warcraft"]
*Icy.Wiki.App.Console> search "rogue"
*Icy.Wiki.App.Console> URL: http://wowwiki.com/rogue
History: Zip [] ["http://wowwiki.com/rogue","http://wowwiki.com/mage"]
["Rogue - WoWWiki - Your guide to the World of Warcraft"]
Another app, which is probably the most complex system I've every designed, is also in steady progress. It's still in terminal lab though, since I want to get on the cross platform board as late as possible.
I found that implementing OO design in Haskell really easy, which is probably a good thing?