Scheme 是一个 Hoot

Lobsters Hottest 新闻

摘要

作者分享了学习 Scheme 并使用 Hoot 将其编译为 WebAssembly 的经验,虽然遇到了稳定性问题,但成功在浏览器中运行了物理模拟。

<p><a href="https://lobste.rs/s/jchp72/scheme_is_hoot">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/05 10:29

# Scheme 是一门 Hoot 语言 来源:https://gracefulliberty.com/notes/scheme-is-a-hoot/ 2026-05-21· 3 分钟· #计算 (https://gracefulliberty.com/articles/tags/computing) 最近我一直在花时间学习 Scheme,并用它来实现我在物理课上学的概念,时间允许就做一点。其中最令人兴奋的事情之一是,借助 Hoot,我成功让 Scheme 代码在 Web 上编译运行。 最大的挑战之一是 Hoot 并不稳定。目前它的版本是 0.9.0。文档还算可以,但还可以更好。错误消息有时很费解。但是,看到 Scheme 代码通过 WASM 在 Web 上运行,已经是一个巨大的成就。更不可思议的是,它运行在团队自己创建的栈上,而不是依赖 Emscripten。 我最初以为 Hoot 可以将任何 Guile 程序编译到 Web。当我的代码无法编译时,我很快就发现自己错了。于是我将代码移植为使用 Hoot 版本的所有函数,导致我的代码无法脱离 Hoot 独立运行。后来我才意识到,Hoot 实际上支持比我想象中*更多*的 Guile 功能。我只需要手动导入很多之前我以为理所当然的东西。 现在,我已经将代码设置为既能在原生 Guile 上运行,也能通过 Hoot 在 WASM 上运行,并且测试会在两个环境中自动运行,以确保两个环境都能正确配置。虽然有点麻烦,但现在已经可以工作了。我的大部分代码不关心是在系统的 Guile 解释器中运行,还是被编译为 WASM 并在浏览器中运行。我觉得这很了不起。 目前,我完成的大部分工作都在后端。让整个设置能够正常工作已经够折腾了。我也一直在努力让更基础的物理逻辑能够运行,对于 Scheme 新手来说尤其困难。但我一直在取得进展,并且在我的网站的一个新页面上发布了一个小原型(https://gracefulliberty.com/physics/),还发布了源代码(https://codeberg.org/liberty/physics)。 未来,我很好奇是否可以用 Hoot 将 Zig 和 Scheme 程序一起编译到 Web。我越来越觉得 Zig 和 Scheme 是完美的组合,我想在这方面做更多实验。这可能太复杂了!我还不知道。在 WASM 的世界里有很多东西需要学习,而这正是乐趣的一部分。 这是一次深入 Scheme 世界的富有洞察力的探索。我迫不及待想做更多。

相似文章

Hoot 0.9.0 发布

Lobsters Hottest

Hoot 0.9.0,一个用于 Guile 的 Scheme 到 WebAssembly 编译器后端,已发布,包含新功能和错误修复,包括 DWARF 支持、标准 Wasm 异常,以及为 Lisp Game Jam 提供的游戏 jam 模板。