hakaru-0.6.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 #

Instances
Interp HUnit () Source # 
Instance details

Methods

reify :: ABT Term abt => Head abt HUnit -> () Source #

reflect :: ABT Term abt => () -> Head abt HUnit Source #

Interp HBool Bool Source # 
Instance details

Methods

reify :: ABT Term abt => Head abt HBool -> Bool Source #

reflect :: ABT Term abt => Bool -> Head abt HBool Source #

Interp HNat Natural Source # 
Instance details

Methods

reify :: ABT Term abt => Head abt HNat -> Natural Source #

reflect :: ABT Term abt => Natural -> Head abt HNat Source #

Interp HInt Integer Source # 
Instance details

Methods

reify :: ABT Term abt => Head abt HInt -> Integer Source #

reflect :: ABT Term abt => Integer -> Head abt HInt Source #

Interp HProb NonNegativeRational Source # 
Instance details
Interp HReal Rational Source # 
Instance details

Methods

reify :: ABT Term abt => Head abt HReal -> Rational Source #

reflect :: ABT Term abt => Rational -> Head abt HReal Source #

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