Синтаксически ?
- это только один из многих символов, разрешенных в идентификаторах в Лиспе.Так что это просто часть имени функции.
По соглашению имена функций, заканчивающиеся на ?
, используются для функций, возвращающих логические значения.
В частности equal?
проверяет, равны ли два ее аргумента, null?
проверяет, является ли его аргумент пустым списком, а все остальные - проверками типа, то есть они проверяют, имеет ли их аргумент заданный тип.
Не могли бы вы привести несколько примеров, где этибудут использоваться записи?
Функции, возвращающие логические значения, чаще всего используются в условиях if
или cond
, поэтому вы можете увидеть нечто подобное в качестве примера функции, использующей null?
:
(define (sum lst)
(if (null? lst)
0
(+ (first lst) (sum (rest lst)))))