Err, technically, aren't functions and constructors mutually exclusive? So if something is a function, it's, by definition, not a constructor?
On Wed, Jul 15, 2009 at 6:25 AM, Eugene Kirpichov <ekirpic...@gmail.com>wrote: > 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 > datatypes). > > 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 <not...@gmail.com>: > > 2009/7/15 Magicloud Magiclouds <magicloud.magiclo...@gmail.com>: > >> Hi, > >> 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. > > > > Cheers, > > Thu > > _______________________________________________ > > Haskell-Cafe mailing list > > Haskell-Cafe@haskell.org > > http://www.haskell.org/mailman/listinfo/haskell-cafe > > > > > > -- > Eugene Kirpichov > Web IR developer, market.yandex.ru > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe