packages feed

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