LISP - Функции
Функция - это группа операторов, которые вместе выполняют задачу.
Вы можете разделить свой код на отдельные функции. Как разделить код между различными функциями - решать вам, но логически разделение обычно таково, что каждая функция выполняет определенную задачу.
Определение функций в LISP
Макрос с именем defunиспользуется для определения функций. Вdefun макросу нужны три аргумента -
- Название функции
- Параметры функции
- Тело функции
Синтаксис для defun -
(defun name (parameter-list) "Optional documentation string." body)
Проиллюстрируем концепцию простыми примерами.
Пример 1
Напишем функцию с именем averagenum, которая будет печатать среднее четырех чисел. Мы отправим эти числа в качестве параметров.
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(defun averagenum (n1 n2 n3 n4)
(/ ( + n1 n2 n3 n4) 4)
)
(write(averagenum 10 20 30 40))
Когда вы выполняете код, он возвращает следующий результат -
25
Пример 2
Давайте определим и вызовем функцию, которая будет вычислять площадь круга, если в качестве аргумента указан радиус круга.
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(defun area-circle(rad)
"Calculates area of a circle with given radius"
(terpri)
(format t "Radius: ~5f" rad)
(format t "~%Area: ~10f" (* 3.141592 rad rad))
)
(area-circle 10)
Когда вы выполняете код, он возвращает следующий результат -
Radius: 10.0
Area: 314.1592
Обратите внимание, что -
В качестве параметров можно указать пустой список, что означает, что функция не принимает аргументов, список пуст и записывается как ().
LISP также допускает необязательные, множественные и ключевые аргументы.
Строка документации описывает назначение функции. Он связан с именем функции и может быть получен с помощьюdocumentation функция.
Тело функции может состоять из любого количества выражений Лиспа.
Значение последнего выражения в теле возвращается как значение функции.
Вы также можете вернуть значение из функции, используя return-from специальный оператор.
Обсудим кратко изложенные выше концепции. Щелкните следующие ссылки, чтобы узнать подробности -
Дополнительные параметры
Остальные параметры
Параметры ключевого слова
Возврат значений из функции
Лямбда-функции
Функции отображения