hspec - Behavior Driven Development for Haskell hspec ties together requirements and code that verifies the requirements are met. The verifying code can be a boolean expression, a QuickCheck property, or an explination of why it's pending. The requirements can then be turned into documentation of what the code does and what remains to be implemented. hspec verifies its own requirements as an example of how to use it. You can find the code on github: https://github.com/trystan/hspec There's also a cabal generated tar.gz: https://github.com/downloads/trystan/hspec/hspec-0.1.0.tar.gz I'll add it to hackageDB when I get a user name.... And here it is in action: Step 1, define some requirements ]> import Test.Hspec ]> ]> specs :: IO [Spec] ]> specs = describe "quantify" [ ]> it "returns the singular form of a word when given the number 1" ]> (quantify 1 "thing" == "1 thing"), ]> ]> it "returns the plural form of a word when given a number greater than 1" ]> (quantify 2 "thing" == "2 things"), ]> ]> it "returns the plural form of a word when given the number 0" ]> (quantify 0 "thing" == "0 things"), ]> ]> it "handles describing the plural of words that end with an 'x'" ]> (pending "no need for this yet") ]> ] Step 2, make it compile ]> quantify _ _ = "" Step 3, watch your requirements fail ]> hspec specs quantify x returns the singular form of a word when given the number 1 x returns the plural form of a word when given a number greater than 1 x returns the plural form of a word when given the number 0 - handles describing the plural of words that end with an 'x' # no need for this yet Finished in 0.001 seconds 4 examples, 3 failures Step 4, make it right ]> quantify :: Int -> String -> String ]> quantify 1 s = "1 " ++ s ]> quantify n s = show n ++ " " ++ s ++ "s" Step 5, watch your requirements pass ]> hspec specs quantify - returns the singular form of a word when given the number 1 - returns the plural form of a word when given a number greater than 1 - returns the plural form of a word when given the number 0 - handles describing the plural of words that end with an 'x' # no need for this yet Finished in 0.001 seconds 4 examples, 3 failures Any advice, comments, or questions are welcome. Trystan Spangler