diff options
author | 2017-03-24 08:53:34 +0100 | |
---|---|---|
committer | 2017-03-24 08:53:34 +0100 | |
commit | 9c80dd80feb1cc2ae6d0dc6e08985d4f51d4f329 (patch) | |
tree | 47cba4c5052a065d97e8e780616f0667f33f3be2 | |
parent | 0561c16e0bb1a4b36b7cf287d1be12e661a29813 (diff) | |
parent | c318a983e078b6c729425f21526c6896ba55df09 (diff) |
Merge PR#476: [future] Be eager when "chaining" already resolved future values.
-rw-r--r-- | lib/future.ml | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/future.ml b/lib/future.ml index ea0382a63..ca73d5e39 100644 --- a/lib/future.ml +++ b/lib/future.ml @@ -151,8 +151,8 @@ let chain ~pure ck f = create ~uuid ~name fix_exn (match !c with | Closure _ | Delegated _ -> Closure (fun () -> f (force ~pure ck)) | Exn _ as x -> x - | Val (v, None) when pure -> Closure (fun () -> f v) - | Val (v, Some _) when pure -> Closure (fun () -> f v) + | Val (v, None) when pure -> Val (f v, None) + | Val (v, Some _) when pure -> Val (f v, None) | Val (v, Some state) -> Closure (fun () -> !unfreeze state; f v) | Val (v, None) -> match !ck with |