Module Gobba.Puritycheck

val level_purity : Types.puret -> Types.puret -> Types.puret

"level out" the purity of two values

val infer : Types.expr -> Types.evalstate -> Types.puret

Infer the purity of an expression. Note: this is a naive approach. This function is an abstract interpretation of expressions over primitives and environments.

parameter pt

The primitives table

parameter state

The current computation state

parameter is_in_lambda

If inside a lambda, the list of parameters

val lookup_env : Types.ide -> Types.purityenv_type -> Types.puret -> Types.puret
val lookup : Types.ide -> Types.evalstate -> Types.puret
val infer_assignment : Types.evalstate -> (bool * Types.ide * Types.expr) -> Types.evalstate
val infer_assignment_list : Types.assignment_type list -> Types.evalstate -> Types.evalstate