diff --git a/src/ikarus.boot b/src/ikarus.boot index 6f5e231..d5243bf 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.predicates.ss b/src/ikarus.predicates.ss index fb690aa..963fc09 100644 --- a/src/ikarus.predicates.ss +++ b/src/ikarus.predicates.ss @@ -4,15 +4,15 @@ (export fixnum? flonum? bignum? ratnum? number? complex? real? rational? integer? exact? eof-object? bwp-object? immediate? boolean? char? vector? bytevector? string? procedure? null? pair? - symbol? code? not weak-pair? eq? eqv? equal?) + symbol? code? not weak-pair? eq? eqv? equal? boolean=? + symbol=?) (import - (except (ikarus) fixnum? flonum? bignum? ratnum? number? complex? real? rational? integer? exact? eof-object? bwp-object? immediate? boolean? char? vector? bytevector? string? procedure? null? pair? weak-pair? symbol? code? not eq? eqv? equal? - port? input-port? output-port?) + port? input-port? output-port? boolean=? symbol=?) (ikarus system $fx) (ikarus system $flonums) (ikarus system $pairs) @@ -128,8 +128,27 @@ (or (sys:eq? x y) (and (number? x) (number? y) (= x y))))) + (define boolean=? + (lambda (x y) + (if (sys:boolean? x) + (if (sys:eq? x y) + #t + (if (sys:boolean? y) + #f + (error 'boolean=? "~s is not a boolean" y))) + (error 'boolean=? "~s is not a boolean" x)))) + (define symbol=? + (lambda (x y) + (if (sys:symbol? x) + (if (sys:eq? x y) + #t + (if (sys:symbol? y) + #f + (error 'symbol=? "~s is not a symbol" y))) + (error 'symbol=? "~s is not a symbol" x)))) + (module (equal?) (define vector-loop (lambda (x y i n) diff --git a/src/makefile.ss b/src/makefile.ss index 8921525..734f7a3 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -244,6 +244,7 @@ '([void i] [not i r] [boolean? i r] + [boolean=? i r] [null? i r] [procedure? i r] [eof-object? i r] @@ -462,6 +463,7 @@ [exact->inexact i r] [inexact->exact i r] [symbol? i r symbols] + [symbol=? i r symbols] [gensym? i symbols] [gensym i symbols] [getprop i symbols] diff --git a/src/todo-r6rs.ss b/src/todo-r6rs.ss index dea2397..aff46ea 100755 --- a/src/todo-r6rs.ss +++ b/src/todo-r6rs.ss @@ -85,7 +85,7 @@ [assert S ba] [assertion-violation S ba] [atan S ba] - [boolean=? S ba] + [boolean=? C ba] [boolean? C ba] [car C ba] [cdr C ba] @@ -215,7 +215,7 @@ [string? C ba] [substring C ba] [symbol->string C ba] - [symbol=? S ba] + [symbol=? C ba] [symbol? C ba] [tan S ba] [truncate S ba]