Инструменты пользователя

Инструменты сайта


examination:flp:question14

NULL проверяет на пустой список


Встроенная функция NULL проверяет, является ли аргумент пустым списком:

_(null '())
> Т 
_(null(cddr '(a b c)))
> NIL  
_(null NIL)
> T
_(null T)
> NILL


Из последних двух примеров видно, что NULL работает как логическое отрицание, у которого в Лиспе есть и свой, принадлежащий логическим функциям, предикат (NOT х):

_(not (null nil))
> NIL 


Функции NULL и NOT можно выразить через EQ:

(NULL х) <<>> (EQ NIL х) 



LIST создает список из элементов

Другой часто используемой встроенной функцией является

(LIST x1 х2 х3...) 

которая возвращает в качестве своего значения список из значений аргументов. Количество аргументов функции LIST произвольно:

_(list 1 2)
> (1 2) 
_(list 'a 'b (+ 1 2)) 
> (А В 3) 
_(list 'a '(b c) 'd) 
> (A (B C) D)
_(list (list 'a) 'b NIL) 
> ((А) В NIL) 
_(list NIL)
> (NIL) 


Построение списков нетрудно свести к вложенным вызовам функции CONS, причем вторым аргументом последнего вызова является NIL, служащий основой для наращивания списка:

_(cons 'с NIL) ; <=> (list 'c) 
_(cons 'b ; <=> (list 'b 'c)
(cons 'с NIL))
> (В С)  
_(cons 'а ; <=> (list 'a 'b 'c) 
(cons 'b 
(cons 'с NIL))) 
> (A В С) 


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

examination/flp/question14.txt · Последние изменения: 2014/01/15 08:17 (внешнее изменение)