> The guts of the question is: can one use the class system to code up
> the reflexive, transitive closure

Computing the transitive closure of types is possible:
http://www.haskell.org/pipermail/haskell-cafe/2003-October/005249.html
http://www.haskell.org/pipermail/haskell-cafe/2003-November/005433.html

>   pair :: STRef ((s1, s2), s3) a ->
>           STRef (s1, s2) b ->
>           ST (((s1, s2), s3), s4) (STRefr1 (a, b))
>
> which isn't as general as I would like, as it imposes a particular order
> on the nested scopes.  

That problem could be solved by open sums, it seems. The HList paper
showed how to achieve that, in current Haskell.

> I've experimented with a few different attempts, but in the best case
> succeeded only in exhausting stack space while searching for satisfying
> instances.

Could it be possible to post the complete code for those attempts? I'd
like to try a few tricks to avoid the divergence.

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to