Re:Kotlin: The Problem with null
by yiransheng on Friday January 12, 2018 @08:01PM
(#16137628)
In languages like Haskell and Scala that supports `do` / `for` comprehension sugar, this could be done without the nesting:
[ Parent
| on HN ]
In modern Haskell, we are more likely to use the Applicative instance for Maybe, e.g.
fromMaybe 0 $
(+) <$> xm <*> ymOr just:
fn (Just q) (Just z) = q + z
fn _ _ = 0Surely since you have monads you can just use the tools they give you?
fn = liftM2 (+)That doesn't do quite the same thing; the original example gets rid of the Maybe, defaulting to 0.
> That doesn't do quite the same thing
You're missing the point entirely.
> the original example gets rid of the Maybe, defaulting to 0.
http://hackage.haskell.org/package/base-4.10.1.0/docs/Data-M...
Wouldn't this let me call `fn true false` or `fn "hi" 2`? Or the second declaration takes the inferred type of the arguments from the first one?
This isn't two functions: it's actually one function defined by cases. You can think of it as equivalent to
fn x y = case (x, y) of
(Just q, Just z) -> q + z
(_, _) -> 0
but the case becomes implicit in the repetition of the function name at the top level of indentation.