I have been trying to implement a Trie in Haskell. One hour of head scratching later, I have a short module that can do insert and lookup. Going to implement delete. In recent times, I haven't spent so much time thinking upfront. Haskell really makes me think before touching the keyboard.