adamc@801: fun mapX (a ::: Type) (b ::: Type) (ctx ::: {Unit}) f =
adamc@801: let
adamc@801: fun mapX' ls1 ls2 =
adamc@801: case (ls1, ls2) of
adamc@801: ([], []) =>
adamc@801: | (x1 :: ls1, x2 :: ls2) => {f x1 x2}{mapX' ls1 ls2}
adamc@801: | _ => error ListPair.mapX: Unequal list lengths
adamc@801: in
adamc@801: mapX'
adamc@801: end