generated at
多相関数
多相型を持つ関数




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



参考