4 ms·
at this point I'm desperate for good docs / resources -- link to anything you particularly like spent hours figuring out how to debug-print a value from a pure
by awinter-py 7y ago
at this point I'm desperate for good docs / resources -- link to anything you particularly like
spent hours figuring out how to debug-print a value from a pure function and still haven't gotten there
- unhammer 7y agoimport Debug.Trace myPureThing :: Bool -> Int myPureThing b = if b then traceShow "yay True" 42 else traceShow "oh noes False" 13 … λ> myPureThing True "yay True" 42 λ> myPureThing False "oh noes False" 13 I don't know if they're good for others, but I read Real World Haskell[1] and Learn You a Haskell[2]. There's also Graham Hutton's book which people like and which is free to read this month or something[3]. [1] http://book.realworldhaskell.org/ http://book.realworldhaskell.org/ – see also the in-progress updated version at https://github.com/tssm/up-to-date-real-world-haskell https://github.com/tssm/up-to-date-real-world-haskell [2] http://learnyouahaskell.com/ http://learnyouahaskell.com/ [3] https://www.cambridge.org/core/books/programming-in-haskell/8FED82E807EF12D390DE0D16FDE217E4 https://www.cambridge.org/core/books/programming-in-haskell/...
- awinter-py 7y agoack sorry, I meant how to add a debug statement to an existing pure function while still having it return the original value EDIT per comment below, I totally misread this! yes exactly, traceShow ftw You saved me another N hours
- tome 7y agoIsn't that exactly what unhammer is demonstrating?
- awinter-py 7y agooops yes
- hopia 7y agoIn principle, you wouldn't do any logging, even debug logging, in a pure function. It always returns the same output for the same input anyway. You'd just check its output.
- nh2 7y ago> spent hours figuring out how to debug-print a value from a pure function What method did you try to figure it out? If I google "haskell debug print pure function", the first three results I get are: * https://hackage.haskell.org/package/base-4.12.0.0/docs/Debug-Trace.html https://hackage.haskell.org/package/base-4.12.0.0/docs/Debug... * https://stackoverflow.com/questions/13265783/trace-output-in-pure-function https://stackoverflow.com/questions/13265783/trace-output-in... * https://en.wikibooks.org/wiki/Haskell/Debugging https://en.wikibooks.org/wiki/Haskell/Debugging and they all have easy, one-line, correct examples of how to do it, within the first 20 seconds of reading. (This is not to criticise -- sometimes one misses the forest for the trees -- as a professional Haskell consultant who runs trainings I am genuinely interested into what problems people face and why.)
- awinter-py 7y agosaw a lot of these links and passed over them -- I had it in my head that I could use the `print` command and that I didn't need the debug lib shrug there's always an adjustment process when learning something new