#wolfram-language #wolfram #expression #wolfram-engine #mathematica #link

wolfram-expr

在Rust中高效且人性化的Wolfram表达式表示

5个版本

0.1.4 2023年2月3日
0.1.3 2022年12月6日
0.1.2 2022年7月26日
0.1.1 2022年2月19日
0.1.0 2022年2月8日

#668 in 编码

Download history 38/week @ 2024-03-12 44/week @ 2024-03-19 38/week @ 2024-03-26 66/week @ 2024-04-02 47/week @ 2024-04-09 34/week @ 2024-04-16 144/week @ 2024-04-23 50/week @ 2024-04-30 56/week @ 2024-05-07 48/week @ 2024-05-14 37/week @ 2024-05-21 98/week @ 2024-05-28 42/week @ 2024-06-04 52/week @ 2024-06-11 45/week @ 2024-06-18 53/week @ 2024-06-25

每月208次下载
用于 7 个crate(5个直接使用)

MIT/Apache

48KB
740

wolfram-expr

Crates.io License Documentation

API文档 | 变更日志 | 贡献

在Rust中高效且人性化的Wolfram表达式表示。

示例

构建表达式 {1, 2, 3}

use wolfram_expr::{Expr, Symbol};

let expr = Expr::normal(Symbol::new("System`List"), vec![
    Expr::from(1),
    Expr::from(2),
    Expr::from(3)
]);

在不同的表达式变体上进行模式匹配

use wolfram_expr::{Expr, ExprKind};

let expr = Expr::from("some arbitrary expression");

match expr.kind() {
    ExprKind::Integer(1) => println!("got 1"),
    ExprKind::Integer(n) => println!("got {}", n),
    ExprKind::Real(_) => println!("got a real number"),
    ExprKind::String(s) => println!("got string: {}", s),
    ExprKind::Symbol(sym) => println!("got symbol named {}", sym.symbol_name()),
    ExprKind::Normal(e) => println!(
        "got expr with head {} and length {}",
        e.head(),
        e.elements().len()
    ),
}
  • wolfram-library-link — 作者库,可以被Wolfram语言动态加载。
  • wstp — Wolfram符号传输协议的绑定,用于在程序之间传递任意Wolfram表达式。
  • wolfram-app-discovery — 用于定位本地Wolfram应用程序和Wolfram语言的实用工具。

许可证

在以下两种许可证中选择一种

根据您的选择。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,应双重许可,如上所述,没有任何附加条款或条件。

有关更多信息,请参阅CONTRIBUTING.md

依赖关系

~240KB