State monads don't respect the monad laws in Haskell

Hal Daume III hdaume@ISI.EDU
Tue, 14 May 2002 15:23:09 -0700 (PDT)


True, but using seq you can define deepSeq/rnf (depening on which camp
you're from), which isn't misleading in this way.

--
Hal Daume III

 "Computer science is no more about computers    | hdaume@isi.edu
  than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume

On Tue, 14 May 2002, Iavor S. Diatchki wrote:

> hello,
> 
> this is misleading. seq only evaluates to whnf, i.e.
> the outermost lazy constructor (or lambda) and that only if the
> "seq ..." expression is actually evaluated, which is often tricky to 
> ensure.  furthermore, for non-functions one can get the same behaviour,
> by using a case with a pattern.
> 
> here is why i think the example does not illustrate what is seq good for:
> 
>  >>main::IO()
>  >>main=do
>  >>     time1 <- getCPUTime
>  >>     w     <- return $! map undefined [1..]
>  >>     time2 <- getCPUTime
>  >      ....
> 
> the above computation does not take very long.
> 
> bye
> iavor
> 
> 
> Jorge Adriano wrote:
> >>One may ask the question: what is seq useful for not in conjunction with
> >>unsafePerformIO, other than efficiency.  That, I don't know the answer to.
> > 
> > 
> > Here is an example.
> > 
> > 
> >>main::IO()
> >>main=do
> >>     time1 <- getCPUTime
> >>     w     <- return $! calcSomething
> >>     time2 <- getCPUTime
> > 
> > ...
> > 
> > J.A.
> > 
> > _______________________________________________
> > Haskell mailing list
> > Haskell@haskell.org
> > http://www.haskell.org/mailman/listinfo/haskell
> > 
> 
> 
> 
> -- 
> ==================================================
> | Iavor S. Diatchki, Ph.D. student               |
> | Department of Computer Science and Engineering |
> | School of OGI at OHSU                          |
> | http://www.cse.ogi.edu/~diatchki               |
> ==================================================
> 
> _______________________________________________
> Haskell mailing list
> Haskell@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell
>