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