多相性って何? パラメータ多相 (parametric polymorphism) Nick さん曰く: この関数 head は A のリストを取って A を返します。A が何であるかはかまいません。Int でもいいし、String でもいいし、Orange でも Car でもいいです。どの A でも動作し、存在可能な全ての A に対してこの関数は定義されています。 def head[A](xs: List[A]): A = xs(0) head(1 :: 2 :: Nil) // res1: Int = 1 case class Car(make: String) head(Car("Civic") :: Car("CR-V") :: Nil) // res2: Car = Car(make = "Civic") Haskell wiki 曰く: パラメータ多相 (parametric