<font style="font-family: times new roman,serif;" size="2">Hi ^_^,<br><br></font><font size="2">Let&#39;s say we have the following data type and functions:</font><br><pre style="margin-left: 40px;">data Tab a =      (:↺:)<br>
           |     a :↓:   Tab a<br>           | Tab a :↙↘: (Tab a,Tab a)<br>           deriving (Eq, Show, Read)<br><br>map f (:↺:)          = (:↺:)<br>map f (a :↓: t)      = f a :↓: map f t<br>map f (h :↙↘: (l,r)) = map f h :↙↘: (map f l, map f r)<br>
<br>filter p (:↺:)          = (:↺:)<br>filter p (a :↓: t)      | p a       = filter p t<br>                        | otherwise = a :↓: filter p t <br>filter p (h :↙↘: (l,r)) = filter p h :↙↘: (filter p l, filter p r)<font size="4"><br>
</font></pre>is it possible to automatically derive map and filter?<br><pre style="margin-left: 40px;">data Tab a =      (:↺:)<br>           |     a :↓:   Tab a<br>           | Tab a :↙↘: (Tab a,Tab a)<br>           deriving (Eq, Show, Read, Map, Filter)<br>
</pre>If not, do you think it might be nice to have something like this in the future?<br><br>Best Regards,<br>Cetin Sert<br>