diff --git a/scheme/ikarus.symbols.ss b/scheme/ikarus.symbols.ss index fdef120..593f752 100644 --- a/scheme/ikarus.symbols.ss +++ b/scheme/ikarus.symbols.ss @@ -54,9 +54,13 @@ (die 'top-level-value "not a symbol" x)) (let ([v ($symbol-value x)]) (when ($unbound-object? v) - (die 'eval "unbound variable" - (string->symbol - (symbol->string x)))) + (raise + (condition + (make-undefined-violation) + (make-who-condition 'eval) + (make-message-condition "unbound variable") + (make-irritants-condition + (list (string->symbol (symbol->string x))))))) v))) (define top-level-bound? @@ -104,12 +108,8 @@ (if (procedure? v) v (lambda args - (let ([v ($symbol-value x)]) - (if ($unbound-object? v) - (die 'eval "unbound variable" - (string->symbol - (symbol->string x))) - (die 'apply "not a procedure" v))))))))) + (die 'apply "not a procedure" + (top-level-value x)))))))) (define string->symbol (lambda (x) diff --git a/scheme/last-revision b/scheme/last-revision index 9cb032d..3f6465f 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1558 +1559