关于服务
翻译我是一名 Racket 和 Scheme 开发者,工作在 Lisp 世界的那个角落,普通后端工程师几乎从不涉足:我创造语言,而不仅仅是使用现成的语言。当一个任务顽固地将你的通用代码翻转过来时,诚实的答案通常是这样的——你需要一个针对该任务的小型领域特定语言。这就是我设计和实现的内容。我编写小心、结构良好的函数式程序、卫生宏、自定义读取器和求值器,以及将原始想法转化为可以推理的工作解释器的工具。
我的工作通常分为三种形式。第一种是 DSL 和宏系统:我利用 Racket 的面向语言能力为你的团队提供特定任务的符号,具有语法检查、清晰的错误信息和感觉本地的读取器,而不是附加的。第二种是解释器和小型编译器:解析器、求值器、树遍历器和用于配置格式、规则引擎、脚本层和实验语言的字节码后端。第三种是教育和研究工具:我关心自我解释的程序,因此我制作可视化工具、逐步调试器、练习检查器和供学习函数式编程及其基础的 λ 演算的互动材料。
由于我成长于 Lisp 家族,而不是主流后端或 Clojure 工作,正确性和最小核心对我尤其重要。我依赖于合同、基于属性的测试和小型可组合函数,文档语法和不变性,以便下一个人不必拆解你的解析器。如果你有一个半工作的原型、一堆没人敢碰的宏,或者一个小语言的新想法——我会将其从草图转化为可靠的结果。
— Racket 中的领域语言和卫生宏
— Scheme 中的解释器、求值器和小型编译器
— 解析器、自定义读取器和规则引擎
— 教育工具:逐步调试器、可视化工具、练习检查
— 函数式重构、合同和基于属性的测试
— 旧 Scheme 和 Lisp 代码的迁移和现代化
我的工作通常分为三种形式。第一种是 DSL 和宏系统:我利用 Racket 的面向语言能力为你的团队提供特定任务的符号,具有语法检查、清晰的错误信息和感觉本地的读取器,而不是附加的。第二种是解释器和小型编译器:解析器、求值器、树遍历器和用于配置格式、规则引擎、脚本层和实验语言的字节码后端。第三种是教育和研究工具:我关心自我解释的程序,因此我制作可视化工具、逐步调试器、练习检查器和供学习函数式编程及其基础的 λ 演算的互动材料。
由于我成长于 Lisp 家族,而不是主流后端或 Clojure 工作,正确性和最小核心对我尤其重要。我依赖于合同、基于属性的测试和小型可组合函数,文档语法和不变性,以便下一个人不必拆解你的解析器。如果你有一个半工作的原型、一堆没人敢碰的宏,或者一个小语言的新想法——我会将其从草图转化为可靠的结果。
— Racket 中的领域语言和卫生宏
— Scheme 中的解释器、求值器和小型编译器
— 解析器、自定义读取器和规则引擎
— 教育工具:逐步调试器、可视化工具、练习检查
— 函数式重构、合同和基于属性的测试
— 旧 Scheme 和 Lisp 代码的迁移和现代化