
Hi,
upd_noupd n = let l = myenum' 0 n in last l + length l
This could be rewritten as
upd_noupd n = let l n = myenum' 0 n in last (l n) + length (l n)
Or a special form of let could be introduced to define locally-scoped macros:
upd_noupd n = let# l = myenum' 0 n in last l + length l
What's the strength of the {-# NOUPDATE #-} approach? Regards, Facundo
Date: Wed, 29 Aug 2012 10:20:21 +0200 From: Joachim Breitner
Subject: Re: [Haskell-cafe] A first glimps on the {-# NOUPDATE #-} pragma To: haskell-cafe@haskell.org Message-ID: <1346228421.4271.9.camel@kirk> Content-Type: text/plain; charset="iso-8859-15" Hi,
Am Dienstag, den 28.08.2012, 18:16 -0400 schrieb Carter Schonwald:
On Tuesday, August 28, 2012, Yves Par?s wrote: Monad? Simple strictness anotation is enough in that case:
upd_noupd n = let l = myenum' 0 n h = head l in h `seq` last l + h
darn, I though I changed my examples before posting to:
upd_noupd n = let l = myenum' 0 n in last l + length l
("head" was a bad example because actually due to strictness analysis and worker/wrapper transformation, GHC would yield good code even without "`seq`").
In this case (which is actually the benchmarked case), reordering or strictness annotations do not help.
Greetings and sorry for the confusion, Joachim
-- Dipl.-Math. Dipl.-Inform. Joachim Breitner Wissenschaftlicher Mitarbeiter http://pp.info.uni-karlsruhe.de/~breitner