Я пишу функцию на Common Lisp, но получаю ошибку, упомянутую в заголовке.
(defun sample (graph-id vertices)
(cond
((null vertices) nil)
(t
(and
(setf
(gethash (list graph-id (first vertices)) *keys*)
MOST-POSITIVE-DOUBLE-FLOAT)
(sample graph-id (rest vertices))))))
В частности, когда компилятор достигает строки (gethash (list graph-id (first vertices)) *vertex-keys*)
, если я поменяю местами graph-id (first vertices)
с (first vertices) graph-id
, ошибка исчезнет. Также исчезает, если я использую second
, third
или любые другие функции nth
вместо first
, я не могу понять, почему это происходит. vertices
— это список, подобный (A B C D E F)
(sample 0 '(A B C D E F))
с*keys*
, определенным как пустая хеш-таблица, и я не получаю ошибок в CLISP или SBCL. Как вы это называете и каково значение соответствующей глобальной переменной? - person Silvio Mayolo   schedule 27.12.2020(sample id '(A B C D E F))
, гдеid
равно'grafo
. Я полагаю, чтоMOST-POSITIVE-DOUBLE-FLOAT
— это константа, определенная в Лиспе, как здесь сказано ссылка - person giovannibrumana   schedule 27.12.2020cond
(например, чем-то вроде((t ...
) - person Renzo   schedule 27.12.2020