XMonad and Haskell
Posted on January 25, 2009 by oubiwann

This blog post comes on the heels of the blog post about Window Maker, thanks to the recommendation that
I was stunned to discover that though the customization of XMonad involves hacking some Haskell, that this was the most literate experience I've had of window manager configuation in a long time. Whereupon I immediately began examine my interaction with XMonad more carefully. Why was I having so much fun? It wasn't because key bindings were refreshingly easy, nor that the system has a tiny footprint and is highly responsive. Nor was it the fun I've had scripting my own status bar applets with bash. It boils down to this:
I have complete and intimate control over my work environment. It's not more complicated than I need. Not is it less so. I have all the tools necessary to change and improve the most important tool I use on a daily basis: the window manager.
Don't get me wrong: I'm still loving Window Maker. However, as
This brings me to a very surprising (and delightful) subplot. At the end of this weekend of exploration, I realized the best way to customize the UI the way I wanted was to start writing some Haskell extensions. Which lead be to a fantastic introduction
I've toyed with somewhere on the order of 30 languages (I originally wrote "20", but then I stopped to count). I've enjoyed several of those immensely (Smalltalk, Objective-C, Lisp dialects stand out in the crowd), but Python is the one that has always fit my brain the best and allowed me to get the most done. But Python has always felt lonely in my brain; it wanted a friend, but the closest it could get was Lisp. However, if I'm reading the signs right, then it now has a new best friend: Haskell.
1. BASIC
2. DOS batch
3. Logo
4. C
5. Pascal
6. VMS shell
7. UNIX shells
8. QuakeC
9. Matlab
10. Mathematica
11. PHP
12. VB/VBA/VBScript
13. SQL
14. x86 Assembly
15. Perl
16. Python
17. C++
18. Tcl
19. JavaScript
20. AppleScript
21. Java
22. R
23. Smalltalk
24. Objective-C
25. Oz
26. Lisp/Scheme
27. Ruby
28. Lua
29. Erlang
30. Haskell