首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Emacs 折腾记

我工作倒并没有用得到 Lisp 的地方,但是最近眼前晃过的一些书,比如《计算机程序的构造和解释》、《码农》杂志第 13 期,都对这门古老的语言推崇备至,还有垠神也撰文《Lisp 已死,Lisp 万岁!...Common Lisp 开发环境 学习 Common Lisp 是使用 Emacs 最主要的任务,配好了文本编辑,当然得先把 Common Lisp 开发环境配置好了。...本来什么也不用配置的情况下 M-x ielm 就能进入一个 Emacs Lisp 的 REPL,但是它与 Common Lisp 毕竟还是有区别,所以还是另配置一个。...Update: 后来经验证,发现实际上是 sbcl 在安装过程写的环境变量没有生效导致的,sbcl 在安装过程中会设置两个环境变量,新建一个 SBCL_HOME 值为 sbcl 安装路径,在 PATH...Server 启动后会读取和加载配置文件,使用 emacsclientw.exe 打开文件时就不用再读取加载配置文件了,而是直接作为 Client 连接到 Server,这样基本能实现文件秒开。

1.8K10

Emacs 折腾记

Common Lisp 开发环境 学习 Common Lisp 是使用 Emacs 最主要的任务,配好了文本编辑,当然得先把 Common Lisp 开发环境配置好了。...本来什么也不用配置的情况下 M-x ielm 就能进入一个 Emacs Lisp 的 REPL,但是它与 Common Lisp 毕竟还是有区别,所以还是另配置一个。...在 ~/.emacs 文件里加上: M-x slime 就可以进入到 REPL 进行 Common Lisp 的学习了。...在 ~/.emacs 文件里添加: 这样自动补全之类的就没有问题了。 然后在如何运行当前 py 文件这件事上遇到些问题。在 Vim 我一直是用 :!...Server 启动后会读取和加载配置文件,使用 emacsclientw.exe 打开文件时就不用再读取加载配置文件了,而是直接作为 Client 连接到 Server,这样基本能实现文件秒开。

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

如何用Python编写一个Lisp解释器

几年前,作者曾展示过如何用 Java 和 Common Lisp 写 Schema 解释器。而本次的目的很纯粹,作者会尽可能简明扼要为大家进行介绍。 了解这些有多重要呢?...这和 Java 的 counterpart 类似,但 Schema 不同,一些运算符号, + 和 > 也是标识符,和 A 及 fn 的地位是平等的。...Lisp 的一个伟大之处就在于交互式 read-eval-print 循环:为编程者提供了输入表达式,并立即读取,计算,然后输出的途径,而非冗长的构建/编译/运行过程。...注意用于引用变量的句子变了:现在我们必须调用 env.find(x) 来查找变量 x 在哪一层;然后该层取出 x 的值。...然而,他们当时造出的 Lisp 虽然善于读取 Lisp 表达式,但读取Lisp 表达式时,慢得令人发指。 于是,作者和 Tony 分道扬镳了。

1.3K40

Clojure与LispClojure与Lisp

(艾伦·凯) "任何C或Fortran程序复杂到一定程度之后,都会包含一个临时开发的、只有一半功能的、不完全符合规格的、到处都是bug的、运行速度很慢的Common Lisp实现。"...1984年,改良自MacLisp、集各版本大成、跨平台、且被目为事实标准的Common Lisp诞生。至1994年,美国国家标准学会(ANSI)对Common Lisp语言进行了标准化。...2 函数也是一种数据类型 在Lisp语言中,函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation),能够储存在变量,也能当作参数传递。...你可以在读取期编译或运行代码;也可以在编译期读取或运行代码;还可以在运行期读取或者编译代码。...在读取期运行代码,使得用户可以重新调整(reprogram)Lisp的语法; 在编译期运行代码,则是Lisp宏的工作基础; 在运行期编译代码,使得Lisp可以在Emacs这样的程序,充当扩展语言(extension

1.9K30

excel宏编程 c语言,宏(巨集)

Lisp类语言Common Lisp和Scheme有更精巧的宏系统: 宏的行为如同是函数对自身程序文本的变形,并且可以应用全部语言来表达这种变形。...一些宏语言,比如Great Plains会计软件的 Dexterity 运行时引擎,不能从其它数据源(由逗号分隔的文本文件)导入数据。...例如,可以对Microsoft Excel宏编程扩展样式表或文本文件读取数据并创建 Great Plains .mac 文件,这一文件被用于将特定的数据导入 Great Plains....宏语言并未在通用编程中广泛使用,但在文本处理程序应用普遍。...其它的包括宏语言的项目,OpenOffice.org,故意其宏语言中排除了一些功能(:自动执行)以避免破坏程序。然而,这一特性在很多事务受到欢迎。

1.6K20

Clojure 运行原理之编译器剖析

一般来说,编译器包括两个部分: 前端:词法分析 → 语法分析 → 语义分析 后端:分析、优化 → 目标代码生成 Clojure 的编译器也遵循这个模式,大致可以分为以下两个模块: 读取 Clojure...LispReader.java 一般来说,具有复杂语法的编程语言会把词法分析与语法分析分开实现为 Lexer 与 Parser,但在 Lisp 家族,源程序的语法就已经是 AST 了,所以会把 Lexer...与 Common Lisp 不同,普通用户无法扩展 Clojure 里面的read table。...关于扩展read table的好处,可以参考 StackOverflow 上的 What advantage does common lisp reader macros have that Clojure...每个文件生成一个__init 的加载类 gen-class 生成固定名字的类,方便与 Java 交互 生成的 bytecode 会在本系列第二篇文章详细介绍,敬请期待。

95830

为什么Lisp语言如此先进?(译文)

Lisp是无意中纯理论发展为编程语言,而Fortran从一开始就是作为编程语言设计出来的。但是,今天我们把Lisp看成高级语言,而把Fortran看成一种相当低层次的语言。...在Lisp语言中,函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation),能够储存在变量,也能当作参数传递。...符号实际上是一种指针,指向储存在哈希表的字符串。所以,比较两个符号是否相等,只要看它们的指针是否一样就行了,不用逐个字符地比较。   8....Lisp并不真正区分读取期、编译期和运行期。你可以在读取期编译或运行代码;也可以在编译期读取或运行代码;还可以在运行期读取或者编译代码。...在读取期运行代码,使得用户可以重新调整(reprogram)Lisp的语法;在编译期运行代码,则是Lisp宏的工作基础;在运行期编译代码,使得Lisp可以在Emacs这样的程序,充当扩展语言(extension

1.2K60

2023 想进 BAT 的快来,20 道JavaScript必须要面对的面试题()

解释如何使用 JavaScript 读取和写入文件? readFile()函数用于读取操作。...如何在 JavaScript 中将任何基数的字符串转换为整数? 在 JavaScript ,parseInt() 函数用于将字符串转换为整数。...alert框将显示一个按钮,即“确定”按钮。它是用来通知用户必须同意的协议。但是“confirm”框显示两个按钮“确定”和“取消”,用户可以在其中决定是否同意。 9....JavaScript 不是概念级的作用域,在任何函数声明的变量在函数内部都有作用域。 17. 如何在 JavaScript 创建通用对象?...它用于所选元素删除焦点。此方法启动模糊事件,也可以附加到函数以在发生模糊事件时运行。 20.JavaScript 的 unshift 方法是什么? 它用于在数组的前面插入元素。

16360

Lisp的本质(The Nature of Lisp)学习思考

Lisp函数的角色十分特殊, 函数也是一种数据类型, 就像整数和字符串一样, 因此可以把它赋值给符号。乘法函数Lisp的内置函数, 默认赋给*, 你可以把其他函数赋值给*, 那样*就不代表乘法了。...Lisp的函数是一种数据类型, 和整数, 字符串, 符号等等一样。一个函数并不必然有一个名字, 这和C++或者Java语言的情形很不相同。在这里函数自己代表自己。..., 当程序启动时, 文件读取这些数据并显示给用户。...例如, 上面曾经将过的C的求三次方的宏, 用Lisp来写是这样子: (defmacro triple (x) `(+ ~x ~x ~x)) (译注: 在Common Lisp, 此处的单引号应当是反单引号..., 意思是对表不求值, 但可以对表某元素求值, 记号~表示对元素x求值, 这个求值记号在Common Lisp应当是逗号。

1.7K60

​70行Go代码打败C

字数、字节数或字符数的程序命令)就变成了一种大家趋之若鹜的游戏,可以用来挑战的编程语言列表如下: Ada C Common Lisp Dyalog APL Futhark Haskell Rust 今天...当空白字符变为非空白字符时,我们给字计数器(word counter)加一。这种方法允许我们直接字节流读取,从而保持很低的内存消耗。...我们将建立两个channel – chunks和counts。每个worker线程将从chunks读取和处理数据,直到channel关闭,然后将结果写入counts。...使用Mutex并行化(wc-mutex) 在本节,我们将允许每个worker读取文件,并使用sync.Mutex互斥锁确保读取不会同时发生。...fileReader.LastCharIsSpace = IsSpace(buffer[bytes-1]) return chunk, nil } 然后,我们重写worker函数,让它直接文件读取

54840

一文读懂基于 Yaegi 解释器开发可热插拔的 Traefik 插件

通常,本质上而言,编译器是一种翻译器,将高级编程语言作为输入,生成低级语言(汇编语言或机器语言)的输出。...其实,若我们另外一种角度窥探,便会发现:解释器的工作方式或多或少与编译器类似。它们功能之间的主要区别在于解释器不生成任何中间代码形式,而是逐行读取程序检查错误,并同时运行程序。...它不需要提前编译源代码,而是直接字符串或文件读取代码并解释执行。...3、Gisp:Gisp 是一个使用 Go 语言编写的 Lisp 解释器,它支持基本的 Lisp 语法和函数,并提供了一些扩展功能, Go 函数和类型的调用。...与上述相比较,Golo 是一个更加复杂和功能更为丰富的 Lisp 方言,其语法和特性与 Common Lisp 有很多相似之处。

1.4K51

教你如何用70 行 Go 代码打败 C!

、字数、字节数或字符数的程序命令)就变成了一种大家趋之若鹜的游戏,可以用来挑战的编程语言列表如下: Ada C Common Lisp Dyalog APL Futhark Haskell Rust 今天...当空白字符变为非空白字符时,我们给字计数器(word counter)加一。这种方法允许我们直接字节流读取,从而保持很低的内存消耗。...我们将建立两个channel – chunks和counts。每个worker线程将从chunks读取和处理数据,直到channel关闭,然后将结果写入counts。...05 使用Mutex并行化(wc-mutex) 在本节,我们将允许每个worker读取文件,并使用sync.Mutex互斥锁确保读取不会同时发生。...fileReader.LastCharIsSpace = IsSpace(buffer[bytes-1]) return chunk, nil } 然后,我们重写worker函数,让它直接文件读取

51230

走进 racket(lisp) 的世界

上周追着看了个大牛的好几篇文章,发现一个叫racket的语言出镜率颇高 —— 这已经是我十月来第三次各种大牛的文章接触这个词。...golang,erlang。 ✓ 日常使用:只要是需要写代码的地方,下手首先想到的就是TA。python。当然,C也是我日常使用的语言,只不过C是工作语言而已。...racket是一个lisp [1] 家族的语言,祖上是common lisp [2] 对立的阵营scheme [3],起初为教学的目的而创立。...markdown,asciidoc一样,scribble语言可以用来书写文档,并进一步被编译成html,pdf等多种格式。...对于lisp的优点,比如说一切皆为表达式,一切表达式皆可计算为一个值或一个list,语言可以在任何时候(读取,编译,执行)可用等等,可以看阮一峰的博文「为什么Lisp语言如此先进」[5],这里就不赘述。

2.4K30

编程语言进化史《禅与计算机程序设计艺术》 陈光剑

高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,易语言,中文版的C语言习语言等等,这些语言的语法...典型的函数式语言 Lisp、Haskell、ML、Scheme 、F#等。 逻辑式语言。这种语言的语义基础是基于一组已知规则的形式逻辑系统。这种语言主要用在专家系统的实现。...第三次数学危机 在第三次数学危机,这种情况也多次出现,尤其是包含整数算术在内的形式系统的不完全性、许多问题的不可判定性都大大提高了人们的认识,也促进了数理逻辑的大发展。...Multi-paradigm languages such as Ada, C++, Common Lisp, Object Pascal....Most languages using less common paradigms Functional languages such as Lisp and Haskell.

1.5K10

简单解释 MapReduce 算法

上升到抽象模型:Mapper与Reducer MPI等并行计算方法缺少高层并行编程模型,为了克服这一缺陷,MapReduce借鉴了Lisp函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型...—Lisp定义了可对列表元素进行整体处理的各种操作,:(add #(1 2 3 4) #(4 3 2 1)) 将产生结果: #(5 5 5 5) —Lisp也提供了类似于Map和Reduce...MapReduce的Map和Reduce操作的抽象描述 MapReduce借鉴了函数式程序设计语言Lisp的思想,定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程实现: —map:...(k1; v1) → [(k2; v2)] 输入:键值对(k1; v1)表示的数据 处理:文档数据记录(文本文件的行,或数据表格的行)将以“键值对”形式传入map函数;map函数将处理这些键值对...,需编写少量的处理应用本身计算问题的程序代码 —如何具体完成这个并行计算任务所相关的诸多系统层细节被隐藏起来,交给计算框架去处理:分布代码的执行,到大到数千小到单个节点集群的自动调度使用 MapReduce

2.6K100
领券