【问题标题】:Details of GNU Common Lisp's (type-of)GNU Common Lisp 的详细信息(类型)
【发布时间】:2011-12-01 13:12:54
【问题描述】:

如果在 REPL 我输入:

(type-of (make-array 5))

然后我得到响应:

(SIMPLE-VECTOR 5)

很公平。所以如果在 REPL 我输入:

(type-of (make-array (list 5 3 2)))

然后我得到响应:

(SIMPLE-ARRAY T (5 3 2))

我有两个问题。

  1. T 在这里告诉我什么?如果是NIL,那会告诉我什么?
  2. 我自己在哪里可以找到这个答案?我未能在(例如)Lisp HyperSpec 中找到答案。

【问题讨论】:

  • GNU Common Lisp(简称 GCL)和 GNU CLISP 是 Common Lisp 的两种不同实现。您无需使用各种实现名称标记一般问题。
  • 哦。谢谢你。不知道。

标签: lisp common-lisp clisp gnu-common-lisp


【解决方案1】:

(SIMPLE-ARRAY T (5 3 2)) 是一个简单的三个维度数组。 T 表示它是一个通用数组,可以包含任何元素类型。 T 是最通用的类​​型。

hyperspec 在此处记录类型 SIMPLE-ARRAY:

http://www.lispworks.com/documentation/HyperSpec/Body/t_smp_ar.htm

【讨论】:

  • 哦。谢谢!你的链接对我来说很难,但最终还是有用的!例如,我发现 (type-of (make-array 5 :element-type (integer 0 255))) 产生 (SIMPLE-ARRAY (UNSIGNED-BYTE 8) (5))。
【解决方案2】:

1) 如果 T 为 NIL,您将有一个 3D 数组,专门用于不存储数据(没有元素具有 NIL 类型;我相信所有类型都是 NIL 的超类型)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2015-01-28
    • 2015-08-13
    • 2013-12-09
    • 1970-01-01
    • 2018-06-27
    相关资源
    最近更新 更多