[Haskell-cafe] Learn You a Haskell for Great Good - a few doubts

wren ng thornton wren at freegeek.org
Tue Mar 8 02:11:07 CET 2011

On 3/7/11 6:58 PM, Alexander Solla wrote:
> The "magic" semantics of evaluating the first argument are done by the
> compiler/runtime, and are apparently not expressible in Haskell.

Of course this is true. The only ways of forcing evaluation in Haskell 
are (a) to perform pattern matches on a value, (b) use 'seq'--- either 
directly or in its disguised forms: strict data constructors and 

In order to use pattern matching you need to know what the constructors 
of the type are in order to force a choice between different 
constructors; therefore you can't use case analysis to define a function 
with the type and semantics of 'seq'.

But 'seq' is still defined in the Haskell report and therefore a part of 
Haskell. Many have lamented the problems introduced by a parametric 
polymorphic 'seq'; if it were just type-class polymorphic then it 
wouldn't be such a problem. But then a type-class polymorphic 'seq' 
could lead to maintenance issues similar to those faced by Java's 
checked exceptions, which is why it was rejected from Haskell.

Live well,

More information about the Haskell-Cafe mailing list