diff --git a/src/ikarus.boot b/src/ikarus.boot index 500dd0c..6999b0b 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.syntax.ss b/src/ikarus.syntax.ss index 839e5aa..e59f9c6 100644 --- a/src/ikarus.syntax.ss +++ b/src/ikarus.syntax.ss @@ -7,7 +7,8 @@ (library (ikarus syntax) (export identifier? syntax-dispatch environment environment? - eval generate-temporaries free-identifier=? syntax-error + eval generate-temporaries free-identifier=? + bound-identifier=? syntax-error eval-r6rs-top-level boot-library-expand eval-top-level) (import (r6rs) @@ -2260,6 +2261,13 @@ (free-id=? x y) (error 'free-identifier=? "~s is not an identifier" y)) (error 'free-identifier=? "~s is not an identifier" x)))) + (define bound-identifier=? + (lambda (x y) + (if (id? x) + (if (id? y) + (bound-id=? x y) + (error 'bound-identifier=? "~s is not an identifier" y)) + (error 'bound-identifier=? "~s is not an identifier" x)))) (define syntax-error (lambda (x . args) (unless (andmap string? args) diff --git a/src/makefile.ss b/src/makefile.ss index 356b943..3241406 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -408,6 +408,7 @@ [syntax-error i syncase] [generate-temporaries i syncase] [free-identifier=? i syncase] + [bound-identifier=? i syncase] [code? i] [immediate? i] [pointer-value i]