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