2017-10-10 19 views
0

私は、係数のリストとx値を渡すことで多項式を評価するテール再帰関数を作成しています。スキームテール再帰関数の構文エラー

例:x^3 + 2x^2 + 5を評価すると、ユーザーは関数呼び出し(poly '(5 0 2 1)1)でリスト'(5 0 2 1)とxの1を渡します。 )。

私は次のエラー取得していますなぜ私は理解することはできません:あなたは最後の行でpoly-assistant前に左括弧が必要

if: bad syntax in: (if (null? (cdr lst)) (+ total (car lst)) eval-poly-tail-helper ((cdr lst) x (+ (* (expt x n) (car lst)) total) (+ 1 n)))

(define (poly lst x) 
    (poly-assistant lst x 0 0)) 


(define (poly-assistant lst x total n) 
    (if (null? (cdr lst)) 
     (+ total (car lst)) 
     poly-assistant((cdr lst) x (+ (* (expt x n) (car lst)) total) (+ 1 n)))) 
+0

あなた自身で宿題をしようとしてください!あなたのfix-my-codeの質問は話題にはなりません。 –

答えて

1

を。

Schemeでは、関数アプリケーションは左括弧で始まります。 ifは2または3のオペランドをとります。

括弧に一致するように優れたエディタ(例:emacs)を使用してください。

cdrより前の2つの左括弧は疑わしく見えます。必要なのは1つだけです。

Schemeデバッガを使用する方法、または少なくともデバッグプリントを追加する方法について学んでください。

+0

ありがとうございますが、実行後に次のエラーが表示されます。 アプリケーション:手順ではありません。 引数 に適用できるプロシージャが必要です。(0 4 1) 引数...: – Chriskt

+0

無視してください。実際にはエラーが見つかりました。あなたは正しいエディタを使用することが正しいと思います。 – Chriskt