호출할 프로시저와 입력을 찾아 겹친 계산의 결과를 예상해 봅니다. 호출과 정의를 구분하는 방법도 익힙니다.
프로그래밍 경험은 없어도 됩니다. 실행할 예제를 하나씩 플레이그라운드에 넣으면 결과를 볼 수 있습니다.
호출 읽기
(+ 2 3)결과
5첫 항목인 +는 호출할 프로시저의 이름입니다. 프로시저는 전달받은 값으로
연산을 수행합니다. 이때 전달하는 값을 인자라고 하며, 여기서는 2와 3입니다.
보통 호출은 다음과 같이 씁니다.
(할일 입력1 입력2 ...)리스펙스는 첫 항목을 평가해 프로시저를 구합니다. 이어서 입력 식을 왼쪽부터 계산하고, 그 값들을 인자로 전달해 프로시저를 호출합니다.
겹친 호출 읽기
(+ 10 (* 2 3))결과
16리스펙스는 +를 찾고 10을 평가한 다음 (* 2 3)을 계산합니다.
곱셈의 결과는 6입니다. 바깥 호출은 10과 6을 더합니다.
괄호는 각 호출의 입력을 묶습니다. 여기서는 곱셈이 덧셈 안에 있으므로
곱셈의 결과가 +의 인자가 됩니다.
정의 읽기
아래 프로시저는 재단 너비와 양쪽 도련의 합을 더합니다. 두 입력은 같은 단위를 씁니다.
(define (도련-포함-너비 재단-너비 도련)
(+ 재단-너비 도련))이 코드는 도련-포함-너비를 정의하며 아무것도 출력하지 않습니다.
이 프로시저는 인자 두 개를 받아 재단-너비와 도련라는 이름으로 사용합니다.
본문인 (+ 재단-너비 도련)는 프로시저를 호출할 때 실행됩니다.
define은 특수 형식입니다. 특수 형식마다 어느 부분을 평가할지 정하는
규칙이 있습니다. 여기서 (도련-포함-너비 재단-너비 도련)는 프로시저 이름과
입력 이름을 선언하는 부분이며, 호출이 아닙니다.
if, quote, lambda도 특수 형식입니다. 모두 괄호를 쓰지만
각 형식의 규칙을 알아야 어떤 부분이 실행되는지 알 수 있습니다.
직접 해 보기
실행하기 전에 결과를 예상해 보세요.
(+ 1 (* 2 (+ 3 4)))정답 보기
결과는 15입니다. 먼저 (+ 3 4)가 7을 반환합니다.
이어서 (* 2 7)이 14를, 마지막으로 (+ 1 14)가 15를 반환합니다.
앞의 정의에서 프로시저 이름, 입력 이름 두 개, 본문의 호출을 찾아보세요.
정답 보기
프로시저 이름은 도련-포함-너비입니다. 입력 이름은 재단-너비와 도련입니다.
프로시저를 실행하면 본문에서 이 두 이름의 값을 인자로 전달해 +를 호출합니다.
첫 프로그램에서 완전한 프로그램을 실행해 보세요.