ezyang’s blog

the arc of software bends towards understanding

May, 2010

Omnipresent Cabal

A short public service announcement: you might think you don't need Cabal. Oh, you might be just whipping up a tiny throw-away script, or a small application that you never intend on distributing. Cabal? Isn't that what you do if you're planning on sticking your package on Hackage? But the Cabal always knows. The Cabal […]

  • May 7, 2010

Name conflicts on Hackage

Attention Conservation Notice. Unqualified identifiers that are used the most on Hackage. Perhaps you dread the error message: Ambiguous occurrence `lookup' It could refer to either `Prelude.lookup', imported from Prelude or `Data.Map.lookup', imported from Data.Map It is the message of the piper that has come to collect his dues for your unhygenic unqualified unrestricted module […]

  • May 5, 2010

Design Patterns in Haskell

Attention Conservation Notice. A listing of how Gang of Four design patterns might be equivalently implemented in Haskell. A phrasebook for object-oriented programmers dealing with functional programming concepts. In their introduction to seminal work Design Patterns, the Gang of Four say, "The choice of programming language is important because it influences one's point of view. […]

  • May 3, 2010