1 个不稳定版本
0.1.0 | 2024 年 7 月 21 日 |
---|
#237 在 编程语言
114 每月下载量
92KB
2K SLoC
rok
用 Rust 编写的 K 解释器。受 ok 和 ngn/k 启发。
通过欺骗和使用 polars 的数组/表数据类型,我们能走多远?
oK.js 不到 1k 行 JavaScript,我们能否在 Rust 中用不到 1k 行代码做到同样的事情?
- https://www.arraycast.com/episodes/episode41-john-earnest
- https://github.com/JohnEarnest/ok
- https://codeberg.org/ngn/k
- https://github.com/razetime/ngn-k-tutorial/blob/main/01-intro.md
- https://k.miraheze.org/wiki/Main_Page
调试运行
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 │
│ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ i64 │
╞═════╪═════╪═════╡
│ 97 ┆ 1 ┆ 10 │
│ 98 ┆ 2 ┆ 20 │
│ 99 ┆ 3 ┆ 30 │
└─────┴─────┴─────┘
依赖关系
~42–73MB
~1.5M SLoC