1signature ILIST_DIM = 2sig 3 val ilistHeight: IListTypes.ilist -> BasicTypes.dist 4 val ilistDepth: IListTypes.ilist -> BasicTypes.dist 5end (* signature ILIST_DIM *) 6(*----------*) 7 8structure IListDim: ILIST_DIM = 9struct 10 open BasicTypes; open BoxTypes; open IListTypes 11 open Distance; open NodeListDim 12 13 fun ilistDim (f: hlist -> dist) = 14 fn [] => zero 15 | INoad (_, hl) :: rest => Int.max (f hl, ilistDim f rest) 16 | _ :: rest => ilistDim f rest 17 18 val ilistHeight = ilistDim hlistHeight 19 val ilistDepth = ilistDim hlistDepth 20end (* structure IListDim *) 21