Stream
正方形が欲しいとしましょう。それを宣言する簡単な方法は次のとおりです。
scala> def squares(n: Int): Stream[Int] = n * n #:: squares(n + 1)
ただし、そうすると、エラーが発生します。
<console>:8: error: overloaded method value * with alternatives:
(x: Double)Double <and>
(x: Float)Float <and>
(x: Long)Long <and>
(x: Int)Int <and>
(x: Char)Int <and>
(x: Short)Int <and>
(x: Byte)Int
cannot be applied to (scala.collection.immutable.Stream[Int])
def squares(n: Int): Stream[Int] = n * n #:: squares(n + 1)
^
では、なぜScalaはそのタイプn
が明らかにであるかを推測できないのInt
でしょうか?誰かが何が起こっているのか説明してもらえますか?