#calculations #units #physics #compiler #language

app numbat-cli

一种静态类型编程语言,用于科学计算,具有对物理尺寸和单位的一级支持

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 数学

Download history 3/week @ 2024-05-04 6/week @ 2024-05-11 14/week @ 2024-05-18 254/week @ 2024-05-25 55/week @ 2024-06-01 30/week @ 2024-06-08 33/week @ 2024-06-15 24/week @ 2024-06-22 18/week @ 2024-06-29 7/week @ 2024-07-06 7/week @ 2024-07-13 2/week @ 2024-07-20 12/week @ 2024-07-27 92/week @ 2024-08-03 88/week @ 2024-08-10 38/week @ 2024-08-17

每月231次下载

MIT/Apache

1MB
19K SLoC

在线尝试!文档教程语法参考安装开发

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解释器将启动一个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
没有像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/文件夹的符号链接(有关其他操作系统的标准路径,请参阅此页面)。

联系我们

要联系我们,请打开GitHub问题讨论,或者加入Libera.Chat上的#numbat网络聊天链接)。

依赖关系

~14–28MB
~373K SLoC