Pau*_*ulM 1 lisp common-lisp coerce clozure-cl
我看到不同版本的Common Lisp之间有不同的强制行为-想知道哪个是“正确的”或在这个看似简单的问题上是标准的模棱两可:
是
(coerce '(1 2 3) 'array)
Run Code Online (Sandbox Code Playgroud)
正确的口吻?它在Clozure Common Lisp中工作正常,但在sbcl中却不能。
当不起作用时,将列表强制转换为数组的最简单方法是什么?
谢谢
该规范说:
如果result-type是的可识别子类型
vector,并且object是asequence,则结果是a且vector具有与object相同的元素。
array不是vector向量的子类型-向量是一维数组,但array包括任意维数的数组。
您可以使用其中之一
(coerce '(1 2 3) 'vector)
(coerce '(1 2 3) '(array t (*)))
Run Code Online (Sandbox Code Playgroud)
在第二个版本中,(*)指定一个未指定尺寸的尺寸。
您的使用是不确定的,因此实现可以随意实现。如果它返回一个值,则该值必须是ARRAY某种类型的。
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |