
On 8 April 2013 21:11, Jan Stolarek
Hi all,
consider this simple reimplementation of 'elem' function:
member :: Eq a => a -> [a] -> Bool member _ [] = False member y (x:xs) | x == y = True | otherwise = member y xs
If Haskell allowed to write pattern matching similar to Prolog then we could write this function like this:
member :: Eq a => a -> [a] -> Bool member _ [] = False member x (x:_) = True member x (_:xs) = member x xs
The meaning of pattern in the second equation is "match this equation if the first argument equals to head of the list". Many times I have found myself instinctively writing patterns in this way, only to get a compilation error. I was thinking about implementing language extension for GHC that would allow to write Prolog-style patterns. Would there be an interest in such an extension? Also, if I missed something obvious please let me know.
My initial take on this is that such capabilities would be too easy to mis-use accidentally; e.g. refactoring and changing variable names, thus causing patterns to match when you don't mean them to.
Janek
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com