Matt Thiffault
10/07/2019, 8:37 PM!effect { ioRecurseNTimes(n - 1) }.bind()
, I don't get a stack overflow but everything seems to slow down and my CPU starts to work really hard after about 400k recursions.pakoito
10/07/2019, 9:42 PM!effect { ioRecurseNTimes(n - 1) }.bind()
this is redundant code, you’re packing and unpacking something needlesslypakoito
10/07/2019, 9:43 PMioRecurseNTimes(n - 1).bind()
or !ioRecurseNTimes(n - 1)
does the samepakoito
10/07/2019, 9:43 PMpakoito
10/07/2019, 9:44 PMIO { explosion() }
never explodespakoito
10/07/2019, 9:44 PMeffect { explosion() }
never explodes eitherpakoito
10/07/2019, 9:44 PMIO { explosion() }.bind()
explodes, and so does effect { explosion() }
, in exactly the same waypakoito
10/07/2019, 9:45 PMpakoito
10/07/2019, 9:47 PMpakoito
10/07/2019, 9:47 PMpakoito
10/07/2019, 9:47 PMraulraja
10/07/2019, 10:07 PMraulraja
10/07/2019, 10:07 PMraulraja
10/07/2019, 10:07 PMMatt Thiffault
10/07/2019, 10:08 PMraulraja
10/07/2019, 10:09 PMraulraja
10/07/2019, 10:09 PMMatt Thiffault
10/07/2019, 11:05 PMfun ioRecurseNTimes(n: Int): IO<Unit> = IO.fx {
if (n % 100_000 == 0) println(n)
if (n == 0)
Unit
else
ioRecurseNTimes(n - 1).bind()
}
fun ioRecurseNTimesFlatMap(n: Int): IO<Unit> {
if (n % 1_000_000 == 0) println(n)
if (n == 0)
return IO.just(Unit)
else
return IO.just(n - 1).flatMap { ioRecurseNTimesFlatMap(it) }
}
Matt Thiffault
10/07/2019, 11:05 PMMatt Thiffault
10/07/2019, 11:06 PMMatt Thiffault
10/07/2019, 11:34 PM