, .
,
rc v g i = g (v : i)
so rc :: a -> b -> c -> d, , a, b, c d. (v : i), v :: a , i :: [a], c = [a]. g v : i, g :: [a] -> d, ,
rc :: a -> ([a] -> d) -> [a] -> d
rn x = x , rn , rn :: a -> a.
rh g = hd (g [])
rh g RHS, [a] -> b, , a b. , g [] hd RHS, g [] :: [c] g :: [a] -> [c], ,
rh :: ([a] -> [c]) -> c
f [] y = y
f (x:xs) y = f xs (rc x y)
- , , , f :: [a] -> b -> b . RHS f rc x y, rc x y , y, b.
rc :: a -> ([a] -> d) -> [a] -> d
b = [a] -> d.
f :: [a] -> ([a] -> d) -> [a] -> d
g [] y = y
g (x:xs) y = g xs (x:y)
g :: [a] -> b -> b. b = [a], g , ,
g :: [a] -> [a] -> [a]