[Haskell-cafe] problems with trace

Brandon Allbery allbery.b at gmail.com
Fri May 17 23:31:39 UTC 2024


It's a consequence of lazy evaluation. Which means `trace` is very useful
to see when things are actually evaluated, but not useful as a general
output mechanism.

On Fri, May 17, 2024 at 7:27 PM George Colpitts <george.colpitts at gmail.com>
wrote:

> Thanks Henning! I suspected some kind of optimization but I didn't think
> ghci would do any. I guess it is just a subtle consequence of eta
> reduction. It was very confusing to me.
>
> Cheers
> George
>
>
> On Fri, May 17, 2024 at 6:43 PM Henning Thielemann <
> lemming at henning-thielemann.de> wrote:
>
>>
>> On Fri, 17 May 2024, George Colpitts wrote:
>>
>> > After I load the following into ghci and call main I expect to see
>> "norm" in the output 3 times as I have called it 3 times
>> > but it only shows once. Why?
>> >
>> > traceBug.hs
>> > ---------------
>> > {-# OPTIONS_GHC -Wall #-}
>> >
>> > import Debug.Trace (trace)
>> >
>> > norm :: [Int] -> [Int]
>> > norm  = trace ("norm") id
>> >
>> > main :: IO ()
>> > main =
>> >   do
>> >     print $ norm [2]
>> >     print $ norm [2]
>> >     print $ norm [3]
>> > ---------------------
>> >
>> > ghci session
>> >
>> > % ghci traceBug.hs
>> > Loaded package environment from
>> /Users/gcolpitts/.ghc/x86_64-darwin-9.8.2/environments/default
>> > GHCi, version 9.8.2: https://www.haskell.org/ghc/  :? for help
>> > [1 of 2] Compiling Main             ( traceBug.hs, interpreted )
>> > Ok, one module loaded.
>> > ghci> main
>> > norm
>> > [2]
>> > [2]
>> > [3]
>>
>>
>> I think this is correct. 'norm' is evaluated only once, because it is the
>> same variable (for a function) in every call. It would be different, if
>> you would define:
>>
>>    norm xs = trace "norm" xs
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.



-- 
brandon s allbery kf8nh
allbery.b at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20240517/02e1b0d4/attachment.html>


More information about the Haskell-Cafe mailing list