diff --git a/lib/srfi/229.sld b/lib/srfi/229.sld index b19589c2..08fa1c7d 100644 --- a/lib/srfi/229.sld +++ b/lib/srfi/229.sld @@ -1,6 +1,6 @@ (define-library (srfi 229) - (import (scheme base) (scheme case-lambda) (chibi ast)) + (import (scheme base) (scheme case-lambda) (chibi ast) (only (chibi) opcode?)) (export case-lambda/tag lambda/tag procedure/tag? procedure-tag) (begin (define procedure-tag-object (list 'procedure-tag)) @@ -20,6 +20,7 @@ (procedure->tagged (case-lambda . clauses) tag-expr)))) (define (procedure/tag? f) (and (procedure? f) + (not (opcode? f)) (let ((vars (procedure-vars f))) (and (vector? vars) (> (vector-length vars) 1) diff --git a/lib/srfi/229/test.sld b/lib/srfi/229/test.sld index be3408c2..95ef9c33 100644 --- a/lib/srfi/229/test.sld +++ b/lib/srfi/229/test.sld @@ -16,6 +16,7 @@ (* x x))) (test-assert (procedure/tag? f)) (test-not (procedure/tag? (lambda (x) (* x x)))) + (test-not (procedure/tag? +)) (test 9 (f 3)) (test 42 (procedure-tag f)) (test-not (eqv? f f*))