Я абсолютный новичок в Лиспе.Рассмотрим два следующих примера:
guile -c "(display 2)" # prints 2
guile -c "display 2" # doesn't print 2
Я думал о паренах как о конструкторах списков, полагая, что они не нужны для группировки на этом языке, поскольку нет приоритета операторов.Но в этом случае кажется, что у паренов есть эффект оценки выражения, что, я думаю, действует как своего рода сопоставление с образцом: если интерпретатор видит нечто, похожее на display X
, определение display
заставляет это преобразовать это во что-то еще.
Правильно ли я интерпретирую это поведение?Если это так, то как мне сгенерировать список, первым элементом которого была бы функция display
?
Если у паренов есть эффект запуска вычисления, то это особый случай, который происходит только тогда, когда первый элементиз списка есть функция?Например, я могу сделать это
guile -c "(display display)"
, который выводит описание типа и имени функции display
.