パラメトリック多相
パラメトリック多相とは何かと考えていたら、
関数はパラメータを持ち、これを実際の値に束縛します。Haskell の型はパラメータを持つことができ、これを別の型に束縛できます。
Real World Haskell――実戦で学ぶ関数型言語プログラミング
この一文で理解できた、と思う。
関数のパラメータには任意の値を入れることができる。例えばこんな感じ。文字列ではあるけど値は何でもいい。
int atoi(const char *nptr); atoi("12345"); atoi("abcde"); atoi(")('&%$#");
型のパラメータだと、こんな感じ。リストであれば何の型のリストでもいい。
last :: [a] -> a last [1, 2, 3, 4, 5] last "abcde" last [True, False, False, True]
ということ?