mrec3.hs revision 3d3889e0cefcdce9b3f43c53aaa201943ac2e895
c869993e79c1eafbec61a56bf6cea848fe754c71xydata Boolx = Minx | Plusx
c869993e79c1eafbec61a56bf6cea848fe754c71xydata Natx a = Zx | Sx a | SSx (Natx a) Boolx
c869993e79c1eafbec61a56bf6cea848fe754c71xymap1 :: Natx Int -> (Int -> Int) -> Natx Int
c869993e79c1eafbec61a56bf6cea848fe754c71xymap1 x = \ f -> case x of
c869993e79c1eafbec61a56bf6cea848fe754c71xy Zx -> Sx (f 0)
c869993e79c1eafbec61a56bf6cea848fe754c71xy Sx n -> Sx (f n)
c869993e79c1eafbec61a56bf6cea848fe754c71xy SSx a t -> map2 a t f
c869993e79c1eafbec61a56bf6cea848fe754c71xymap2 :: Natx Int -> Boolx -> (Int -> Int) -> Natx Int
c869993e79c1eafbec61a56bf6cea848fe754c71xymap2 x = \ w f -> case x of
c869993e79c1eafbec61a56bf6cea848fe754c71xy Sx n -> Sx (n + 1)
c869993e79c1eafbec61a56bf6cea848fe754c71xy SSx a t -> if t == Minx then SSx a w else map1 a f