Re:All Programming Languages are Wrong (2018)
by karmakaze on Wednesday February 12, 2020 @04:53AM
(#22307459)
I rather like that, `if condition` is a 0/1 iteration with no input. flatMap can return empty, what should map return when run on false, None?
[ Parent
| on HN ]
Re:All Programming Languages are Wrong (2018)
by mrgriffin on Wednesday February 12, 2020 @12:44PM
(#22310865)
I'd probably think of Bool as being isomorphic to Maybe (), which would mean your map implementation looks a bit like:
map :: Bool -> (() -> b) -> Maybe b
map True f = Just (f ())
map False _ = Nothing
Or, in Haskell because you've got laziness you could go with: map :: Bool -> b -> Maybe b
Which already exists as a combination of Control.Monad.guard and Data.Functor.(<$). map tf b = b <$ guard tf