
On Sat, Apr 11, 2015 at 01:22:22AM -0700, Erik de Castro Lopo wrote:
Tom Ellis wrote:
Likewise, I have often wanted to rewrite
case m of Nothing -> n Just x -> quux x
Why not emply the maybe function (b -> (a -> b) -> Maybe a -> b)
maybe n quux m
This is a fine idea which I often use on simple examples like this. My proposal has some additional benefits * Closer connection between the names of the constructors and the alternatives (I always think "is it `maybe n quux` or `maybe quux n`"?. In fact I made this mistake just today.) * No need to hand write such a function for each ADT you define (arguably they could be autogenerated, but that's a different story). * You could nest matches: data Foo = Foo (Maybe Int) Bool | Bar String case m of Foo (Just 1) -> f Foo Nothing -> g Bar "Hello" -> h