RE: confused by core

2004-03-10 Thread Simon Marlow
If I have this Foo.hs: --- module Foo (foo) where import Word (Word8) import Control.Monad.ST (ST) import Data.Array.ST (STUArray, writeArray) foo :: STUArray s Int Word8 - [Word8] - Int - ST s () foo arr ps i = writeArray arr i w where i' = 4 * i

RE: confused by core

2004-03-10 Thread Simon Peyton-Jones
|let { | n :: GHC.Prim.Int# | Str: DmdType | n = GHC.Prim.*# 4 ww3 |} in | case GHC.Prim.# n 0 of wild1 { | | Is this really a lazy let, or is there some magic going on | that means it is

Re: confused by core

2004-03-10 Thread Ian Lynagh
On Wed, Mar 10, 2004 at 09:41:46AM -, Simon Marlow wrote: Yes, this let will be done strictly. Thanks (and to the other Simon too) Like how ISTR Int#s always appear to have strictness L (these inconsitencies make things much more difficult as a user IMO, incidentally). ISTR? I

confused by core

2004-03-09 Thread Ian Lynagh
Hi, If I have this Foo.hs: --- module Foo (foo) where import Word (Word8) import Control.Monad.ST (ST) import Data.Array.ST (STUArray, writeArray) foo :: STUArray s Int Word8 - [Word8] - Int - ST s () foo arr ps i = writeArray arr i w where i' = 4 * i w =