1signature KIND = 2sig 3 val noadKind: MathTypes.noad -> MathTypes.kind 4end (* signature KIND *) 5(*----------*) 6 7structure Kind: KIND = 8struct 9 open MathTypes 10 11 fun nucKind [MathChar (k, _, _)] = k 12 | nucKind ml = Ord 13 14 val noadKind = 15 fn MathChar (k, _, _) => k 16 | Radical _ => Ord 17 | Accent _ => Ord 18 | VCenter _ => Ord 19 | Overline _ => Ord 20 | Underline _ => Ord 21 | GenFraction _ => Inner 22 | LeftRight _ => Inner (* 1191, TeX-Program *) 23 | Script {nucleus, ...} => nucKind nucleus 24 | BigOp _ => Op 25 | SubBox _ => Ord 26 | MList _ => Ord 27 | Kind (k, _) => k 28 | _ => raise CannotHappen 29 (* not called for the remaining possibilities: 30 MPen, MSpace, Style, Choice *) 31end (* structure Kind *) 32