主要功能
点击以了解更多信息。
物理量纲作为类型
Numbat 拥有一个静态类型系统,其中物理量纲如 Length 和 Time 充当类型。
常量和函数的定义可以包含可选的类型注解,这些注解将被静态强制检查。
如果未指定类型,它们将被推断(截图中的 Speed、Money 和 Frequency)。
参见这篇文章以了解有关 Numbat 类型系统的更多信息。
一等物理单位
Numbat 专注于带单位的计算。因此,单位被视为一等公民。它们可以
以多种方式输入(km/h 或 kilometer/hour,GiB 或
gibibytes,° 或 degree,m² 或 m^2)。
新单位可以就地引入(unit pixel)。
兼容的单位可以轻松地使用 -> 运算符进行转换(30 km/h -> mph、1 mrad -> degree、5 in + 2 ft -> cm、27 weeks -> days)。
并且单位表达式会使用各种启发式方法进行简化(15 km/h * 30 min = 7.5 km)。
全面的标准库
Numbat 的标准库包含大量物理量纲和单位(SI、US Customary、Imperial、Nautical、Astronomical、Atomic、Nuclear、…)。 参见此参考页面以获取完整概览。 它还包含许多数学和物理常数 以及大量预定义函数。
严格语法
Numbat 的解析器从不试图对语法错误的输入进行“智能”处理。 这意味着你要么会收到一个(描述性的)错误消息,要么可以信任你的计算结果。
出色的错误消息
Numbat 旨在提供描述性且有帮助的错误消息。
交互式终端
Numbat 专为小型“一次性”计算的交互式用例而设计。不带任何参数打开 numbat 解释器
将启动一个带有熟悉的
readline 界面的 REPL,包括所有常用功能,如命令历史、Ctrl-R 搜索或 Tab 补全。
模块化且可定制
整个物理量和单位系统由 Numbat 的标准库指定,该库
是用 Numbat 语言本身编写的。因此,
可以通过提供 init.nbt 文件轻松扩展。例如,
通常只需一行(unit bathtub = 150 L)即可添加一个新单位。用户甚至可以
选择编写自己的 prelude 模块,从而允许对单位系统进行任意修改。
断言
凭借其静态类型系统,Numbat 已经在物理量纲层面强制保证了你计算的正确性。
但有些检查只能在运行时进行。Numbat 提供了一个 assert_eq 过程,允许你使用 assert_eq(12 ft, 1 in) 检查精确相等,或使用 assert_eq(c, 300_000 km/s, 1% × c) 检查近似相等。
这在确保重构计算过程中中间结果不发生变化时可能很有用。
非特性
Numbat 是一个科学计算器。它不是求解微分方程
或计算积分的计算机代数系统。请尝试 WolframAlpha 代替。
没有带有如 x²、1/x 或 DEG/RAD 等按钮的图形用户界面。
Qalculate! 是一个支持文本和图形
输入的优秀工具。
Numbat 支持大量的物理单位。如果你需要更全面的功能,
请考虑做出贡献。或者尝试 GNU units。
安装
有关如何安装 Numbat 原生命令行版本的详细信息,请参阅 此页面。
开发
运行 Numbat CLI
cargo run -- <numbat args>
安装 CLI 版本
cargo install -f --path numbat-cli
运行所有测试
cargo test
在 prelude 上工作
如果你正在开发 Numbat 的标准库,将
NUMBAT_MODULES_PATH 环境变量指向 numbat/modules/ 文件夹会非常方便。这样,
你无需重新编译 Numbat 即可看到你的更改。
或者,你可以从 ~/.config/numbat/modules 创建一个指向仓库中 numbat/modules/
文件夹的符号链接(有关其他操作系统上的标准路径,请参阅 此页面)。
联系我们
该项目由 David Peter 维护。要联系我们,请 打开一个 GitHub issue 或 discussion,或者加入我们的 Discord 服务器。