[Haskell-cafe] retrospective on 'seq' -> 'unsafeSeq' ?

Henning Thielemann lemming at henning-thielemann.de
Mon Apr 14 05:36:47 EDT 2008


When reading the section "10.3 Controlling Evaluation Order" in "History 
of Haskell" I thought that the example that justified the 'seq' to be 
unrestricted polymorphic was mainly a debugging problem. I wondered if the 
better solution would have been to provide an 'unsafeSeq' which has no 
type restriction but must be absent from production code just like 
'trace'. With 'unsafeSeq' one could nicely play around until time and 
space behaviour is as wanted and then one can replace all 'unsafeSeq's by 
'seq' while adding type constraints accordingly. (Analogously there could 
be an unsafeShow that allows showing offending values in an 'error' 
without adding a Show constraint to the type signature.)


More information about the Haskell-Cafe mailing list