[Haskell-cafe] Problem about pattern matching.
Magicloud Magiclouds
magicloud.magiclouds at gmail.com
Thu Apr 29 04:48:37 EDT 2010
Sorry folks, I did not make it clear. The firstDayOfMonth and
lastDayOfMonth was defined earlier in let ... in structure.
The problem here is, ghc warned me that "_" and "lastDayOfMonth" was
overlapped. And the results showed that, everything that should be
worked with "Mider" was done by "not_ ...".
On Thu, Apr 29, 2010 at 1:51 AM, Henning Thielemann
<schlepptop at henning-thielemann.de> wrote:
> minh thu schrieb:
>> 2010/4/28 Magicloud Magiclouds <magicloud.magiclouds at gmail.com>:
>>> Hi, I have code as below. How come "case" version works wrong and
>>> gives me "overlap" compiling warning? Thanks.
>>> if dayOfMonth == firstDayOfMonth
>>> then v day (x, y)S
>>> else if dayOfMonth == lastDayOfMonth
>>> then not_ $ v day (x, y)
>>> else Mider day (x, y)
>>>
>>> case dayOfMonth of
>>> firstDayOfMonth -> v day (x, y)
>>> lastDay -> not_ $ v day (x, y)
>>> _ -> Mider day (x, y)
>>
>> Hi,
>>
>> firstDayIfMonth and lastDay are new variables, not previously bound
>> variable. This means that trying to pattern match (the value of)
>> dayOfMonth will always succeed with the first alternative.
>
> You can however simulate a 'case' with predefined variables:
> http://haskell.org/haskellwiki/Case
>
--
竹密岂妨流水过
山高哪阻野云飞
More information about the Haskell-Cafe
mailing list