I'd love a reference for the last sentence - free lattice ~= continuation monad?<div><br></div><div>Thanks,</div><div>Siddharth</div><div><br><br><div class="gmail_quote"><div dir="ltr">On Tue 19 Jun, 2018, 21:53 Olaf Klinke, <<a href="mailto:olf@aatal-apotheke.de">olf@aatal-apotheke.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Aaron, <br>
<br>
the lattices package provides some modules to extend a given lattice by some elements, e.g. new top and bottoms. There are also derived typeclass instances for combinations like tuples, endomorphisms and so forth. But the way of choice really depends on what you know about your multiple inheritance hierarchy. <br>
In universal algebra one powerful method of constructing (semi-)lattices is by generators and relations. That means you define the lattice as a quotient of a free lattice. The quotient itself is defined as a set of ineqalities on the generators. I don't know how one would implement that without dependent types, though, as the type would be another type together with a function. To make things worse, the word problem is undecidable in general. <br>
Looking at Algebra.Lattice.Free I'm surprised that the free (semi-)lattice types don't have a Monad instance. Does anyone know why they are not implemented? Under the hood the free lattice types are identical to the continuation monad. <br>
<br>
Olaf<br>
<br>
>Hi,<br>
><br>
>I am trying to work out how to use the Algebra.Lattice family of Lattice<br>
>data structures.<br>
><br>
>Firstly how do I construct a lattice ?<br>
><br>
>What I am wanting to do is to be able to construct a lattice to represent a<br>
>multiple inheritance hierarchy. Then I to be able to find the Least Upper<br>
>Bound of a set of classes/types. This is in order to find the type of a<br>
>multiple case expression.<br>
><br>
>I am not sure if the Haskell classes are actually applicable ? but if they<br>
>are how do I apply them to the following problem please ?<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Sending this from my phone, please excuse any typos!</div></div>