hakaru-0.4.0: A probabilistic programming language

CopyrightCopyright (c) 2016 the Hakaru team
LicenseBSD3
Maintainerwren@community.haskell.org
Stabilityexperimental
PortabilityGHC-only
Safe HaskellNone
LanguageHaskell2010

Language.Hakaru.Evaluation.Lazy

Contents

Description

Lazy partial evaluation.

BUG: completely gave up on structure sharing. Need to add that back in. cf., gvidal-lopstr07lncs.pdf for an approach much like my old one.

Synopsis

Documentation

evaluate :: forall abt m p. (ABT Term abt, EvaluationMonad abt m p) => MeasureEvaluator abt m -> TermEvaluator abt m Source #

Lazy partial evaluation with some given "perform" and "evaluateCase" functions. N.B., if p ~ 'Pure then the "perform" function will never be called.

Helper functions

evaluateNaryOp :: (ABT Term abt, EvaluationMonad abt m p) => TermEvaluator abt m -> NaryOp a -> Seq (abt '[] a) -> m (Whnf abt a) Source #

evaluatePrimOp :: forall abt m p typs args a. (ABT Term abt, EvaluationMonad abt m p, typs ~ UnLCs args, args ~ LCs typs) => TermEvaluator abt m -> PrimOp typs a -> SArgs abt args -> m (Whnf abt a) Source #

evaluateArrayOp :: (ABT Term abt, EvaluationMonad abt m p, typs ~ UnLCs args, args ~ LCs typs) => TermEvaluator abt m -> ArrayOp typs a -> SArgs abt args -> m (Whnf abt a) Source #

Helpers that should really go away

class Interp a a' | a -> a' where Source #

Minimal complete definition

reify, reflect

Methods

reify :: ABT Term abt => Head abt a -> a' Source #

reflect :: ABT Term abt => a' -> Head abt a Source #

reifyPair :: ABT Term abt => Head abt (HPair a b) -> (abt '[] a, abt '[] b) Source #