13个稳定版本
1.13.0 | 2024年8月9日 |
---|---|
1.12.0 | 2024年5月26日 |
1.11.0 | 2024年3月9日 |
1.10.1 | 2024年2月15日 |
1.5.0 | 2023年7月12日 |
#432 in 数学
每月231次下载
1MB
19K SLoC
主要功能
点击了解更多。
物理尺寸作为类型
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
解释器将启动一个REPL,具有熟悉的readline界面,包括命令历史、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/
文件夹的符号链接(有关其他操作系统的标准路径,请参阅此页面)。
联系我们
要联系我们,请打开GitHub问题或讨论,或者加入Libera.Chat上的#numbat
(网络聊天链接)。
依赖关系
~14–28MB
~373K SLoC