úÎ$Š#0     ZCompute a right-biased fold. The estimator function is a guess at the value of the prefix  YCompute a left biased fold. the estimator function is a guess at the value of the prefix WInspect the dynamic pointer tagging bits of a closure. This is an impure function that s relies on GHC internals and will falsely return 0, but (hopefully) never give the wrong tag number if it returns  a non-0 value. \Returns a guess as to whether or not a value has been evaluated. This is an impure function c that relies on GHC internals and will return false negatives, but (hopefully) no false positives.   g f a evaluates f g while forcing a, if g == a then f g is returned. Otherwise f a is evaluated. lFurthermore, if the argument has already been evaluated, we avoid sparking the parallel computation at all.  If a good guess at the value of aW is available, this is one way to induce parallelism in an otherwise sequential task. However, if the guess isn']t available more cheaply than the actual answer, then this saves no work and if the guess is 0 wrong, you risk evaluating the function twice.   spec a f a = a `seq` f a #The best-case timeline looks like:   [---- f g ----]  [----- a -----]  [-- spec g f a --] $The worst-case timeline looks like:   [---- f g ----]  [----- a -----] " [---- f a ----] " [------- spec g f a -----------] )Compared to the unspeculated timeline of  [---- a -----]  [---- f a ----]   g f a evaluates a function f  using a cheap guess g8 at the argument in parallel with forcing the argument. HThis is one way to induce parallelism in an otherwise sequential task.  Unlike   this version c does not check to see if the argument has already been evaluated before evaluating the speculated ' version. This is useful when you know   will always return False. The following identity holds:  spec' a f a = a `seq` f a `Compute a right biased fold. The estimator function provides a guess at the value of the suffix _Compute a left-biased fold. The estimator function provides a guess at the value of the prefix           speculation-0.0.2Control.Concurrent.SpeculationWithoutSpeculationgetWithoutSpeculationWrappedFoldablegetWrappedFoldable Speculative specFoldr1 specFoldrN specFoldl1 specFoldlN evaluatedspecspec' specFoldr specFoldlBoxtagerrorEmptyStructure wrappedTyCon wrappedConstrwrappedDataType withoutTyCon withoutConstrwithoutDataType