Safe HaskellSafe-Inferred




toAnonDeBruijnTermTermTerm DeBruijn DefaultUni DefaultFun () Source #

Remove the textual names from a NamedDeBruijn term

toNamedDeBruijnTermTerm DeBruijn DefaultUni DefaultFun () → Term NamedDeBruijn DefaultUni DefaultFun () Source #

Given a DeBruijn-named term, give every variable the name "v". If we later call unDeBruijn, that will rename the variables to things like "v123", where 123 is the relevant de Bruijn index.

compiledCodeToTermCompiledCodeIn DefaultUni DefaultFun a → Term Source #

Just extract the body of a program wrapped in a CompiledCodeIn. We use this a lot.

haskellValueToTermLift DefaultUni a ⇒ a → Term Source #

Lift a Haskell value to a PLC term. The constraints get a bit out of control if we try to do this over an arbitrary universe.

unsafeRunTermCekTermEvaluationResult Term Source #

Just run a term to obtain an EvaluationResult (used for tests etc.)

cekResultMatchesHaskellValueLift DefaultUni a ⇒ Term → (EvaluationResult TermEvaluationResult Term → b) → a → b Source #

Evaluate a PLC term and check that the result matches a given Haskell value (perhaps obtained by running the Haskell code that the term was compiled from). We evaluate the lifted Haskell value as well, because lifting may produce reducible terms. The function is polymorphic in the comparison operator so that we can use it with both HUnit Assertions and QuickCheck Properties.