aboutsummaryrefslogtreecommitdiff
path: root/src/boot/strap/utility.clisp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-04-22 18:32:46 +0000
committerdos-reis <gdr@axiomatics.org>2011-04-22 18:32:46 +0000
commitb825ed51bc11564e35f84a88bbb43fbe2ac51d99 (patch)
tree6a74d803f5619ec57d8a51228e0192e9df5f7689 /src/boot/strap/utility.clisp
parent32efd3b0691918cf1d662b095c653d5a0a17ff7b (diff)
downloadopen-axiom-b825ed51bc11564e35f84a88bbb43fbe2ac51d99.tar.gz
* boot/tokens.boot: Don't translate setDifference.
* boot/initial-env.lisp (SETDIFFERNECE): Remove. * boot/translator.boot (evalBootFile): Rename form EVAL-BOOT-FILE. * boot/utility.boot (setDifference): Define. * interp/unlisp.lisp (ListMemberQ?): Remove. (ListRemoveQ): Likewise. (AlistAssocQ): Likewise.
Diffstat (limited to 'src/boot/strap/utility.clisp')
-rw-r--r--src/boot/strap/utility.clisp24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/boot/strap/utility.clisp b/src/boot/strap/utility.clisp
index 4f9a741f..38951dd9 100644
--- a/src/boot/strap/utility.clisp
+++ b/src/boot/strap/utility.clisp
@@ -7,8 +7,8 @@
(EXPORT '(|objectMember?| |symbolMember?| |stringMember?| |charMember?|
|scalarMember?| |listMember?| |reverse| |reverse!|
- |lastNode| |append!| |copyList| |substitute|
- |substitute!|))
+ |lastNode| |append!| |copyList| |substitute| |substitute!|
+ |setDifference|))
(DEFUN |objectMember?| (|x| |l|)
(LOOP
@@ -142,3 +142,23 @@
(T (CONS |h| |t|))))
(T |s|)))))
+(DEFUN |setDifference| (|x| |y|)
+ (PROG (|a| |l| |p|)
+ (RETURN
+ (COND
+ ((NULL |x|) NIL)
+ ((NULL |y|) |x|)
+ (T (SETQ |l| (SETQ |p| (LIST NIL)))
+ (LET ((|bfVar#1| |x|))
+ (LOOP
+ (COND
+ ((ATOM |bfVar#1|) (RETURN NIL))
+ (T (AND (CONSP |bfVar#1|)
+ (PROGN (SETQ |a| (CAR |bfVar#1|)) T)
+ (NOT (|objectMember?| |a| |y|))
+ (PROGN
+ (RPLACD |p| (LIST |a|))
+ (SETQ |p| (CDR |p|))))))
+ (SETQ |bfVar#1| (CDR |bfVar#1|))))
+ (CDR |l|))))))
+