data Step s = Skip s next :: (s -> Step s) -> s -> Step s next next0 ss = match next0 ss with Skip ss -> Skip ss main = next (\x -> Skip x) (3 :: Integer) -- 3