왜 이것이 작동하지 않는지 설명 할 수 있습니까? (이 기능은 if
에서 제일 먼저해야스키마 - if 문을 사용하는 구문
application: not a procedure;
expected a procedure that can be applied to arguments
given: 5
arguments...:
#<procedure:<>
10
왜 이것이 작동하지 않는지 설명 할 수 있습니까? (이 기능은 if
에서 제일 먼저해야스키마 - if 문을 사용하는 구문
application: not a procedure;
expected a procedure that can be applied to arguments
given: 5
arguments...:
#<procedure:<>
10
두 가지 방법으로 확인할 수 있습니다. 귀하의 코드가 정확하고 방금 그것을 잘못 (n
에 대한 나쁜 유형)라고했거나 코드가 실수로 삽입 표기법으로 작성되었습니다. 나는 모두를 설명합니다 :
통과 잘못된 인수
n
은 모든 데이터 유형이 될 수 있으며 심지어 절차가 될 수 있으며이 경우 코드 아무 문제가 없다 :
(define (compare-15 predicate-procedure argument)
(predicate-procedure 15 argument))
(define (compare-2 predicate-procedure argument)
(predicate-procedure 2 argument))
(functionName compare-15) ; ==> 3
(functionName compare-2) ; ==> 1
가
당신의 프로시 저는 <
과 인수를 비교하는 프로 시저로 제공된 프로 시저를 호출하고 있습니다.
사고 중위 LISP 방언에있는 모든 사람들은 하나의 공통 양식을 가지고있는 동안
알골 프로그래머는 fun(expr)
및 중위 x cmp y
을 접두사로 사용되며, 그 접두사 모든 방법 : (fun expr)
및 (cmd x y)
.
(define (function-name n)
(if (< n 10) ;; predicate expression
1 ;; consequent expression
3)) ;; alternative expression
(function-name 15) ; ==> 3
(function-name 2) ; ==> 1
제도는 모든 인수를 의미 인수 등의 기능을 가질 수 있기 때문에
가 첫 번째 위치에 놓을 수있어, 당신이 원하고 절차로 호출 할 수있는 수를 때까지 계획이 모르는 정확히 수 있습니다 뭔가 잘못 됐어.모든 프로 시저 호출이 응용 프로그램이라는 것을 알면 오류 메시지가 분명합니다. 프로 시저를 호출 할 예정이지만 변수 뒤에 n
이있었습니다. "인수에 적용될 수있는 절차를 예상했다. 주어진 : 5"아마도 지금 더 의미가 있습니까?
체계는 접두사 표기법을 사용 : 나는 문서를 다음, 그리고 난 오류 얻을 이유를 이해할 수 없다 : 나는 오류가
(define (functionName n)
(if (n < 10) ;;if condition
1 ;; then condition
3)) ;; else condition
을 중위가 아님).
1
내가 닭 계획에서 실행 다음
(functionName 2)
출력
(define (functionName n)
(if (< n 10) ;;if condition
1 ;; then condition
3)) ;; else condition
.
이 시도 :
(define (functionName n)
(if (< n 10)
1
3))
는 기억 제도는 모든 사업자 전에 피연산자를 이동해야한다는 것을 의미 접두사 표기법을 사용합니다. 즉, 이것은 잘못된 것입니다 : (n < 10)
이며 올바른 내용은 (< n 10)
입니다.