main = do
print $ a + c == 0 -- True.
print $ a == c -- True. a == c == 0.
print $ c == 0 -- True. Of course.
print $ a + d == 1 -- True. d == 1.
print $ b + c == 1 -- True. b == 1.
print $ b + d == 0 -- True. What happened?!
print $ b == d -- True. ?!
print $ d == 0 -- True. ?!?!
-- hints to make answer unique (perhaps...)
print $ sum([a, b, c]) -- 1
print $ sum([a, b, d]) -- 1
print $ [a, b, c] !! a -- 0
print $ [a, b, c] !! b -- 1
print $ [a, b, c] !! c -- 0
I swear:
- I didn't define (+)
- I didn't define (!!)
- I didn't define (==)
- I didn't define sum
- I didn't define print
- I didn't define ($) -- @kmizu sent me a valid solution and he defined ($). I didn't.
- I didn't use default -- @camlspotter said it may use defaulting, and I didn't know it. I agree with him that it would be easier if I used defaulting. But I didn't. I didn't use default defaulting (i.e. default ordering of Integer and Double) For more detail, see http://www.haskell.org/onlinereport/decls.html#sect4.3.4
All of them are original, came from the prelude module.
The answer will be published on the blog at least 1 week after.