TJ: > After all, sometimes all you need to know about a list is that > all the elements support a common set of operations. If I'm > implementing a 3d renderer for example, I'd like to have > > class Renderable a where > render :: a -> RasterImage > > scene :: Renderable a => [a]
Everyone has launched into explanations of how to use existentials to do this, but you may be happy in just haskell 98. In the above, you could just have: scene :: [RasterImage] Laziness will ensure that the computation/storage of the images will not occur until they are used. Tim _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe