Skip to content

Instantly share code, notes, and snippets.

@oxbowlakes
Last active September 10, 2016 08:06
Show Gist options
  • Save oxbowlakes/a3a580cab76f7109ca055a30b86e950c to your computer and use it in GitHub Desktop.
Save oxbowlakes/a3a580cab76f7109ca055a30b86e950c to your computer and use it in GitHub Desktop.
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45).
Type in expressions for evaluation. Or try :help.
scala> import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.ExecutionContext.Implicits.global
scala> scala.concurrent.Future( { println("foo"); 4 })
foo
res0: scala.concurrent.Future[Int] = Success(4)
scala> res0.map(_ + 1)
res1: scala.concurrent.Future[Int] = List() //It's a List. Wait. What?
scala> res0.map(_ + 1)
res2: scala.concurrent.Future[Int] = Success(5) //OK, so it's a Success. Phew
scala> res0.map(_ + 1)
res3: scala.concurrent.Future[Int] = Success(5) //Thanks goodness!
scala> res0.map(_ + 1)
res4: scala.concurrent.Future[Int] = List() //It's a List again. What is going on?
scala> res0.map(_ + 1)
res5: scala.concurrent.Future[Int] = List() //Still a List
scala> res0.map(_ + 1)
res6: scala.concurrent.Future[Int] = Success(5) //um. Hang on, why *is* it a Success?
@satendrakumar
Copy link

satendrakumar commented Sep 5, 2016

Yes, You are right.

Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
Type in expressions for evaluation. Or try :help.

scala> 

scala> import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.ExecutionContext.Implicits.global

scala>  scala.concurrent.Future( { println("foo"); 4 })
foo
res0: scala.concurrent.Future[Int] = Success(4)

scala> res0.map(_ + 1)
res1: scala.concurrent.Future[Int] = List()

scala> res0.map(_ + 1)
res2: scala.concurrent.Future[Int] = Success(5)

scala> res0.map(_ + 1)
res3: scala.concurrent.Future[Int] = Success(5)

scala> res0.map(_ + 1)
res4: scala.concurrent.Future[Int] = Success(5)

scala> res0.map(_ + 1)
res5: scala.concurrent.Future[Int] = List()

scala> res0.map(_ + 1)
res6: scala.concurrent.Future[Int] = List()

scala> res0.map(_ + 1)
res7: scala.concurrent.Future[Int] = List()

scala> res0.map(_ + 1)
res8: scala.concurrent.Future[Int] = List()

scala> res0.map(_ + 1)
res9: scala.concurrent.Future[Int] = Success(5)

scala> res0.map(_ + 1)
res10: scala.concurrent.Future[Int] = Success(5)

scala> res0.map(_ + 1)
res11: scala.concurrent.Future[Int] = Success(5)

but on 2.11.7 It' work fine


Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.ExecutionContext.Implicits.global

scala>  scala.concurrent.Future( { println("foo"); 4 })
foo
res0: scala.concurrent.Future[Int] = scala.concurrent.impl.Promise$DefaultPromise@4d28aed2

scala>  scala.concurrent.Future( { println("foo"); 4 })
foo
res1: scala.concurrent.Future[Int] = scala.concurrent.impl.Promise$DefaultPromise@4daa513

scala> res1.map(_ + 1)
res2: scala.concurrent.Future[Int] = scala.concurrent.impl.Promise$DefaultPromise@179ac8cd

scala> res1.map(_ + 1)
res3: scala.concurrent.Future[Int] = scala.concurrent.impl.Promise$DefaultPromise@8aaab63

scala> res1.map(_ + 1)
res4: scala.concurrent.Future[Int] = scala.concurrent.impl.Promise$DefaultPromise@4c061956

scala> res1.value
res6: Option[scala.util.Try[Int]] = Some(Success(4))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment