LISP - 数据类型


在 LISP 中,变量没有类型化,但数据对象有类型化。

LISP 数据类型可分为以下几类。

  • 标量类型- 例如数字类型、字符、符号等。

  • 数据结构- 例如列表、向量、位向量和字符串。

任何变量都可以将任何 LISP 对象作为其值,除非您已显式声明它。

虽然没有必要为 LISP 变量指定数据类型,但是,它有助于某些循环扩展、方法声明以及我们将在后面的章节中讨论的其他一些情况。

数据类型按层次结构排列。数据类型是一组 LISP 对象,并且许多对象可能属于一个这样的集合。

typep谓词用于查找对象是否属于特定类型。

type -of函数返回给定对象的数据类型。

LISP 中的类型说明符

类型说明符是系统定义的数据类型符号。

大批 固定数 包裹 简单字符串
Atomics 漂浮 路径名 简单向量
比格努姆 功能 随机状态 单浮点
少量 哈希表 比率 标准字符
位向量 整数 合理的 溪流
特点 关键词 可读表 细绳
[常见的] 列表 顺序 [字符串字符]
编译函数 长浮动 短浮动 象征
复杂的 有符号字节 t
缺点 无效的 简单数组 无符号字节
双浮点 数字 简单位向量 向量

除了这些系统定义的类型之外,您还可以创建自己的数据类型。当使用defstruct函数定义结构类型时,结构类型的名称将成为有效的类型符号。

实施例1

创建名为 main.lisp 的新源代码文件并在其中键入以下代码。

(setq x 10)
(setq y 34.567)
(setq ch nil)
(setq n 123.78)
(setq bg 11.0e+4)
(setq r 124/2)

(print x)
(print y)
(print n)
(print ch)
(print bg)
(print r)

当您单击“执行”按钮或键入 Ctrl+E 时,LISP 会立即执行它,返回的结果是 -

10 
34.567 
123.78 
NIL 
110000.0 
62

实施例2

接下来让我们检查一下上一个示例中使用的变量的类型。创建名为 main.c 的新源代码文件。lisp 并在其中键入以下代码。

(defvar x 10)
(defvar y 34.567)
(defvar ch nil)
(defvar n 123.78)
(defvar bg 11.0e+4)
(defvar r 124/2)

(print (type-of x))
(print (type-of y))
(print (type-of n))
(print (type-of ch))
(print (type-of bg))
(print (type-of r))

当您单击“执行”按钮或键入 Ctrl+E 时,LISP 会立即执行它,返回的结果是 -

(INTEGER 0 281474976710655) 
SINGLE-FLOAT 
SINGLE-FLOAT 
NULL 
SINGLE-FLOAT 
(INTEGER 0 281474976710655)