úÎ1°     (C) 2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy !"+>?ILNU  A lazy I-Var.GA lazy, demand-driven calculation that can create and fulfill promises.@Thrown when the answer for an unfulfillable promise is demanded.Demand the result of a promise.uPromise that by the end of the computation we'll provide a "real" answer, or we'll fall back and give you this answerºCreate an empty promise. If you observe the demanded answer of this promise then either by the end of the current lazy computation we'll provide a "real" answer, or you'll get an error.  "a  (  ) >Fulfill a promise. Each promise should only be fulfilled once.runLazy_ $ \p -> p != "good""good"MrunLazy_ $ \p -> do q <- promise_; p != "yay! " ++ demand q; q != "it works.""yay! it works."runLazy_ $ \p -> return ()*** Exception: BrokenPromise#runLazy (\p -> return ()) "default" "default" ±Run a lazy computation. The final answer is given in the form of a promise to be fulfilled. If the promises is unfulfilled then an user supplied default value will be returned. „Run a lazy computation. The final answer is given in the form of a promise to be fulfilled. If the promises is unfulfilled then an  will be thrown.   k "a   k (  )          promi_13rhz9Y2Kl80xtwvAnB3Ob Data.PromisePromiseLazy BrokenPromisedemandpromisepromise_!= runLazyIO runLazyIO_runLazyrunLazy_base GHC.ExceptionthrowKPure FulfilledgetLazymeqpumpdrive $fFunctorK$fMonadFixLazy$fPrimMonadLazy $fMonadLazy$fApplicativeLazy $fFunctorLazy$fExceptionBrokenPromise