
Lisp
文章平均质量分 79
乐征skyline
这个人的博客记录的都是一些胡思乱想,一些旁门左道、投机取巧的工具,以及一些文档/文献的翻译。
内容包括
1. Linux系统使用
2. Java/Android开发
3. Common Lisp相关知识(以后可能会有关于Scheme的)
4. 编程语言设计分析
5. 以后还会更新古典人工智能的技术。
对于评论,请不要期待我会回复,理由如下:
1. 懒!
展开
-
优秀的Lisp编程风格教程:第六章(译文)
(本文为草稿,校对时间待定)原文链接:https://norvig.com/luv-slides.ps。原创 2023-11-12 13:39:10 · 318 阅读 · 0 评论 -
优秀的Lisp编程风格教程:第五章(译文)
原文链接:https://norvig.com/luv-slides.ps。翻译 2023-11-05 08:44:37 · 148 阅读 · 0 评论 -
优秀的Lisp编程风格教程:第四章(译文)
语法抽象定义一个适合该问题的新语言。这是一种面向问题(相对于面向代码而言)的方法。...)翻译 2023-10-29 16:17:57 · 198 阅读 · 0 评论 -
优秀的Lisp编程风格教程:第三章(译文)
原文链接:https://norvig.com/luv-slides.ps。翻译 2023-10-08 08:31:40 · 134 阅读 · 0 评论 -
优秀的Lisp编程风格教程:第二章(译文)
原文链接:https://norvig.com/luv-slides.ps。翻译 2023-09-30 19:06:37 · 140 阅读 · 0 评论 -
关于Lisp的一己之见
Lisp是一种计算机编程语言,由约翰·麦卡锡(John McCarthy)于1958年发明。“Lisp”这个名称是“List Processing”的缩写,具有表处理的意思…以上大概是公认的比较权威的介绍,网络上很多资料大概都是这么讲的。从这些信息中可以看出,Lisp应该是一种和C、Java类似的计算机编程语言,是一种和中文、英文等所谓自然语言不同的、用来给计算机编程的语言,这或许是大部分人对它的印象。然而,在学习Lisp的过程中,感受到了很多与编程语言常识相背的地方,产生了一些感想,本文就表达一些自己对L原创 2022-02-14 10:26:21 · 3265 阅读 · 0 评论 -
300行Lisp根据语法和词法生成解析器
1. 概要无,作者自闭中。。。2. 代码(defun make-token (class-name data) (list class-name data))(defun make-string-scanner (scanner-spec) (lambda (str) (with-input-from-string (stream str) (scan-stream stream scanner-spec))))(defun make-stream-scan原创 2021-12-15 14:34:43 · 515 阅读 · 2 评论 -
编程语言概要(EOPL)-引言
编程语言概要(EOPL)-引言目标这本书是对编程语言的分析研究。我们的目标是对编程语言的基本概念提供一个深刻的理解。这些基本概念已被证明具有经久不衰的重要性;它们构成了理解编程语言未来发展的基础。这些基本概念大部分和程序元素的语义或含义相关。这些含义反映了在程序执行时如何解释程序元素。被称为解释器的程序提供了程序语义的最直接、可执行的表达式。它们通过直接分析程序文本的抽象表示来处理程序。因此,我们选择解释器作为主要工具来表达编程语言元素的语义。关于程序作为对象最有趣的问题是,“它做什么?”对解释器的翻译 2021-08-23 15:30:42 · 776 阅读 · 0 评论 -
编程语言概要(EOPL)-前言
这本书带你直面计算机编程的基本理念: 计算机语言的解释器只是另一个程序。这个听上去很明显,对吧?但是影响是意义深远的。如果你是一个计算理论家,解释器思想会让你回忆起歌德尔的形式逻辑系统的局限性的发现,图灵的通用计算机的概念,以及冯诺依曼的存储程序机器的基本概念。如果你是一个编程者,精通一个解释器的思想是强大力量的源泉。它引发了思维方式的真正转变,你思考编程方式的一种基本改变。在我学习解释器之前我做了很多编程工作,并且我生产了很多实质的程序。例如,其中一个程序是一个使用PL/I写的...翻译 2020-11-13 06:32:40 · 1269 阅读 · 0 评论 -
关于DSL的一些思考
前言随着近几年新语言(例如,rust、kotlin、dart等10后的语言)的出现,经常有同事问起“最近有个xx语言挺火,你怎么看”这类问题。这种情况下,一般都不太想回答(根本不知道从哪说起…)。平时身边的同事中是某个语言的用户或者说是依赖/利用某个语言来完成工作的居多,把某个语言用得如手脚般灵活的极少,把自己擅长的语言控制得如手术刀那样精细的更少,每次自己写的程序出了问题5分钟都查不出原因,我会把这样的情况归结为–程序失控了。没有办法,工作中很多时候都是赶鸭子上架,两天学一个语言,一天学框架,然后直接做原创 2020-07-28 14:46:02 · 1540 阅读 · 0 评论 -
CWCL 0.1:Lisp的样子
首先,我们来看几个 hello world 例子:示例 1. 打印5行helloworld英语:print 5 line "hello world"Lisp:(print 5 line "hello world") 或 (打印 5 行 "hello world")示例 2. 字符串"hello world"英语:the string "hello world"Lisp:(the string "hello world") 或 #T(字符串 "hello world")原创 2020-07-19 22:08:37 · 226 阅读 · 0 评论 -
CWCL 0.0:Lisp是什么
CWCL 0.0:Lisp是什么我们通常所说的Lisp是一种计算机编程语言,由约翰·麦卡锡(John McCarthy)于1958年提出。而Lisp名称是List Processing的缩写,具有表处理的意思…以上大概是公认的比较权威的介绍,网络上很多资料大概都是这么讲的。从这些信息中可以看出,Lisp应该是一种和C、Java类似的计算机编程语言,是一种和中文英文等所谓自然语言不同的、用来给计算机编程的语言,这或许是大部分计算机相关工作者和不懂计算机的普通用户的感觉。笔者在学习Lisp的过程中,感受到了很原创 2020-05-11 06:39:01 · 537 阅读 · 0 评论 -
转载:从图灵机到Emacs再到FPGA
从图灵机到Emacs再到FPGA转载自:https://www.dazhuanlan.com/2019/09/30/5d92171fa17c7/Emacs 就是 Lisp Machine在所有攻击Emacs的言论中,我最赞同也最具有杀伤力的一条是Emacs违背了UNIX的设计哲学。这当然一针见血,Emacs做了太多的事情,与采用搭积木哲学的UNIX格格不入。但事实上,“违背了UNIX的哲学”...转载 2020-04-28 12:10:43 · 516 阅读 · 0 评论 -
John McCarthy:LISP-关于它的过去和未来的记录-1980
John McCarthy:LISP-关于它的过去和未来的记录-1980本文翻译自John McCarthy 于1980年写的《LISP-NOTES ON ITS PAST AND FUTURE-1980》,原文地址:http://www-formal.stanford.edu/jmc/lisp20th/lisp20th.html摘要Lisp 已经存活了21年,因为它是编程语言领域的一个近似...翻译 2020-03-29 20:31:45 · 846 阅读 · 0 评论 -
列表生成的三种方式比较(原生语法、流、DSL)
列表生成的三种方式比较(原生语法、流、DSL)概述列表生成是平时开发中经常遇到的小功能。例如,生成一个0到n的列表,根据已有列表过滤一些元素来生成新列表等等。这样的问题一般几行或者十几行代码就处理掉了,也没有去注意。最近学习 Python 列表生成式的特性,在看到示例时联想到以前用 Java 和 Common Lisp 解决这类问题的方式,就写下本文来比较和总结各种方式的特点和优劣。三种方式...原创 2020-01-28 21:16:37 · 571 阅读 · 0 评论 -
在Android上运行ECL(Embeddable Common-Lisp)
0. 准备工作获取源码:git clone https://common-lisp.net/project/ecl/准备Android SDK 及 NDK (NDK要求r17c版本,可以访问 https://developer.android.google.cn/ndk/downloads/older_releases.html 找到)安装32位的glibc1. 构建主机 ECL# ...原创 2019-11-06 08:07:57 · 1078 阅读 · 0 评论 -
Common Lisp 八大排序算法示例
1. 冒泡排序(defun bubble-sort (arr) (dotimes (i (1- (length arr)) arr) (dotimes (j (- (length arr) i 1)) (if (> (elt arr j) (elt arr (1+ j))) (rotatef (elt arr j) (elt arr (1+ ...原创 2019-10-26 12:38:17 · 1662 阅读 · 0 评论 -
Common Lisp 超规范(译文):14.构造
14 构造(Conses) 14.1 构造的概念 14.2 构造的字典 14.1 构造的概念一个构造(cons)是一个有着称为 car 和 cdr 两部分的复合数据对象.car cons rplacd cdr rplaca Figure 14-1. 和构造相关的已定义的名字.根据上下文, 一组连接的构造可以以各种不同...翻译 2019-05-08 16:47:20 · 575 阅读 · 0 评论 -
Common Lisp 超规范(译文):13.字符
13 字符 13.1 字符概念 13.2 字符字典 13.1 字符概念 13.1.1 字符介绍 13.1.2 Introduction to Scripts and Repertoires 13.1.3 字符属性 13.1.4 字符类别 13.1.5 字符的等价 13.1.6 字符的顺序 13.1.7 字符的名字 13.1....翻译 2019-05-02 09:44:44 · 530 阅读 · 0 评论 -
Common Lisp 超规范(译文):15.数组
15 数组 15.1 数组的概念 15.2 数组的字典 15.1 数组的概念 15.1.1 数组元素 15.1.2 Specialized Arrays 15.1.1 数组元素一个数组包含了一个称为为元素的对象的集合, 它们可以通过一个直角坐标系统而被单独的引用. 15.1.1.1 数组索引 15.1.1.2 数...翻译 2019-05-16 22:04:48 · 428 阅读 · 0 评论 -
Common Lisp 超规范(译文):12.数字
12. 数字 12.1 数字的概念 12.2 数字的字典 12.1 Number Concepts 12.1.1 数值运算 12.1.2 依赖于具体实现的数字常量 12.1.3 有理数计算 12.1.4 浮点计算 12.1.5 复数计算 12.1.6 Interval Designators 12.1.7 随机状态运算 ...翻译 2019-05-02 09:42:58 · 1139 阅读 · 0 评论 -
Common Lisp 超规范(译文):11.包
11. 包 11.1 包概念 11.2 包字典 11.1 包概念 11.1.1 包的介绍 11.1.2 标准包 11.1.1 包的介绍一个包建立一个从名字到符号的映射. 在给定的任何时间, 都有一个包是当前的. 当前包是那个 *package* 的值的那个包. 当使用 Lisp 读取器时, 可能去引用不是当前包的包中的符号, 通过...翻译 2019-04-09 21:43:19 · 510 阅读 · 0 评论 -
Common Lisp 超规范(译文):9.状况
9. 状况 9.1 状况系统的概念 9.2 状况字典 9.1 状况系统的概念描述 Common Lisp 构造不仅仅是它们打算被使用情况下的行为 (见每个操作符声明的 “描述(Description)” 部分), 还有其他所有情况 (见每个操作符说明的 “异常情况(Exceptional Situations)”).一个情况(situation)是一个表达式...翻译 2019-03-29 15:34:27 · 780 阅读 · 0 评论 -
Common Lisp 超规范(译文):10.符号
10. 符号 10.1 符号概念 10.2 符号字典 10.1 符号概念下面这段列出了一些可应用于符号属性列表的已定义的名字.get remprop symbol-plist Figure 10-1. 属性列表已定义的名字下一段列出了一些可应用于创建和查询符号的已定义名字.copy-symbol keywordp symbol-...翻译 2019-03-29 15:34:56 · 537 阅读 · 0 评论 -
Common Lisp 超规范(译文):24.系统构造
24. 系统构造24.1 系统构造的概念24.2 系统构造的字典24.1 系统构造的概念24.1.1 加载24.1.2 特性24.1.1 加载去加载(load)一个文件[file]就是去把它的内容当作代码[code]并且执行[execute]那个代码[code]. 这个文件[file]可能包含源代码[source code]或编译后的代码[compiled code]...翻译 2019-08-18 16:35:34 · 382 阅读 · 0 评论 -
Common Lisp 超规范(译文):8.结构体
8. 结构体8.1 结构体的字典 宏 DEFSTRUCT 函数 COPY-STRUCTURE 宏 DEFSTRUCT语法(Syntax):defstruct name-and-options [documentation] {slot-description}*=> structure-namename-and-options::= s...翻译 2019-03-27 09:33:57 · 417 阅读 · 0 评论 -
Common Lisp 超规范(译文):16.字符串
16 字符串 16.1 字符串的概念 16.2 字符串的字典 16.1 字符串的概念16.1.1 字符串数组的含义因为所有字符串是数组, 所有可应用于数组的规则也可以应用于字符串. 见章节 15.1 (Array Concepts).比如, 字符串可以有填充指针, 并且字符串也服从应用于数组的元素类型提升的规则. 16.1.2 STRING ...翻译 2019-05-18 10:16:18 · 343 阅读 · 0 评论 -
Common Lisp 超规范(译文):17.序列
17 序列 17.1 序列的概念 17.2 关于测试函数的规则 17.3 序列的字典 17.1 序列的概念一个序列是多个元素的一个有序集合, 实现为一个向量或一个列表.序列可以由函数 make-sequence 创建, 其他创建 sequence 的子类型的对象的函数也可以 (比如, list, make-list, mapcar, 和 vector)....翻译 2019-05-21 19:38:38 · 398 阅读 · 0 评论 -
Common Lisp 超规范(译文):18.哈希表
18 哈希表 18.1 哈希表的概念 18.2 哈希表的字典 18.1 哈希表的概念 18.1.1 哈希表操作 18.1.2 修改哈希表的键 18.1.1 哈希表操作下面这段列出了一些可以应用于哈希表的已定义的名字. 下面规则应用于哈希表.– 一个哈希表只能关联一个值和一个给定的键. 对于一个给定的键如果尝试去添加第二个值, ...翻译 2019-05-22 15:27:17 · 389 阅读 · 0 评论 -
Common Lisp 超规范(译文):25.环境
25. 环境25.1 外部环境25.2 环境字典25.1 外部环境25.1.1 顶层循环25.1.2 调试工具25.1.3 环境查询25.1.4 时间25.1.1 顶层循环顶层循环是用户用来和 Common Lisp 系统正常交互的 Common Lisp 机制. 这个循环有时被称为 Lisp read-eval-print 循环[Lisp read-eval-p...翻译 2019-08-18 16:36:31 · 469 阅读 · 0 评论 -
Common Lisp 超规范(译文):23.读取器
23. 读取器23.1 读取器的概念23.2 读取器的字典23.1 读取器的概念23.1.1 Lisp 读取器的动态控制23.1.2 Lisp 读取器上的读取表大小写的影响23.1.3 一些读取器函数的参数转换23.1.1 Lisp 读取器的动态控制Lisp 读取器[Lisp reader]的各个方面可以被动态控制. 见章节 2.1.1 (读取表) 和章节 2.1....翻译 2019-08-18 16:34:11 · 344 阅读 · 0 评论 -
Common Lisp 超规范(译文):22.打印器
22. 打印器22.1 Lisp 打印器22.2 Lisp 美观打印器22.3 格式化输出22.4 打印器的字典22.1 Lisp 打印器22.1.1 Lisp 打印器概览22.1.2 打印器分派22.1.3 默认 Print-Object 方法22.1.4 打印器行为的示例22.1.1 Lisp 打印器概览Common Lisp 以打印文本的形式提供了大多数...翻译 2019-08-18 16:33:02 · 1220 阅读 · 0 评论 -
Pascal Costanza:极端片面的Lisp介绍
【LISP】Pascal Costanza:极端片面的Lisp介绍1 背景知识1.1 我为什么写这样一个介绍材料?这份材料的初稿是在2002年八月完成的,所以其中的描述,并不完全反应我现在的情况的情况。但是为了保持最初的原味,我决定不去修改它们。我现在的情况是这样的:过去的7年里,如果项目所需要的Java扩展已经存在,我就使用 Java。更往前算,我主要使用Wirth家族的语言...转载 2019-05-27 15:18:25 · 655 阅读 · 0 评论 -
Common Lisp 超规范(译文):3. 编译和求值
3. 编译和求值3.1 求值3.2 编译3.3 声明3.4 Lambda 列表3.5 函数调用中的错误检测3.6 遍历规则和副作用3.7 破坏性操作3.8 求值和编译的字典条目3.1 求值代码[code]的执行可以通过多种方式来完成, 从对表示一个程序[program]的表达式形式[form]的直接解释到一个编译器[compiler]生成的编译代码[compiled c...翻译 2018-12-01 15:58:22 · 1087 阅读 · 0 评论 -
Common Lisp 超规范(译文):21.流
21 流 21.1 流的概念 21.2 流的字典 21.1 流的概念 21.1.1 流的介绍 21.1.2 流变量 21.1.3 给标准函数的流参数 21.1.4 复合流上的限制 21.1.1 流的介绍流是一个对象, 它可以与输入或输出函数一起使用, 以确定该操作的字符或字节的适当源或接收器. 一个字符流是一个字符的源或接...翻译 2019-06-18 21:00:06 · 382 阅读 · 0 评论 -
Common Lisp 超规范(译文):20.文件
20 文件 20.1 文件系统概念 20.2 文件的字典 20.1 文件系统概念这个章节描述到文件系统的 Common Lisp 接口. 这个接口所使用的模型假定这些文件由文件名来命名, 这样一个文件名可以由一个路径名对象来表示, 并且给定一个路径名, 可以构造一条流, 连接到它所代表的文件名的文件.关于打开和关闭文件, 以及操作它们的内容的信息, 见章节 ...翻译 2019-06-08 14:41:41 · 436 阅读 · 0 评论 -
Common Lisp 超规范(译文):19.文件名
19 文件名 19.1 文件名概述 19.2 Pathnames 19.3 逻辑路径名 19.4 The Filenames Dictionary 19.1 文件名概述这里有很多种文件系统, 在它们的表面语法细节, 以及它们的潜在的能力和结构上都有很大的不同. 由 Common Lisp 提供的用于引用和操作文件的工具被选择与许多类型的文件系统兼容, 同...翻译 2019-06-07 09:51:10 · 407 阅读 · 0 评论 -
Common Lisp 超规范(译文):7.对象
7. Objects 7.1 对象创建和初始化 7.2 修改一个实例的类 7.3 重新初始化一个实例 7.4 元对象 7.5 槽 7.6 广义函数和方法 7.7 对象字典 7.1 对象创建和初始化广义函数 make-instance 创建并且返回一个类的实例. 第一个参数是一个类或者一个类的名字, 而剩余参数组成初始化参数列表.一个新的实...翻译 2019-03-27 09:33:34 · 519 阅读 · 0 评论 -
Common Lisp 超规范(译文):6.循环
6. 循环 6.1 LOOP 机制 6.2 迭代字典 6.1 LOOP 机制 6.1.1 Loop 机制概述 6.1.2 变量初始化和步进 6.1.3 值累积子句 6.1.4 终止测试子句 6.1.5 无条件执行子句 6.1.6 条件执行子句 6.1.7 其他子句 6.1.8 其他 Loop 特性的示例 6.1.9 Lo...翻译 2019-01-27 08:44:23 · 869 阅读 · 0 评论 -
Common Lisp 超规范(译文):5.数据和控制流
5. 数据和控制流 5.1 广义引用 5.2 退出点的控制转移 5.3 数据和控制流字典 5.1 广义引用 5.1.1 Places 和广义引用的概述 5.1.2 Places 的种类 5.1.3 基于 SETF 的其他宏的处理 5.1.1 Places 和广义引用的概述一个广义引用(generalized refer...翻译 2019-01-23 17:30:28 · 877 阅读 · 0 评论