Hi,<br><br>I want to build a framework to apply different functions to different types of lists and I want to generalize the solution as much as possible but my Haskell knowledge is not really enough to do this (I&#39;m a haskell novice).<br>
<br>The problem has two dimensions: <br><br>1. Lets say I have two functions:<br><br>r13, ul : Char -&gt; Char<br><br>where r13 returns the rot13ed character, and ul converts upper case chars to lower case and vice versa. Later I want a rot13 function that can operate on different types of lists and an uxl function that can also operate on different types of lists.<br>
<br>2. Lets say I have two kinds of lists to handle: String and Data.ByteString.Lazy as L.<br>For Strings I want the updater function to be used for each character and for L I want all items to be converted to Char, the updater function to be updated and the result to be converted back to the original item type.<br>
<br>Therefore I define a common class for handling these lists:<br><br>class ListUpdater a where<br>    updateFn :: Char -&gt; Char<br>    update :: a -&gt; a<br><br>so I can define the update function for the different types of lists:<br>
<br>instance ListUpdater String where<br>    update = map updateFn<br><br>instance ListUpdater L.ByteString where<br>    update = L.pack . (map updateFn) . L.unpack<br><br><br>But now how should I glue these 2 dimensions together? How to say that I want a rot13 function that applies to any data type instantiated from ListUpdater and that is using the r13 function to do the update? And also that I want an uxl function that also applies to any data type instantiated from ListUpdater and that is using the ul function to do the update?<br>
<br>Thanks,<br>Istvan<br><br>