Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > Определение функции с "готовыми параметрами"


Автор: Joil 13.3.2008, 12:00
Есть функция: (defun ksng(v r c), где v и r это списки а с это nil. Возможноли написать функцию так, чтобы вводилось только v и r: (ksng '(1 2 3 4 5) '(1 2 3 4 5)), но при этом оставалась переменная c но, со значением nil.
Функция ksng рекурсивная, и при первом вызове собой, значением c уже является не nil, а спискок.

Автор: VH_ 13.3.2008, 12:48
Для CommonLisp (и XLisp):
Код

(defun ksng (v r &optional (c значение_по_умолчанию))

если значение по умолчанию nil, возможна сокращенная форма
Код

(defun ksng (v r &optional c)

Автор: Joil 15.3.2008, 15:10
Пасиб, нашел немного другое решение:
Код

(defun ksng(v r) (ksng1 v r nil)
)
(defun ksng1(v r c)
...

Автор: VH_ 15.3.2008, 15:58
Можно объединить обе функции в одно «выражение», используя форму (labels (<binding>…) <expr>…), при этом избегая лишних «видимых снаружи» имен функций.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)