- You can view a
topological sort in uML so
you can see how the type inference works.
The representation of a graph is a list of edges; an edge is a pair.
Try
-> (tsort (convert '((a b) (b c) (b d) (d e)))) val it = (a b c d e) : sym list -> (tsort (convert '((a b) (b c) (b d) (d e) (e a)))) val it = (The-graph-has-a-cycle: a -> b -> d -> e -> a) : sym list

- Implementations of denotational semantics in ML. You might want to use something similar to test your own semantics.
- The Nano-Java system includes the Nano-Java Virtual Machine, with optimizer, plus the Nano-Java source language and compiler.