Scalaでidを書こうとした
最初,無名関数で書こうとしたら,どうすれば多相的になってくれるのかわからなくて,ぐぐってたら名前を付ければいいということだった.
ところが,
scala> def id[T](x: T) = x id: [T](x: T)T scala> id _ res0: Nothing => Nothing = <function1> scala> (id _)(42) <console>:9: error: type mismatch; found : Int(42) required: Nothing (id _)(42) ^
( ゚Д゚)
(追記 12/23 11:59)
scala> ((identity _):Int => Int)(42) res8: Int = 42 scala> (((identity _):(Int => Int) => (Int => Int))(identity _))(42) res9: Int = 42
型を書けば動く.手前に書いた場合は推論してくれる.
メソッドは多相的になれるけど関数は多相的になれないのかな.