diff --git a/beautiful-racket-demo/basic-demo-3/expr.rkt b/beautiful-racket-demo/basic-demo-3/expr.rkt index 94bdca7..05c1969 100644 --- a/beautiful-racket-demo/basic-demo-3/expr.rkt +++ b/beautiful-racket-demo/basic-demo-3/expr.rkt @@ -1,4 +1,5 @@ #lang br +(require "line.rkt") (provide b-expr b-sum b-product b-neg b-expt b-def b-func) (define (b-expr expr) @@ -28,7 +29,10 @@ #'(set! FUNC-ID (λ (VAR-ID ...) EXPR)))) (define-macro (b-func FUNC-ID ARG ...) - #'(let ([result (FUNC-ID ARG ...)]) - (if (boolean? result) - (if result 1 0) - result))) + #'(if (procedure? FUNC-ID) + (let ([result (FUNC-ID ARG ...)]) + (if (boolean? result) + (if result 1 0) + result)) + (raise-line-error + (format "undefined function: ~a" 'FUNC-ID))))