On Sat, 31 Jul 2010 17:30:54 -0400, Brandon S Allbery KF8NH <[email protected]> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 7/31/10 16:58 , wren ng thornton wrote: > > Brandon S Allbery KF8NH wrote: > >> michael rice wrote: > >>> Are you saying: > >>> > >>> [ head x ] -> [ *thunk* ] and length [ *thunk* ] -> 1, independent > >>> of > >>> what *thunk* is, even head [], i.e., *thunk* never needs be evaluated? > >> > >> Exactly. (I was being cagey because the first response was cagey, possibly > >> suspecting a homework question although it seems like an odd time for it.) > >> > >> length not only does not look inside of the thunk, it *can't* look inside > >> it; all it knows is that it has a list, it specifically does *not* know > >> what > >> that list can hold. So the only thing it can do is count the number of > >> "unknown somethings" in the list. > > > > Not entirely true: > > > > stupidlyStrictLength :: [a] -> Integer > > stupidlyStrictLength [] = 0 > > stupidlyStrictLength (x:xs) = x `seq` 1 + stupidlyStrictLength xs > > Given all the messes seq makes ("hey, go behind the compiler's back and > touch this arbitrary value of arbitrary type"), I generally consider it to > be unsafeSeq :)
I would deeply in favor of renaming seq to unsafeSeq, and introduce a type class to reintroduce seq in a disciplined way. -- Nicolas Pouillard http://nicolaspouillard.fr _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
