2017-02-26 11 views
-1

だから私は、二次方程式の2つの根を評価し、一覧表示するには、この単純な式があります。Lisp-「[関数名]は数字ではない」

(defun QUADRATIC (A B C) (list (/ (+ (- B) (sqrt(- (* B B) - (* 4 A C)))) (* 2 A)) (/ (- (- B) (sqrt(- (* B B) - (* 4 A C)))) (* 2 A)))) 

をしかし、私はすべての3とCLISPでそれを評価する際に(quadratic 2 2 2) is not a number

私は簡単に修正があります確信しているが、私はそれを把握することはできません。パラメータの数値は、私は次のエラーを取得する

(quadratic 2 2 2) 
を言います!

+0

ほとんどのプログラミング言語では、書式なしのコードは1行に表示されません。 Lisp。それが改善する必要があるのは初めてです。 –

答えて

1

定義に構文エラーがあります(この種のエラーを見つけるのにコードヘルプを適切にフォーマットするエディタを使用してください)。

正しい定義は次のとおりです。(sqrt(- (* B B) - (* 4 A C)))) (* 2 A))(第2 -):

(defun quadratic (A B C) 
    (list (/ (+ (- B) (sqrt(- (* B B) (* 4 A C)))) 
       (* 2 A)) 
      (/ (- (- B) (sqrt(- (* B B) (* 4 A C)))) 
       (* 2 A)))) 

あなたはsqrt呼び出しに余分な-を持っていながら。

特定のエラーメッセージの理由は、機能位置に使用されていない-が現在のフォームを参照する特別な変数であることです(specificationを参照)。

+0

ありがとうございました!それを固定した私はまだこのLISPの接頭辞表記に慣れていません。私はここでより巧妙な問題があると思っていましたが、文法上の誤りが質問に値するかどうかは分かりません。私はNotepad ++を使用しています。これは良いエディタがないためです。 –

関連する問題