That's an interesting idea, thanks. Отправлено с iPad
08.05.2012, в 23:31, Daniel Peebles <pumpkin...@gmail.com> написал(а): > To expand on that, this class basically allows you to prove your relation c > holds pointwise across arbitrary binary trees, represented by nested tuples > and terminated by ()s. If individual instances of the class had additional > ways of constructing values (i.e., proving the relation for the two type > parameters), then your trees could contain other types. > > For example, if you had another type > > data Iso a b = Iso (a -> b) (b -> a) -- the functions must be inverses > > you could write an instance of Something for Iso and build a proof that ((), > (a, ((), b)) is isomorphic to ((), (c, ((), d)) given Iso a c and Iso b d > using your class. > > I'm not sure I'd bundle the two parts together, but I'd call your pair method > (or the class it lives in) something like congruent or > ProductsRespectThisRelation :) > > Dan > > On Tue, May 8, 2012 at 3:15 PM, Daniel Peebles <pumpkin...@gmail.com> wrote: > FullBinaryTreeRelation? :P > > On Tue, May 8, 2012 at 1:36 PM, MigMit <miguelim...@yandex.ru> wrote: > Hi café, a quick question. > > Is there a somewhat standard class like this: > > class Something c where > unit :: c () () > pair :: c x y -> c u v -> c (x, u) (y, v) > > ? > > I'm using it heavily in my current project, but I don't want to repeat > somebody else's work, and it seems general enough to be defined somewhere; > but my quick search on Hackage didn't reveal anything. > > I know about arrows; this, however, is something more general, and it's > instances aren't always arrows. > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe