[Haskell-cafe] Searching for ADT patterns with elem and find

Paul Keir pkeir at dcs.gla.ac.uk
Wed Nov 12 05:09:14 EST 2008


Hi All,

If I have an ADT, say

data T
 = A String Integer
 | B Double
 | C
 deriving(Eq)

and I want to find if a list (ts) of type T contains an element of subtype "B Double", must my "containsTypeX" function use a second "isTypeX" function as follows:

isTypeB :: T -> Bool
isTypeB (B _) = True
isTypeB _     = False

containsTypeB :: [T] -> Bool
containsTypeB ts = maybe False (\x -> True) (find isTypeB ts)

I understand that while something like "find C ts" will work, "find (isTypeB _) ts" will not, but is there no such thing as a pattern combinator(?), or lambda that could help with this situation. I find I have many individual "isTypeB" functions now.

Regards,
Paul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20081112/495bfdba/attachment.htm


More information about the Haskell-Cafe mailing list