[Haskell-cafe] Pattern matching does not work like this?
ekirpichov at gmail.com
Wed Jul 15 06:25:25 EDT 2009
Technically, the reason is not that (++) is a function, but that it is
not a constructor of the  type.
And, not only is it not a constructor, but it also *can't* be one,
because the main characteristic of pattern matching in Haskell is that
it is (contrary to Prolog's unification) unambiguous (unambiguity of
constructors is guaranteed by the semantics of Haskell's algebraic
If ++ could be pattern matched, what should have been the result of
"let (x++y)=[1,2,3] in (x,y)"?
2009/7/15 minh thu <noteed at gmail.com>:
> 2009/7/15 Magicloud Magiclouds <magicloud.magiclouds at gmail.com>:
>> I do not notice this before. "fun ([0, 1] ++ xs) = .." in my code
>> could not be compiled, parse error.
> ++ is a function; you can't pattern-match on that.
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
Web IR developer, market.yandex.ru
More information about the Haskell-Cafe