(定義1) map f [] = []
(定義2) map f (x:xs) = f x : map f xs
(定義3) (f . g) x = f (g x)



map f (map g xs) = map (f . g) xs
map f (map g []) = map (f . g) []
map f (map g []) = map (f . g) []
map f [] = []




(定義1) map f [] = []
map f (map g []) = map (f . g) []
map f [] = []
[] = []




(定義1) map f [] = []
(仮定1) map f (map g xs) = map (f . g) xs




map f (map g (x:xs)) = map (f . g) (x:xs)
map f (map g (x:xs)) = map (f . g) (x:xs)
map f (g x : map g xs) = (f . g) x : map (f . g) xs




(定義2) map f (x:xs) = f x : map f xs
map f (map g (x:xs)) = map (f . g) (x:xs)
map f (g x : map g xs) = (f . g) x : map (f . g) xs
f (g x) : map f (map g xs) = (f . g) x : map (f . g) xs




(定義2) map f (x:xs) = f x : map f xs
map f (map g (x:xs)) = map (f . g) (x:xs)
map f (g x : map g xs) = (f . g) x : map (f . g) xs
f (g x) : map f (map g xs) = (f . g) x : map (f . g) xs
f (g x) : map f (map g xs) = f (g x) : map (f . g) xs




(定義3) (f . g) x = f (g x)
map f (map g (x:xs)) = map (f . g) (x:xs)
map f (g x : map g xs) = (f . g) x : map (f . g) xs
f (g x) : map f (map g xs) = (f . g) x : map (f . g) xs
f (g x) : map f (map g xs) = f (g x) : map (f . g) xs
f (g x) : map (f . g) xs = f (g x) : map (f . g) xs




(仮定1) map f (map g xs) = map (f . g) xs
http://www.paraiso-lang.org/ikmsm/

プログラミングHaskell 13章 問題7

  • 2.
    (定義1) map f[] = [] (定義2) map f (x:xs) = f x : map f xs (定義3) (f . g) x = f (g x) map f (map g xs) = map (f . g) xs
  • 3.
    map f (mapg []) = map (f . g) []
  • 4.
    map f (mapg []) = map (f . g) [] map f [] = [] (定義1) map f [] = []
  • 5.
    map f (mapg []) = map (f . g) [] map f [] = [] [] = [] (定義1) map f [] = []
  • 6.
    (仮定1) map f(map g xs) = map (f . g) xs map f (map g (x:xs)) = map (f . g) (x:xs)
  • 7.
    map f (mapg (x:xs)) = map (f . g) (x:xs) map f (g x : map g xs) = (f . g) x : map (f . g) xs (定義2) map f (x:xs) = f x : map f xs
  • 8.
    map f (mapg (x:xs)) = map (f . g) (x:xs) map f (g x : map g xs) = (f . g) x : map (f . g) xs f (g x) : map f (map g xs) = (f . g) x : map (f . g) xs (定義2) map f (x:xs) = f x : map f xs
  • 9.
    map f (mapg (x:xs)) = map (f . g) (x:xs) map f (g x : map g xs) = (f . g) x : map (f . g) xs f (g x) : map f (map g xs) = (f . g) x : map (f . g) xs f (g x) : map f (map g xs) = f (g x) : map (f . g) xs (定義3) (f . g) x = f (g x)
  • 10.
    map f (mapg (x:xs)) = map (f . g) (x:xs) map f (g x : map g xs) = (f . g) x : map (f . g) xs f (g x) : map f (map g xs) = (f . g) x : map (f . g) xs f (g x) : map f (map g xs) = f (g x) : map (f . g) xs f (g x) : map (f . g) xs = f (g x) : map (f . g) xs (仮定1) map f (map g xs) = map (f . g) xs
  • 11.