effectfulId :: a -> a effectfulId x = x //double :: (a -> a) -> a -> a double f x = f (f x) doubleId = double effectfulId main :: Integer main = runProc (doubleId (13 :: Integer)) -- 13