Вы научитесь находить процедуру и её входные данные в вызове и вычислять результат вложенного выражения. Вы также сможете отличить вызов от определения.
Опыт программирования не нужен. Запускайте примеры по одному на площадке, чтобы увидеть результат.
Прочитайте вызов
(+ 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.
В определении выше найдите имя процедуры, два имени входных данных и вызов в её теле.
Показать ответ
Процедура называется ширина-с-вылетом. Входные данные названы ширина-обреза и вылет.
При выполнении процедуры её тело вызывает + со значениями этих двух имён.
Перейдите к разделу Первая программа, чтобы запустить полную программу.