Hi Stephen, > From: Stephen Tetley <[email protected]> > > Hi John > > I'm not sure about making Binding polymorphic to get Functor, > Traversable, Foldable... > > While I think you're correct that partitionEithers might not be a > useful example to draw from in this case, I'd assume that Binding > would be part of a larger syntax-tree, thus there might not be a > appropriate single leaf to make the tree polymorphic on. Felipe > Lessa's point - to use Uniplate or one of the Generics packages - > might be a better candidate for implementing traversals.
I did not consider that, and hadn't seen any other replies when I first replied. If true, I would agree that one of the Generics packages would be the best option. Regardless, I think this is a valid approach. By thinking of data in terms of Functor, Traversable, etc., one can recognize these patterns. Even if Binding is part of a larger syntax tree and can't reasonably be made polymorphic, creating an fmap-like function to do what the OP requested is IMHO simple and idiomatic Haskell. Using Generics then simplifies the implementation. Cheers, John _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
