Re: problems with trace

Brandon Allbery <[email protected]>
Newsgroups gmane.comp.lang.haskell.cafe
Message-ID <CAKFCL4VF3i234ri4H7WO6ketXeN5T7F1NY9BokcHXAtO_UqVQg@mail.gmail.com>
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 <[email protected]>
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 <
> [email protected]> 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
[email protected]

_______________________________________________
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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.