5 ms·
I’d just recommend skimming over something like Haskell book to gain some vague familiarity with what concepts exist, then just write code and learn applicative
by SirensOfTitan 7y ago
I’d just recommend skimming over something like Haskell book to gain some vague familiarity with what concepts exist, then just write code and learn applicative/monad/monoid etc as you run into walls.
Generalizations are notoriously hard to describe as they become more general. Better to understand where and when to use those patterns over being able to write a blog post about what a monad is.
- awinter-py 7y agoat 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