#polars #data #interpreter #ok #built #ngn-k

bin+lib roklang

用 Rust 编写的 K 解释器。受 ok 和 ngn/k 启发,并在 polars 上构建。

1 个不稳定版本

0.1.0 2024 年 7 月 21 日

#237编程语言

Download history 109/week @ 2024-07-20 5/week @ 2024-07-27

114 每月下载量

ISC 许可证

92KB
2K SLoC

rok

用 Rust 编写的 K 解释器。受 ok 和 ngn/k 启发。

通过欺骗和使用 polars 的数组/表数据类型,我们能走多远?

oK.js 不到 1k 行 JavaScript,我们能否在 Rust 中用不到 1k 行代码做到同样的事情?

调试运行

RUST_LOG=rok=debug cargo run

示例

% cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.08s
     Running `target/debug/rok`
rok 0.1.0
 1 2 3 + 4 5 6
5 7 9
 +/ 1 2 3 + 4 5 6
21
 !10
0 1 2 3 4 5 6 7 8 9
 1+!10
1 2 3 4 5 6 7 8 9 10
 */1+!10
3628800
 (1 2 3;"abc";3.14)
(1 2 3
 "abc"
 3.14)
 `a`b`c!(1 2 3;"abc";3.14)
a|1 2 3
b|"abc"
c|3.14
 (`a`b`c!(1 2 3;"abc";3.14); (!10))
(a|1 2 3
b|"abc"
c|3.14
 0 1 2 3 4 5 6 7 8 9 )
 (`a`b`c!(1 2 3;"abc";3.14); (!10);(4 5 6;"def"))
(a|1 2 3
b|"abc"
c|3.14
 0 1 2 3 4 5 6 7 8 9
 (4 5 6
 "def"))
 +`a`b`c!("abc";1 2 3; 10 20 30)
shape: (3, 3)
┌─────┬─────┬─────┐
│ a   ┆ b   ┆ c   │
│ --------- │
│ stri64i64 │
╞═════╪═════╪═════╡
│ 97110  │
│ 98220  │
│ 99330  │
└─────┴─────┴─────┘

依赖关系

~42–73MB
~1.5M SLoC