<div dir="ltr"><div><div>Hi Giacomo,<br></div>Data.List can be abstracted using Foldable and Traversable but unfortunately I could not find the functions corresponding to head, take.<br><br>Prelude Data.Traversable Data.Foldable&gt; :t Data.Foldable.<br>
Data.Foldable.Foldable    Data.Foldable.concatMap   Data.Foldable.foldl&#39;      Data.Foldable.foldrM      Data.Foldable.minimum     Data.Foldable.sequenceA_<br>Data.Foldable.all         Data.Foldable.elem        Data.Foldable.foldl1      Data.Foldable.forM_       Data.Foldable.minimumBy   Data.Foldable.sequence_<br>
Data.Foldable.and         Data.Foldable.find        Data.Foldable.foldlM      Data.Foldable.for_        Data.Foldable.msum        Data.Foldable.sum<br>Data.Foldable.any         Data.Foldable.fold        Data.Foldable.foldr       Data.Foldable.mapM_       Data.Foldable.notElem     Data.Foldable.toList<br>
Data.Foldable.asum        Data.Foldable.foldMap     Data.Foldable.foldr&#39;      Data.Foldable.maximum     Data.Foldable.or          Data.Foldable.traverse_<br>Data.Foldable.concat      Data.Foldable.foldl       Data.Foldable.foldr1      Data.Foldable.maximumBy   Data.Foldable.product<br>
Prelude Data.Traversable Data.Foldable&gt; :t Data.Traversable.<br>Data.Traversable.Traversable     Data.Traversable.for             Data.Traversable.mapAccumR       Data.Traversable.sequenceA<br>Data.Traversable.fmapDefault     Data.Traversable.forM            Data.Traversable.mapM            Data.Traversable.traverse<br>
Data.Traversable.foldMapDefault  Data.Traversable.mapAccumL       Data.Traversable.sequence<br>Prelude Data.Traversable Data.Foldable&gt; :i Foldable <br>class Foldable t where<br>  fold :: Data.Monoid.Monoid m =&gt; t m -&gt; m<br>
  foldMap :: Data.Monoid.Monoid m =&gt; (a -&gt; m) -&gt; t a -&gt; m<br>  Data.Foldable.foldr :: (a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b<br>  foldr&#39; :: (a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b<br>  Data.Foldable.foldl :: (a -&gt; b -&gt; a) -&gt; a -&gt; t b -&gt; a<br>
  foldl&#39; :: (a -&gt; b -&gt; a) -&gt; a -&gt; t b -&gt; a<br>  Data.Foldable.foldr1 :: (a -&gt; a -&gt; a) -&gt; t a -&gt; a<br>  Data.Foldable.foldl1 :: (a -&gt; a -&gt; a) -&gt; t a -&gt; a<br>      -- Defined in `Data.Foldable&#39;<br>
instance Foldable [] -- Defined in `Data.Foldable&#39;<br>instance Foldable Maybe -- Defined in `Data.Foldable&#39;<br>Prelude Data.Traversable Data.Foldable&gt; :i Tr<br>Traversable  True<br>Prelude Data.Traversable Data.Foldable&gt; :i Traversable <br>
class (Functor t, Foldable t) =&gt; Traversable t where<br>  traverse ::<br>    Control.Applicative.Applicative f =&gt; (a -&gt; f b) -&gt; t a -&gt; f (t b)<br>  sequenceA ::<br>    Control.Applicative.Applicative f =&gt; t (f a) -&gt; f (t a)<br>
  Data.Traversable.mapM :: Monad m =&gt; (a -&gt; m b) -&gt; t a -&gt; m (t b)<br>  Data.Traversable.sequence :: Monad m =&gt; t (m a) -&gt; m (t a)<br>      -- Defined in `Data.Traversable&#39;<br>instance Traversable [] -- Defined in `Data.Traversable&#39;<br>
instance Traversable Maybe -- Defined in `Data.Traversable&#39;<br>Prelude Data.Traversable Data.Foldable&gt; :t foldMap<br>foldMap<br>  :: (Foldable t, Data.Monoid.Monoid m) =&gt; (a -&gt; m) -&gt; t a -&gt; m<br><br></div>
-Mukesh<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, May 31, 2013 at 2:26 PM, Giacomo Tesio <span dir="ltr">&lt;<a href="mailto:giacomo@tesio.it" target="_blank">giacomo@tesio.it</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I&#39;m looking for a class abstracting Data.List. I mean something that enable the use of say head, map, take and so on into different kind of types.<div>
<br></div><div>Is there already something like that?</div><span class="HOEnZb"><font color="#888888">
<div><br></div><div><br></div><div>Giacomo</div></font></span></div>
<br>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div>