[Haskell-beginners] Seq question

Daniel Fischer daniel.is.fischer at googlemail.com
Fri Apr 20 00:23:22 CEST 2012


On Thursday 19 April 2012, 23:13:48, Tim Perry wrote:
> Henk-Jan van Tuly is correct. Oops! Sorry I was mis-informed.

Note, however, that in the case here, the data-dependencies force the 
evaluation of the first number in order to determine the outermost 
constructor.

So actually, your

> So your use of seq only evaluates the first number and
> the cons. I.E., it evaluates to:
> s:(Thunk)

was factually correct (in this special case).

> By the
> way, there is an excellent post about this topic on StackOverflow.com.
> It covers, seq, weak-head-normal-form, normal form, and thunks. See
> here:
> http://stackoverflow.com/questions/6872898/haskell-what-is-weak-head-no
> rmal-form/6889335#6889335
> 
> 
> Hope that makes up for my earlier comment.
> 
> Tim
> 
> On Thu, Apr 19, 2012 at 2:31 AM, Henk-Jan van Tuyl 
<hjgtuyl at chello.nl>wrote:
> > On Wed, 18 Apr 2012 16:45:05 +0200, Brent Yorgey
> > <byorgey at seas.upenn.edu>
> > 
> > wrote:
> >  On Tue, Apr 17, 2012 at 02:41:15PM -0700, Tim Perry wrote:
> >>> seq evaluates to Weak Head Normal Form (WHNF). WHNF is the first
> >>> contructor. So your use of seq only evaluates the first number and
> >>> the cons. I.E., it evaluates to:
> >>> s:(Thunk)
> >> 
> >> Actually, it doesn't even force the first number.  You just get
> >> 
> >> Thunk : Thunk
> > 
> > A nice way to demonstrate this, is the following GHCi session:
> >  Prelude> undefined `seq` print "OK"
> >  *** Exception: Prelude.undefined
> >  Prelude> [undefined] `seq` print "OK"
> >  "OK"
> > 
> > Regards,
> > Henk-Jan van Tuyl



More information about the Beginners mailing list