How does the compiler know that TI(1) is of type T<int>, and TS("foobar") is T<~string>? Does it infer the type of the enum constructors from their arguments? Does that mean the arities must be the same?<p>Say something like:<p>enum Node<A> {
StringNode(Node, Node, ~string)
IntNode(Node, Node, int)
VoidNode(Node, Node)
}<p>Is there any way of declaring that StringNode gives you Node<~string>, and IntNode gives Node<int>?