首页 > 解决方案 > 尝试一一打印数组元素时,在 CLISP 中出现错误“变量 AREF 没有值”

问题描述

我试图在 CLISP 中打印一个数组的值,我写了下面的函数:

(setq x (make-array '5 :initial-contents '(a b c d e)))
(loop for i from 0 to 4 do (write aref x i))

但我收到错误

*** - PROGN: variable AREF has no value 
      The following restarts are available:
 USE-VALUE      :R1      Input a value to be used instead of AREF.
 STORE-VALUE    :R2      Input a new value for AREF.

我对 CLISP 完全陌生,不明白为什么会出现上述错误。

标签: lispcommon-lispclisp

解决方案


AREF是一个函数,而不是一个变量。您在它周围缺少一组括号(aref x i)::

(loop for i from 0 to 4 do (write (aref x i)))

要不就

(loop for e across x do (write e))

PS。请注意,这write是一个相对较低级别的功能。您可能想使用printor的变体princ


推荐阅读