<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7653.38">
<TITLE>Searching for ADT patterns with elem and find</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Hi All,<BR>
<BR>
If I have an ADT, say<BR>
<BR>
data T<BR>
&nbsp;= A String Integer<BR>
&nbsp;| B Double<BR>
&nbsp;| C<BR>
&nbsp;deriving(Eq)<BR>
<BR>
and I want to find if a list (ts) of type T contains an element of subtype &quot;B Double&quot;, must my &quot;containsTypeX&quot; function use a second &quot;isTypeX&quot; function as follows:<BR>
<BR>
isTypeB :: T -&gt; Bool<BR>
isTypeB (B _) = True<BR>
isTypeB _&nbsp;&nbsp;&nbsp;&nbsp; = False<BR>
<BR>
containsTypeB :: [T] -&gt; Bool<BR>
containsTypeB ts = maybe False (\x -&gt; True) (find isTypeB ts)<BR>
<BR>
I understand that while something like &quot;find C ts&quot; will work, &quot;find (isTypeB _) ts&quot; 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 &quot;isTypeB&quot; functions now.<BR>
<BR>
Regards,<BR>
Paul</FONT>
</P>

</BODY>
</HTML>