packages feed

funcons-tools-0.1.0.0: cbs/Funcons/Core/Computations/DataFlow/Generating/FreshAtom.hs

-- GeNeRaTeD fOr: ../../CBS/Funcons/Computations/Data flow/Generating/fresh-atom.aterm
{-# LANGUAGE OverloadedStrings #-}

module Funcons.Core.Computations.DataFlow.Generating.FreshAtom where

import Funcons.EDSL

entities = []

types = typeEnvFromList
    []

funcons = libFromList
    [("fresh-atom",NullaryFuncon stepFresh_atom)]

-- |
-- /fresh-atom/ computes a fresh atom, distinct from all other /atoms/ previously generated by other occurrences of /fresh-atom/ .
fresh_atom_ = FName "fresh-atom"
stepFresh_atom = evalRules [] [step1]
    where step1 = do
            let env = emptyEnv
            env <- getMutPatt "atom-generator" (VPMetaVar "K") env
            putMutTerm "atom-generator" (TTuple [TApp "next-atom" (TTuple [TVar "K"])]) env
            stepTermTo (TVar "K") env