Closed
Description
In dotc 0.7.0, this compiles,
for {
x <- List(1, 2, 3)
x <- List(x + 1)
} yield x
but this does not,
for {
x <- List(1, 2, 3)
x = x + 1
} yield x
It gives the errors in the REPL,
<console>:14: error: recursive value x needs type
x = x + 1
^
<console>:14: error: x is already defined as value x
x = x + 1
^
It's probably an accident of implementation, but it's very useful for getting safe mutable-like syntax in long chained for-comprehensions, without needing to resort to introducing many different identifier names, provided every generator in the for-comprehension is a flatMap
, not a map
.
This is a quirk of Scala 2, and it would be nice to remove it in Scala 3.