【SICP練習】103練習2.81-2.97
練習2-81
ここでは、186ページ目の作成テーブルの一部を再び使用する必要があります.もちろん、make-tableをこの問題にロードするだけで十分です.前のいくつかの問題で使ったapply-genericもあります.
a)Louisの強制プロセスをロードすると,2つの複素数に対してexpを呼び出すと,解釈器が仮死する.
b)Louisはこの問題を修正せず,逆にプログラムを無限ループにする.
c)このエラーを解決する方法はapply-genericが2つの入力パラメータのタイプが同じ場合に強制変換を停止させることである.
申し訳ありません:残りは完了します.
訪問ありがとうございます.ご協力をお願いします.注目やコレクション、コメント、いいねを歓迎します.
斧正と質問を得るために、転載は出典を明記してください.http://blog.csdn.net/nomasp
本文はNoMasp柯于旺のオリジナルの文章で、許可を得ずに転載することを厳禁します!私のブログへようこそ:http://blog.csdn.net/nomasp
ここでは、186ページ目の作成テーブルの一部を再び使用する必要があります.もちろん、make-tableをこの問題にロードするだけで十分です.前のいくつかの問題で使ったapply-genericもあります.
a)Louisの強制プロセスをロードすると,2つの複素数に対してexpを呼び出すと,解釈器が仮死する.
b)Louisはこの問題を修正せず,逆にプログラムを無限ループにする.
c)このエラーを解決する方法はapply-genericが2つの入力パラメータのタイプが同じ場合に強制変換を停止させることである.
(define (apply-generic op . args) (let ((type-tags (map type-tag args))) (let ((proc (get op type-tags))) (if proc (apply proc (map contents args)) (if (= (length args) 2) (let ((type1 (car type-tags)) (type2 (cadr type-tags)) (a1 (car args)) (a2 (cadr args))) (if (equal? type1 type2) (error "No method for these types" (list op type-tags)) (let ((t1->t2 (get-coercion type1 type2)) (t2->t1 (get-coercion type2 type1))) (cond (t1->t2 (apply-generic op (t1->t2 a1) a2)) (t2->t1 (apply-generic op a1 (t2->t1 a2))) (else (error "No method for these types" (list op type-tags))))))) (error "No method for these types" (list op type-tags)))))))
申し訳ありません:残りは完了します.
訪問ありがとうございます.ご協力をお願いします.注目やコレクション、コメント、いいねを歓迎します.
斧正と質問を得るために、転載は出典を明記してください.http://blog.csdn.net/nomasp
本文はNoMasp柯于旺のオリジナルの文章で、許可を得ずに転載することを厳禁します!私のブログへようこそ:http://blog.csdn.net/nomasp