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

Reply via email to