Hi Paul,
 
maybe False (\x -> True) (find isTypeB ts)

This can be more neatly expressed as:
 
isJust (find isTypeB ts)
 
But your entire thing can be expressed as:
 
containsTypeB ts = any isTypeB ts
 
I recommend reading through the Prelude interface and the List
interface, it has many useful functions that will help.
 
Thanks
 
Neil
 


________________________________

        From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Paul Keir
        Sent: 12 November 2008 10:09 am
        To: haskell-cafe@haskell.org
        Subject: [Haskell-cafe] Searching for ADT patterns with elem and
find
        
        

        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 


==============================================================================
Please access the attached hyperlink for an important electronic communications 
disclaimer: 

http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
==============================================================================
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to