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