Loment
中文

学习

学习 Loment

有三个可以看的地方,而最有力的那个是一个会解释自己的工具链:它能打印出 整门语言、列出所有内建函数,还能告诉你它给你的任何一个错误码是什么意思。这一页给出合理 的顺序,并把每一步缺什么放在那一步旁边。

缺的是教学,不是材料。手册是参考而不是教程,而且它是用中文写的;设计 记录也是。下面某个资源不完整、或者从没被按你正要用的方式用过时 — 这一页会明说, 而不是让你自己撞上。

在读任何东西之前,先跑点什么

这里没有什么是需要先弄懂才能做的。从 最新发布装上包 — 在 Windows 上取 zip,不要取安装器 — 而那条给你写一个起点的命令,本身就是一段 Loment 程序:

$ loment new hello        # writes hello.lomt; it will not overwrite one$ loment run hello.lomt   # compile, link, run — the exit code is the program's

编译加运行这条路径不需要 Python、不需要 clang、不需要 WSL。它产出什么、为什么,在 入门那一页;它能产出的两类程序,在 首页。

这门语言,一口气读完

整门语言就是一个带注释的文件,而打印它的那条命令随工具链发布,不是挂在 这个网站上。从头到尾读一遍,你就见过了它所有的构造 — 这门语言是为了经得起这样读 而建的,而不是为了让人一个特性一个特性地学。

另有一份写下来的指南,它刻意做成自足的:安装包里那一份与仓库里那一份 是同一个文件,所以断网也能读,而这个项目的判据就是这两份保持一致。

$ loment example tour    # the language as one commented source file$ loment skill --print   # the written guide, printed in full

在你运行第一条命令之前,关于它有两件事。tour 里的注释是中文的, 而在当前已发布的这一版上,那个文件链接不过 — 这是自举链接器的一个已知缺陷, 示例页上那四个程序才是已验证能跑的。第二条命令打印出来的 指南是英文的。

不用离开终端就能查东西

这才是真正不寻常的地方,哪怕你压根没打算用这门语言,也值得试一试。工具链就是 参考。这几条都从安装包里读,所以断网也能用,而且回答的是你手上真正的那个版本, 而不是网站上一次说了什么。

$ loment cheat            # the whole language on one page$ loment syntax           # the syntax on one page$ loment builtins         # every built-in function there is$ loment keywords         # the reserved words$ loment explain E4       # what a diagnostic means, and what to change

最后一条是值得记住的。一个错误码本身只是个数字;工具链存着与它配套的那句话,会告诉你 编译器在反对什么、该往哪边走。不带参数的 loment help 会列出其余的,而 wiki 上是加长版。

用写下来的材料查东西

手册

从编译器和随包示例构建,随仓库发布:各种规范,以及每个示例模块的 API 参考。 它是用中文写的,而且它是参考而不是教程 — 它告诉你 一个东西是什么,不告诉你拿它做什么。

Wiki

与本站相同的材料,按这门语言的百科来编排:语法、类型、内建表、回收档位、错误码, 以及哪些地方是刻意与其他语言不同的。英文,当你想一页只讲一件事的时候就去那里。

设计记录

这门语言里的每一个决定背后都有一份编号文档,为它辩护,也写出它付了什么代价。 它们是用中文写的,而且不是为学习者写的 — 但当这里或 wiki 上 某一页说"设计上就是这么定的"时,那说的就是这里。

靠读代码来学

仓库里带着一卷示例程序语料,工具链能把其中任何一个打印出来,不用你打开浏览器:

$ loment examples        # what is bundled$ loment example demo    # print one of them in full

想更温和地上手,本站上那四个程序很短,每一个都带着它真正 产出的输出。完整语料在仓库的 loment/examples/ 下,而其中并不是每个文件今天都链接得过。

让编辑器帮你

VS Code 扩展已经上架扩展市场,名字是 hooyan2022.loment — 在扩展面板里搜 Loment 就能找到。语言服务器做的事是真的:在你敲字时 给出检查器的诊断、补全、跳转到定义,以及格式化 — 走的是另一个独立的格式化器,不是 服务器本身。也有给 Vim 的文件,而服务器用 LSP 走 stdio 通信,所以任何带客户端的编辑器 都能接上去。

这个扩展是一个客户端,不是一个编译器。它身上不带工具链:语言服务器、 构建和调试器,都从一份 Loment 检出(checkout,从仓库取下来的源码)里跑程序,而这份检出 是从你打开的文件夹一路往上找出来的。装上它、打开一个文件,附近却没有检出时,你只会得到 高亮,别的一概没有 — 在断定这个扩展坏了之前,这点值得知道。

在你依赖它之前,值得知道三处缺口。没有跨文件符号索引,所以补全和 跳转到定义只看得到当前文档。服务器不声明格式化能力;格式化是单独一个程序。而项目 自己的笔记说,服务器从没被人在真编辑器里手动驱动过 — 它的测试直接调用 同一个请求处理器。调试器也有自己的缺口:没有条件断点、没有表达式求值,局部变量是 寄存器而不是名字。wiki 上的 编辑器页把完整清单列了出来。