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

Mitchell, Neil neil.mitchell.2 at credit-suisse.com
Wed Nov 12 05:23:35 EST 2008


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: haskell-cafe-bounces at haskell.org
[mailto:haskell-cafe-bounces at haskell.org] On Behalf Of Paul Keir
	Sent: 12 November 2008 10:09 am
	To: haskell-cafe at 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
==============================================================================
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20081112/49089cfb/attachment.htm


More information about the Haskell-Cafe mailing list