[Haskell-cafe] Is there a generic way to detect "mzero"?
dag.odenhall at gmail.com
dag.odenhall at gmail.com
Mon Mar 26 21:23:47 CEST 2012
On 26 March 2012 21:11, Jeff Shaw <shawjef3 at msu.edu> wrote:
>
> can :: (MonadPlus m) => (a -> m b) -> a -> Bool
>> can f x = case f x of
>> mzero -> False
>> _ -> True
>>
>>
>> I got a warning:
>>
>> __testError.hs:31:11:
>> Warning: Pattern match(es) are overlapped
>> In a case alternative: _ -> ...
>> Ok, modules loaded: Main.
>>
> The problem here is that when you match on "f x", your first match is an
> identifier that matches anything at all, and binds it to mzero. I think
> what you're looking for is
>
>
> can f x = case f x of
> x' | x' == mzero -> False
> _ -> True
>
can f x = f x /= mzero
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20120326/347c5a65/attachment.htm>
More information about the Haskell-Cafe
mailing list