funcons-tools-0.1.0.0: cbs/Funcons/Core/Abstractions/Patterns/PatternBind.hs
-- 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