
On Friday 29 July 2011, 03:26:33, Jake Penton wrote:
Ok, thanks. I have some studying to do about haskell types, clearly.
Does that mean then that there is no definition possible of f other than 'undefined'? I mean this compiles:
f::a f = undefined
But is there any other possible second line defining f?
Sure, you can write the same thing in many different ways: f :: a f = f f :: a f = let x = x in x f :: a f = error "Foo" but all definitions of "f :: a" that compile yield (some kind of) bottom, since _|_ is the only value that is common to all types (whether an attempt to evaluate such a value yields actual nontermination or an exception message depends; the first two don't terminate in ghci but result in "<<loop>>" when used in a compiled programme).
- Jake -