The Haskell Programmer’s Guide to the IO Monad ― Don’t Panic ― http://stefan-klinger.de/pub.xhtml

4.3 Functors in Haskell

List やMaybeがFunctorになるという話。Fがfunctorのとき、objectsからobjectsへのmapをFo、
morphismsからmorphismsへのmapをFmとする。
unaryであるType Constructor Ft、つまり(List a)とか(Maybe a)のように
(* -> *)になってるものと、functorの条件を満たすようなfmap::(a->b) -> F a -> F b。
このセットでfunctorとみなせる。type constructor FがFoに、fmapがFmにあたる。
F = (Fo, Fm) なので、
(type constructor Ft, fmap::(a->b) -> F a -> F b)のペアがちゃんと条件を満たせばfunctorになると。
で、fmap id == id の証明のところでinductionを使ってるとこでひっかかった。
定義は
fmap::(a->)->[a]->[b]
fmap f =
fmap (x:xs) = (f x):(fmap f xs)
で、まず
fmap id
==

== id
となる。

xs がのときは、上記(fmap id )== id より(fmap id xs)==id xs
が成り立つ。で、(fmap id xs) == (id xs)が成り立つと仮定する。
仮定すると、
fmap id (x:xs)
== (id x) : (fmap id xs)
== (id x) : (id xs)
== x:xs
== id (x:xs)
が成り立つので、帰納法でおk。
合ってるかな。