-- | Throw an error saying something was not intitialised.
--   
--   The `String` must contain a helpful message saying what module
--   the error occured in, and the possible reasons for it.
--   If not then a puppy dies at compile time.
--
uninitialised :: String -> a
uninitialised loc 
        = error $ loc ++ ": Touched an uninitialised value"
uninitialised :: String -> a
uninitialised loc 
        = error $ loc ++ ": Touched an uninitialised value"
uninitialised loc 
        = error $ loc ++ ": Touched an uninitialised value"