Решил, немного, just for fun посмотреть, что из себя представляет
LISP. До этого с ФП ниразу не сталкивался. В "Practical CL" есть такой код:
(defun save-db (filename)
(with-open-file (out filename
:direction :output
:if-exists :supersede)
(with-standard-io-syntax
(print *db* out))))
":direction :output :if-exists :supersede" -- являются передаваемыми
параметрами для макроса, т.е. фактически они все равноранговые.
Непонятно, как пары параметров (!) задают конкретный функционал ~
direction=output и if-exists=supersede. Я бы понял, если бы это выглядело примерно так ~
(list :direction 'output :if-exists 'supersede')
Объясните, пожалуйста, вкратце про такую семантику передачи аргументов? Спасибо.