-- GeNeRaTeD fOr: ../../CBS/Funcons/Computations/Control flow/Normal/Iterating/Definite/Filtering collections/set-filter.aterm {-# LANGUAGE OverloadedStrings #-} module Funcons.Core.Computations.ControlFlow.Normal.Iterating.Definite.FilteringCollections.SetFilter where import Funcons.EDSL entities = [] types = typeEnvFromList [] funcons = libFromList [("set-filter",PartiallyStrictFuncon [NonStrict,Strict] stepSet_filter)] -- | -- /set-filter(P,S)/ deletes all entries from the the set /S/ that do not -- satisfy the predicate /P/ . set_filter_ fargs = FApp "set-filter" (FTuple fargs) stepSet_filter fargs@[arg1,arg2] = evalRules [rewrite1] [] where rewrite1 = do let env = emptyEnv env <- fsMatch fargs [PMetaVar "F",PAnnotated (PMetaVar "S") (TName "values")] env rewriteTermTo (TApp "list-to-set" (TTuple [TApp "list-filter" (TTuple [TVar "F",TApp "set-to-list" (TTuple [TVar "S"])])])) env stepSet_filter fargs = sortErr (FApp "set-filter" (FTuple fargs)) "invalid number of arguments"