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.