Conversation
| let digit1 = mod (abs n) 10 | ||
| digit2 = mod (div (abs n) 10) 10 |
There was a problem hiding this comment.
That is a wonderful solution! ππΌ You correctly noticed that it is the div and mod, cool π
One hint to make your solution even shorter: you can see that you use both:
mod m 10
div m 10The standard library has the divMod function, that actually combines inside both div and mod. And this is exactly what you use!.
So you could write it this way:
(x, y) = divMod m 10You can see how we could pattern match on the pair π
There was a problem hiding this comment.
Hmm...
I fail to see how this would be simpler - I need to apply the modulo-division by 10 to the result of the first division whereas divMod only applies it to the original value albeit as div and as mod at the same time.
src/Chapter1.hs
Outdated
| firstDigit n = error "firstDigit: Not implemented!" | ||
| firstDigit :: Int -> Int | ||
| firstDigit n | ||
| | abs n < 10 = n |
There was a problem hiding this comment.
In case of n being negative, this would return negative result. as you are using n here π
But you are on the right way! πͺπΌ
There was a problem hiding this comment.
Ouch! I ran make test-chapter1-basic only, and hence missed the failure - should have caught this :-/
Co-authored-by: Veronika Romashkina <vrom911@gmail.com>
|
Thank you very much for the elaborate feedback - you are putting a lot of thoughts and work into this π π |
Solutions for Chapter 1
cc @vrom911 @chshersh
This was real fun - thx a lot πββοΈ