<font style="font-family: times new roman,serif;" size="2">Hi ^_^,<br><br></font><font size="2">Let'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>