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 -XBangPatterns.

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,
~wren

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to