Haskellが Functor 型クラスに関する説明を提供することを学びます。
リストの場合、次のように実装されていることがわかります。
instance Functor [] where
fmap = map
しかし、これはどのように機能しますか?
型クラス Functor では、fmap には実装さえありません。持っているのは、次のような型宣言だけです。
class Functor f where
fmap :: (a -> b) -> f a -> f b
型宣言があるだけで、Haskell はどのようにしてリストのマップ操作を正しく理解するのでしょうか?