;;; $Id: remove-sym-exp-mod.scm,v 1.3 2006/01/05 22:24:09 leavens Exp $ ;;; see also remove-sym-exp-with-map.scm (module remove-sym-exp-mod (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) (if (null? slst) '() (append (remove-sym-exp sym (car slst)) (remove-s-list sym (cdr slst)))))) ) ;; end module