📝 Lisp教程

33篇技术文档
  LISP-字符

📅  最后修改于: 2020-11-03 07:11:30        🧑  作者: Mango

在LISP中,字符表示为字符类型的数据对象。您可以在字符本身之前在#\之前表示一个字符对象。例如,#\ a表示字符a。空格和其他特殊字符可以在字符名称之前用#\表示。例如,#\ SPACE表示空格字符。以下示例演示了这一点-例创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。现场演示当您执行代码时,它返回以下结果-特殊字符通用LISP允许在代码中使用以下特殊字符。它们被称为半标...

  LISP-阵列

📅  最后修改于: 2020-11-03 07:12:26        🧑  作者: Mango

LISP允许您使用make-array函数定义一维或多维数组。数组可以存储任何LISP对象作为其元素。所有阵列均包含连续的内存位置。最低地址对应于第一个元素,最高地址对应于最后一个元素。数组的维数称为其秩。在LISP中,数组元素由一系列非负整数索引指定。序列的长度必须等于数组的秩。索引从零开始。例如,要创建一个包含10个单元的数组my-array,我们可以编写-aref函数允许访问单元格的内容。它...

  LISP-字符串

📅  最后修改于: 2020-11-03 07:13:21        🧑  作者: Mango

Common Lisp中的字符串是向量,即一维字符数组。字符串字面量用双引号引起来。字符集支持的任何字符都可以用双引号引起来,以构成一个字符串,除了双引号字符(“)和转义字符(\)之外。但是,可以通过用反斜杠(\)进行转义来包括这些字符。例创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。现场演示当您执行代码时,它返回以下结果-字符串比较功能数值比较函数和运算符(例如<和>)不...

  LISP-序列

📅  最后修改于: 2020-11-03 07:14:37        🧑  作者: Mango

序列是LISP中的抽象数据类型。向量和列表是此数据类型的两个具体子类型。序列数据类型上定义的所有功能实际上都应用于所有向量和列表类型。在本节中,我们将讨论序列上最常用的函数。在开始各种操作序列(即向量和列表)的方法之前,让我们看一下所有可用函数的列表。创建一个序列函数make-sequence允许您创建任何类型的序列。该函数的语法是-它创建一个类型为sqtype和长度为sqsize的序列。您可以选...

  LISP-列表

📅  最后修改于: 2020-11-03 07:15:20        🧑  作者: Mango

在传统的LISP中,列表是最重要和最主要的复合数据结构。当今的Common LISP提供其他数据结构,例如向量,哈希表,类或结构。列表是单个链接列表。在LISP中,列表被构造为名为cons的简单记录结构的链链接在一起。缺点记录结构缺点是一种包含两个组成部分的记录结构,分别称为car和cdr。缺点单元格或缺点是对象是使用函数缺点创建的值对。cons函数接受两个参数,并返回一个包含两个值的新cons单...

  LISP-符号

📅  最后修改于: 2020-11-03 07:15:49        🧑  作者: Mango

在LISP中,符号是代表数据对象的名称,有趣的是,它也是数据对象。使符号与众不同的原因是它们具有一个称为属性列表或plist的组件。物业清单LISP允许您将属性分配给符号。例如,让我们有一个“人”对象。我们希望此“人”对象具有属性,例如名称,性别,身高,体重,地址,职业等。属性就像属性名称。属性列表被实现为具有偶数个元素(可能为零)的列表。列表中的每一对元素都构成一个条目。第一项是指标,第二项是值...

  LISP-矢量

📅  最后修改于: 2020-11-03 07:16:16        🧑  作者: Mango

向量是一维数组,因此是数组的子类型。向量和列表统称为序列。因此,到目前为止,我们讨论的所有序列泛型函数和数组函数都适用于向量。创建向量向量函数可让您制作具有特定值的固定大小的向量。它接受任意数量的参数,并返回包含这些参数的向量。例子1创建一个名为main.lisp的新源代码文件,然后在其中键入以下代码。现场演示当您执行代码时,它返回以下结果-请注意,LISP使用#(…)语法作为向量的字面量表示法。...

  LISP-设置

📅  最后修改于: 2020-11-03 07:17:05        🧑  作者: Mango

Common Lisp不提供设置的数据类型。但是,它提供了许多功能,可以对列表执行设置操作。您可以根据各种条件在列表中添加,删除和搜索项目。您还可以执行各种设置操作,例如:并集,交集和设置差。在LISP中实现集像列表这样的集合通常是根据con单元实现的。但是,由于这个原因,集合越大,集合操作的效率就越低。伴随函数使您可以构建集合。它接受一个项目和一个代表集合的列表,并返回一个代表该集合的列表,其中...

  LISP-树

📅  最后修改于: 2020-11-03 07:17:38        🧑  作者: Mango

您可以从cons单元构建树数据结构,作为列表列表。要实现树结构,您将必须设计将以特定顺序遍历cons单元的功能,例如,二叉树的前顺序,后顺序和后顺序。树作为列表清单让我们考虑由cons单元组成的树结构,这些结构形成以下列表列表-((1 2)(3 4)(5 6))。用图解法,它可以表示为-LISP中的树函数尽管大多数情况下,您将需要根据特定需要编写自己的树功能,但是LISP提供了一些可以使用的树功能...

  LISP-哈希表

📅  最后修改于: 2020-11-03 07:18:17        🧑  作者: Mango

哈希表数据结构表示基于键的哈希码组织的键和值对的集合。它使用键来访问集合中的元素。当需要使用键访问元素时,可以使用哈希表,并且可以识别有用的键值。哈希表中的每个项目都有一个键/值对。该键用于访问集合中的项目。在LISP中创建哈希表在Common LISP中,哈希表是通用集合。您可以将任意对象用作键或索引。将值存储在哈希表中时,您将创建一个键值对,并将其存储在该键下。稍后,您可以使用相同的键从哈希表...

  LISP-输入和输出

📅  最后修改于: 2020-11-03 07:19:16        🧑  作者: Mango

常见的LISP提供许多输入输出功能。我们已经使用了format函数和print函数进行输出。在本节中,我们将研究LISP中提供的一些最常用的输入输出功能。输入功能下表提供了LISP最常用的输入功能-Sr.No.Function & Description1read& optionalinput-stream eof-error-p eof-value recursive-pIt reads in ...

  LISP-文件I / O

📅  最后修改于: 2020-11-03 07:19:52        🧑  作者: Mango

我们讨论了普通LISP如何处理标准输入和输出。所有这些功能也可用于读取和写入文本和二进制文件。在这种情况下,唯一的区别是我们使用的流不是标准的输入或输出,而是为写入或读取文件的特定目的而创建的流。在本章中,我们将了解LISP如何创建,打开,关闭文本或二进制文件进行数据存储。文件表示字节序列,无论是文本文件还是二进制文件都没有关系。本章将带您了解文件管理的重要功能/宏。开启档案您可以使用打开函数来创...

  LISP-结构

📅  最后修改于: 2020-11-03 07:20:14        🧑  作者: Mango

结构是用户定义的数据类型之一,它允许您组合不同种类的数据项。结构用于表示记录。假设您想跟踪图书馆中的书籍。您可能需要跟踪每本书的以下属性-标题作者学科书号定义结构LISP中的defstruct宏允许您定义抽象记录结构。defstruct语句定义了一种新的数据类型,该程序具有多个成员。为了讨论defstruct宏的格式,让我们编写Book结构的定义。我们可以将书的结构定义为-请注意上面的声明创建了一...

  LISP-软件包

📅  最后修改于: 2020-11-03 07:20:51        🧑  作者: Mango

用编程语言的总称来说,一个包旨在提供一种使一组名称彼此分开的方法。在一个程序包中声明的符号不会与在另一个程序包中声明的相同符号冲突。这样,程序包减少了独立代码模块之间的命名冲突。LISP阅读器会维护一个表,其中包含已找到的所有符号。当找到新的字符序列时,它将创建一个新的符号并将其存储在符号表中。该表称为包。当前软件包由特殊变量* package *引用。LISP中有两个预定义的程序包-common...

  LISP-错误处理

📅  最后修改于: 2020-11-03 07:21:40        🧑  作者: Mango

在Common LISP术语中,异常称为条件。实际上,条件比传统编程语言中的异常更笼统,因为条件表示任何出现,错误与否,这可能会影响函数调用堆栈的各个级别。LISP中的条件处理机制以这样的方式处理此类情况:在调用堆栈上的上层代码可以继续工作的同时,条件被用来发出警告(例如通过打印警告)。LISP中的条件处理系统包含三个部分:发出状况信号处理条件重新启动程序处理条件让我们举一个处理因零除条件引起的条...