-- GeNeRaTeD fOr: ../../CBS/Funcons/Abstractions/Patterns/pattern-bind.aterm {-# LANGUAGE OverloadedStrings #-} module Funcons.Core.Abstractions.Patterns.PatternBind where import Funcons.EDSL entities = [] types = typeEnvFromList [] funcons = libFromList [("pattern-bind",StrictFuncon stepPattern_bind)] -- | -- /pattern-bind(B)/ is a pattern that matches any value /V/ , -- computing the singleton environment /{B |-> V}/ pattern_bind_ fargs = FApp "pattern-bind" (FTuple fargs) stepPattern_bind fargs = evalRules [rewrite1] [] where rewrite1 = do let env = emptyEnv env <- vsMatch fargs [VPAnnotated (VPMetaVar "B") (TName "values")] env rewriteTermTo (TApp "thunk" (TTuple [TApp "bind" (TTuple [TVar "B",TName "given"])])) env