多相関数
普通のHaskellの任意の型は関数全体にforallが暗黙的に付いている
code:hs
length :: a -> Int -- これは length :: forall a. a -> Int -- これと同じ意味 code:hs
{-# LANGUAGE RankNTypes #-} -- foo' :: forall a. (a -> Int) -> Int 何も書いてなければこう解釈される foo' :: (forall a. a -> Int) -> Int foo' f = f 1,2,3 + f "string" forallのつける位置を変えている
参考