2017-02-26 14 views
-1

그래서 나는 이차 방정식의 두 뿌리 평가하고 목록에이 간단한 표현이 있습니다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)))) 

을하지만을 나는 어떤 세와 CLISP에서 평가하는 경우 내가 쉽게 수정이 확신하지만 난 그것을 알아낼 수 없습니다 (quadratic 2 2 2) is not a number

: 매개 변수 번호, 나는 다음과 같은 오류가

(quadratic 2 2 2) 

말!

+0

한 줄로 된 형식없는 코드는 대부분의 프로그래밍 언어에서 읽을 수 없게 보입니다. Lisp. 그게 당신이 향상시킬 필요가 처음 것입니다. –

답변

1

정의에 구문 오류가 있습니다 (그리고 이런 종류의 오류를 발견 할 때 코드 도움말을 올바르게 형식화하는 편집기 사용).

올바른 정의는 다음과 같습니다 (sqrt(- (* B B) - (* 4 A C)))) (* 2 A)) (두 번째 -) :

(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 ++를 사용하고있다. –