이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
장민석
가입: 2006년 9월 5일 올린 글: 165
|
올려짐: 2007년3월9일 12:20 주제: define 시 괄호 관련 |
|
|
조교님께서 올리신 [숙제를 시작하기 전에 꼭 읽어주세요] 공지를 보면
인용: |
코드:
(define f 1)
과 같이 정의하면 f는 함수가 아니라 정수가 되어 숙제에서 제시한 타입과 다르게 됩니다. 정확한 타입을 지키기 위해서는
코드:
(define (f) 1)
과 같이 정의하셔야만 제대로 된 채점결과가 나옵니다.
|
과 같은 부분이 있습니다. 그런데 scheme에서는 괄호 안은 언제나 프로시저나 스페셜 폼이 되어야 한다고 하셨잖아요. (define (f) 1)에서 (f) 부분은 이 룰의 예외인 것인가요? 그리고 이 경우엔 단순히 함수이름이라는 것을 표시하기 위한 용도로 괄호를 친 것인지요?
ps. 한 학기 동안 열심히 공부해보아요~ |
|
위로 |
|
|
이희종
가입: 2006년 3월 7일 올린 글: 50
|
올려짐: 2007년3월9일 13:06 주제: |
|
|
인용: | 단순히 함수이름이라는 것을 표시하기 위한 용도로 괄호를 친 것인지요? |
네, 맞습니다. special form인 define과 함께 정의된 문법의 일부라고 생각하시면 됩니다.
은 define을 통해 unit을 받아 1을 리턴하는 함수를 정의하는 한 방법입니다.
예를 들어 숫자 하나를 받아서 거기에 1을 더한 값을 돌려주는 함수는 코드: | (define (f x) (+ x 1)) | 과 같이 정의 할 수 있습니다. 이것은 엄밀히 말하면 코드: | (define f (lambda (x) (+ x 1))) | 의 syntactic sugar입니다. 프로그래밍의 편의를 위하여 동일한 뜻이지만 더 쉽게 사용 할 수 있도록 해 놓은 것이죠. |
|
위로 |
|
|
|