-- GeNeRaTeD fOr: ../../CBS/Funcons/Computations/Control flow/Normal/Sequencing/left-to-right.aterm {-# LANGUAGE OverloadedStrings #-} module Funcons.Core.Computations.ControlFlow.Normal.Sequencing.LeftToRight where import Funcons.EDSL entities = [] types = typeEnvFromList [] funcons = libFromList [("left-to-right",NonStrictFuncon stepLeft_to_right)] -- | -- /left-to-right(X1,...,Xn)/ executes /X1/ ,...,/Xn/ from left to right, -- computing a tuple of result values /(V1,...,VN)/ . left_to_right_ fargs = FApp "left-to-right" (FTuple fargs) stepLeft_to_right fargs = evalRules [rewrite1] [step1] where rewrite1 = do let env = emptyEnv env <- fsMatch fargs [PAnnotated (PSeqVar "V*" StarOp) (TName "values")] env rewriteTermTo (TTuple [TVar "V*"]) env step1 = do let env = emptyEnv env <- lifted_fsMatch fargs [PAnnotated (PSeqVar "V*" StarOp) (TName "values"),PMetaVar "Y",PSeqVar "Z*" StarOp] env env <- premise (TVar "Y") (PMetaVar "Y'") env stepTermTo (TApp "left-to-right" (TTuple [TVar "V*",TVar "Y'",TVar "Z*"])) env