diff options
Diffstat (limited to 'src/boot')
-rw-r--r-- | src/boot/ast.boot | 8 | ||||
-rw-r--r-- | src/boot/strap/ast.clisp | 9 |
2 files changed, 9 insertions, 8 deletions
diff --git a/src/boot/ast.boot b/src/boot/ast.boot index 5822f3d9..052ae2d6 100644 --- a/src/boot/ast.boot +++ b/src/boot/ast.boot @@ -696,12 +696,12 @@ sequence?(x,pred) == ++ Generate code for a membership test `x in seq' where `seq' ++ is a sequence (e.g. a list) bfMember(var,seq) == - var is ["char",.] or sequence?(seq,function integer?) => - ["MEMBER",var,seq,KEYWORD::TEST,"EQL"] + integer? var or var is ["char",.] or sequence?(seq,function integer?) => + ["MEMBER",var,seq,KEYWORD::TEST, ["FUNCTION", "EQL"]] defQuoteId var or sequence?(seq,function symbol?) => ["MEMQ",var,seq] - sequence?(seq,function string?) => - ["MEMBER",var,seq,KEYWORD::TEST,"STRING="] + string? var or sequence?(seq,function string?) => + ["MEMBER",var,seq,KEYWORD::TEST,["FUNCTION", "STRING="]] ["MEMBER",var,seq] bfInfApplication(op,left,right)== diff --git a/src/boot/strap/ast.clisp b/src/boot/strap/ast.clisp index 54e3f4f5..220253f9 100644 --- a/src/boot/strap/ast.clisp +++ b/src/boot/strap/ast.clisp @@ -1103,16 +1103,17 @@ (PROG (|ISTMP#1|) (RETURN (COND - ((OR (AND (CONSP |var|) (EQ (CAR |var|) '|char|) + ((OR (INTEGERP |var|) + (AND (CONSP |var|) (EQ (CAR |var|) '|char|) (PROGN (SETQ |ISTMP#1| (CDR |var|)) (AND (CONSP |ISTMP#1|) (NULL (CDR |ISTMP#1|))))) (|sequence?| |seq| #'INTEGERP)) - (LIST 'MEMBER |var| |seq| :TEST 'EQL)) + (LIST 'MEMBER |var| |seq| :TEST (LIST 'FUNCTION 'EQL))) ((OR (|defQuoteId| |var|) (|sequence?| |seq| #'SYMBOLP)) (LIST 'MEMQ |var| |seq|)) - ((|sequence?| |seq| #'STRINGP) - (LIST 'MEMBER |var| |seq| :TEST 'STRING=)) + ((OR (STRINGP |var|) (|sequence?| |seq| #'STRINGP)) + (LIST 'MEMBER |var| |seq| :TEST (LIST 'FUNCTION 'STRING=))) (T (LIST 'MEMBER |var| |seq|)))))) (DEFUN |bfInfApplication| (|op| |left| |right|) |