forever , , a . , .
t :
t = a flatMap (_ => t)
t = a flatMap (_ => a flatMap (_ => t))
t = a flatMap (_ => a flatMap (_ => a flatMap (_ => t)))
..
Lazy - . , " " ( , ), ( , ).
:
val rec: Int = 1 + rec
println(rec) // prints 1, "rec" in the body is initialized to default value 0
def foo() = {
val rec: Int = 1 + rec // ERROR: forward reference extends over definition of value rec
println(rec)
}
, . , . :
def run = {
println("calling run from flatMap result")
f(self.run).run
}
run (. self.run). , self.run , f ; , run().
t forever, IO, flatMaps (, flatMap, " " ). run , , f. flatMap ( flatMap), , flatMap, run f, IO, run, f, IO, run, f, IO, run...