一位ed(1)编辑器狂热爱好者的工具箱

2025-09-24

作者Artyom Bologov是一位ed(1)编辑器的狂热粉丝,他不仅将其用作Git编辑器、sudo编辑工具和静态网站生成器,还创建了一系列ed(1)的实现和脚本,包括GNU ed、OpenBSD ed、改进版wed(1)以及更友好的aed(1)和用于脚本编写的xed(1)。这些工具旨在提高效率和可移植性,并克服了标准ed(1)的一些局限性,例如缺乏脚本支持和用户不友好性。作者甚至用Brainfuck、BASIC和Modal等语言重新实现了ed(1),尽管这些版本不如标准版本强大。文章最后,作者强烈推荐读者使用ed(1)并表达了对它的喜爱之情。

阅读更多
开发

抛弃Lisp自定义REPL:拥抱原生REPL与实用工具

2025-08-20

作者痛斥Lisp自定义REPL(如CIEL)的弊端,认为其牺牲了原生REPL的强大功能和可定制性,例如REPL原生命令、实现调试器以及使用实现API进行自定义的能力。文章详细介绍了如何通过Trivial Toplevel库和rlwrap等工具增强原生REPL,包括自定义提示符、命令、读取器语法以及利用ASDF管理依赖等。作者提倡利用原生REPL结合实用工具,打造高效且个性化的Lisp开发环境,而非依赖“预烘焙”的自定义REPL。

阅读更多
开发

用ed(1)构建静态网站:一个古怪的尝试

2025-05-31

作者Artyom Bologov分享了他用古老的文本编辑器ed(1)构建静态网站的奇特经历。他尝试过多种方法,从Lisp到C预处理器,最终选择ed(1)作为他的静态网站生成器。虽然ed(1)功能有限,缺乏文件包含等特性,但它足够灵活,允许作者使用自定义语法,并能处理旧的预处理器格式。作者用ed(1)脚本实现了预处理和格式转换,支持多种输出格式(txt, gmi, 7, tex等)。虽然这并非最佳实践,但这篇文章展现了ed(1)的意外潜力,以及作者对文本处理的独特探索。

阅读更多
开发 ed(1)

Lisp缩进风格大乱斗:程序员的审美困境

2025-01-19

Lisp程序员长期以来为代码缩进风格争论不休。文章探讨了多种Lisp缩进方案,包括无缩进、函数对齐缩进、填充缩进以及作者提出的“病态”宏缩进。作者指出,函数对齐缩进在嵌套较深时会变得难以阅读,填充缩进虽然高效,但在极端嵌套下仍有不足。作者最终推荐了一种“病态”宏缩进风格,虽然不符合惯例,但在处理深度嵌套时能保持良好的可读性,并能与大多数缩进工具兼容。文章最后鼓励读者分享自己的偏好。

阅读更多
开发

理解 Lambda 演算之抽象、规约和替换

2024-11-10

本文以程序员视角解释了 Lambda 演算的核心概念,包括抽象(函数定义)、应用(函数调用)、柯里化(多参数函数处理)、规约(求值过程)、替换(变量重命名)以及等价性等。作者以通俗易懂的语言和示例,阐明了 α-、β- 和 η- 规约/替换/等价的区别,并解释了如何运用这些概念理解 Lambda 表达式。

阅读更多
24
未分类 编程语言理论

我要我的滚动条回来(2分钟读物)

2024-07-12

作者 Artyom Bologov 是一位阅读爱好者,但注意力容易分散,因此依赖滚动条来判断文章长度,以便分配阅读时间。然而,由于动态加载内容的流行,滚动条不再可靠地反映文章长度,这给作者带来了困扰。作者呼吁网站开发者将内容预加载到页面中,或者提供“预计阅读时间”等替代指标,以方便读者快速了解文章长度。

阅读更多
48

Common Lisp 不止一种语言,而是一系列语言

2024-05-23

文章驳斥了“Common Lisp 是一种单一语言”的观点,并列举了 Common Lisp 中包含的多种“语言”,包括:核心 Scheme 风格的 Common Lisp、CLOS、泛型、loop 宏、Clojure 和 Scheme?!、format 字符串等。作者认为,这些子语言的存在使得 Common Lisp 成为一个丰富的生态系统,但也导致了理解和评价 Common Lisp 的困难。

阅读更多
49
未分类