;;; $Id: remove-sym-exp-with-map.scm,v 1.4 2006/01/05 22:24:09 leavens Exp $ (module remove-sym-exp-with-map (lib "typedscm.ss" "typedscm") (provide remove-sym-exp remove-s-list) (require (lib "sym-exp-mod.scm" "lib342")) (deftype remove-sym-exp (-> (symbol sym-exp) (list-of sym-exp))) (define remove-sym-exp (lambda (sym symexp) (if (sym-exp-symbol? symexp) (if (eq? sym (sym-exp->symbol symexp)) '() (list symexp)) (list (s-list (remove-s-list sym (sym-exp->s-list symexp))))))) (deftype remove-s-list (-> (symbol (list-of sym-exp)) (list-of sym-exp))) (define remove-s-list (lambda (sym slst) (apply append (map (lambda (sexp) (remove-sym-exp sym sexp)) slst)))) ) ;; end module