-- GeNeRaTeD fOr: ../../CBS/Funcons/Abstractions/Functions/lambda.aterm {-# LANGUAGE OverloadedStrings #-} module Funcons.Core.Abstractions.Functions.Lambda where import Funcons.EDSL entities = [] types = typeEnvFromList [] funcons = libFromList [("lambda",NonStrictFuncon stepLambda)] -- | -- /lambda(E)/ computes a statically scoped function (i.e. a closed thunk). -- When applied to a value /V/ , free occurrences of /given/ in /E/ refer to /V/ . lambda_ fargs = FApp "lambda" (FTuple fargs) stepLambda fargs = evalRules [rewrite1] [] where rewrite1 = do let env = emptyEnv env <- fsMatch fargs [PMetaVar "E"] env rewriteTermTo (TApp "close" (TTuple [TApp "thunk" (TTuple [TVar "E"])])) env