ITADN
sharkdp/numbat
sharkdp/numbat · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

[在线试用!] • [文档] • [教程] • [语法参考] • [安装] • Discord • [开发]

Numbat 是一种用于科学计算的静态类型编程语言
, 对物理量和单位提供一等支持。

主要功能

点击以了解更多信息。

物理量纲作为类型

Numbat 拥有一个静态类型系统,其中物理量纲如 LengthTime 充当类型。 常量和函数的定义可以包含可选的类型注解,这些注解将被静态强制检查。 如果未指定类型,它们将被推断(截图中的 SpeedMoneyFrequency)。

参见这篇文章以了解有关 Numbat 类型系统的更多信息。

一等物理单位

Numbat 专注于带单位的计算。因此,单位被视为一等公民。它们可以 以多种方式输入km/hkilometer/hourGiBgibibytes°degreem^2)。 新单位可以就地引入unit pixel)。 兼容的单位可以轻松地使用 -> 运算符进行转换(30 km/h -> mph1 mrad -> degree5 in + 2 ft -> cm27 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 代替。
没有带有如 1/xDEG/RAD 等按钮的图形用户界面。 Qalculate! 是一个支持文本和图形 输入的优秀工具。
Numbat 支持大量的物理单位。如果你需要更全面的功能, 请考虑做出贡献。或者尝试 GNU units

 

 

 

 

安装

有关如何安装 Numbat 原生命令行版本的详细信息,请参阅 此页面

开发

CICD

运行 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 issuediscussion,或者加入我们的 Discord 服务器