これは私の最初の日でDr.Racket
とR5RS
です。私は以下の共有コードを変更しようとしています。DrRacket:アプリケーション:プロシージャではないR5RS言語でエラー
;; This is an internal helper procedure.
;; - it gets the method out of "in-object"
;; - it invokes the method, passing "for-object" as the
;; "self" for the method.
;;
(define (apply-method in-object for-object message args)
(let ((method (get-method message in-object)))
(cond ((method? method)
(apply method for-object args))
((eq? in-object for-object)
(display method)
(error "No method for" message 'in
(safe-ask 'UNNAMED-OBJECT
in-object 'NAME)))
(else (error "Can't delegate" message
"from" (safe-ask 'UNNAMED-OBJECT
for-object 'NAME)
"to" (safe-ask 'UNNAMED-OBJECT
in-object 'NAME))))))
(define (get-method message object) ; single-inheritance
(object message))
このスニペットはかなり大きなプロジェクトの一部です。したがって、私は関連する部分だけを共有します。プロジェクト内で、このプロシージャが呼び出されたとき。 let
という式で始まる行にエラーがあります。エラーメッセージは次のようになります。
objsys.scm:53:2:アプリケーション:プロシージャではありません。与えられた引数
に適用することができ手続き を期待:
引数... #fを:問題を解決するために私を助けることができる誰もがあるのであれば
、私は疑問に思います。 EDIT
私は上記の誤用または非整列paranthesisのような構文エラーがあると思われるが、私はエラーの原因となる正確な場所を見つけることができません。
問題は、実装よりも 'apply-method'の使用法にあるようです。どこかに ''オブジェクト内 '' f 'が適用されています。 – molbdnilo