
Standing up against the dictator... I like neither 'Product' nor 'Sum'. For one, they are ambiguous already in type theory. They mean something different in the context of simple types and the context of dependent types: Sum Product simple types set of tagged elements set of pairs dependent types set of pairs set of functions Further they have this number-connotation. Sum and Product are mathematician's terms inspired by the cardinality of the sets they construct (in the simply typed setting), or the likeness to summation and product terms (in the dependently typed setting). IMHO, programming is much more based on logics and information theory than on mathematics and numbers. The logical content of 'Sum' is making a decision (left or right) and the one of 'Product' is adjoining two things, putting them next to each other. Disjunction and conjunction would be the logically correct terms, but we can say it simpler. I think the current Haskell approach to speak of 'Either' and pairing is the good one, free of mathematical burden, and it can be extended to higher-order kinds: Either :: * -> * -> * Either1 :: (* -> *) -> (* -> *) -> (* -> *) Either2 :: (* -> * -> *) -> (* -> * -> *) -> (* -> * -> *) (,) :: * -> * -> * Pair1 :: (* -> *) -> (* -> *) -> (* -> *) Pair2 :: (* -> * -> *) -> (* -> * -> *) -> (* -> * -> *) Cheers, Andreas On 16.12.12 1:57 AM, Ross Paterson wrote:
On Sat, Dec 15, 2012 at 09:24:48PM +0000, Henning Thielemann wrote:
Since I proposed that and became aware of the newtype solution in the meantime, I change my mind to:
data Sum f g a = Sum { getSum :: Either (f a) (g a) }
OK, let's do that. It matches the treatment of Product. (So now they'll both clash with Data.Monoid.)
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
-- Andreas Abel <>< Du bist der geliebte Mensch. Theoretical Computer Science, University of Munich Oettingenstr. 67, D-80538 Munich, GERMANY andreas.abel@ifi.lmu.de http://www2.tcs.ifi.lmu.de/~abel/