Учебники

ЛИСП – Функции

Функция – это группа операторов, которые вместе выполняют задачу.

Вы можете разделить ваш код на отдельные функции. Как вы делите свой код между различными функциями, зависит от вас, но логически разделение обычно так, что каждая функция выполняет определенную задачу.

Определение функций в LISP

Макрос с именем defun используется для определения функций. Макросу defun нужны три аргумента –

  • Наименование функции
  • Параметры функции
  • Тело функции

Синтаксис для определения функции –

(defun name (parameter-list) "Optional documentation string." body)

Давайте проиллюстрируем концепцию на простых примерах.

Пример 1

Давайте напишем функцию с именем averagenum, которая будет печатать в среднем четыре числа. Мы вышлем эти цифры в качестве параметров.

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

(defun averagenum (n1 n2 n3 n4)
   (/ ( + n1 n2 n3 n4) 4)
)
(write(averagenum 10 20 30 40))

Когда вы выполняете код, он возвращает следующий результат –

25

Пример 2

Давайте определим и вызовем функцию, которая будет вычислять площадь круга, когда радиус круга указан в качестве аргумента.

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

(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 также допускает необязательные, множественные и ключевые аргументы.

  • Строка документации описывает назначение функции. Он связан с именем функции и может быть получен с помощью функции документации .

  • Тело функции может состоять из любого числа выражений Lisp.

  • Значение последнего выражения в теле возвращается как значение функции.

  • Вы также можете вернуть значение из функции, используя специальный оператор return-from .

Вы можете предоставить пустой список в качестве параметров, что означает, что функция не принимает аргументов, список пуст, записывается как ().

LISP также допускает необязательные, множественные и ключевые аргументы.

Строка документации описывает назначение функции. Он связан с именем функции и может быть получен с помощью функции документации .

Тело функции может состоять из любого числа выражений Lisp.

Значение последнего выражения в теле возвращается как значение функции.

Вы также можете вернуть значение из функции, используя специальный оператор return-from .

Давайте обсудим вышеупомянутые концепции вкратце. Нажмите на следующие ссылки, чтобы найти детали –

Необязательные параметры

Остальные параметры

Параметры ключевых слов

Возвращение значений из функции

Лямбда-функции

Функции картирования