6 个版本 (重大变更)

使用旧的 Rust 2015

0.4.0 2016年4月16日
0.3.0 2016年3月21日
0.2.1 2016年1月17日
0.1.0 2015年10月25日
0.0.0 2015年10月18日

#256 in 模拟器


用于 urbit

MIT/Apache

42KB
971

Nock 无状态虚拟机的实现

许可证

许可方式为以下之一

任选其一。

贡献

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


lib.rs:

Nock 虚拟机的实现。

有关 Nock 的更多信息,请参阅 http://urbit.org/docs/theory/whitepaper

Nock 规范

A noun is an atom or a cell.
An atom is a natural number.
A cell is an ordered pair of nouns.

nock(a)          *a
[a b c]          [a [b c]]

?[a b]           0
?a               1
+[a b]           +[a b]
+a               1 + a
=[a a]           0
=[a b]           1
=a               =a

/[1 a]           a
/[2 a b]         a
/[3 a b]         b
/[(a + a) b]     /[2 /[a b]]
/[(a + a + 1) b] /[3 /[a b]]
/a               /a

*[a [b c] d]     [*[a b c] *[a d]]

*[a 0 b]         /[b a]
*[a 1 b]         b
*[a 2 b c]       *[*[a b] *[a c]]
*[a 3 b]         ?*[a b]
*[a 4 b]         +*[a b]
*[a 5 b]         =*[a b]

*[a 6 b c d]     *[a 2 [0 1] 2 [1 c d] [1 0] 2 [1 2 3] [1 0] 4 4 b]
*[a 7 b c]       *[a 2 b 1 c]
*[a 8 b c]       *[a 7 [[7 [0 1] b] 0 1] c]
*[a 9 b c]       *[a 7 c 2 [0 1] 0 b]
*[a 10 [b c] d]  *[a 8 c 7 [0 3] d]
*[a 10 b c]      *[a c]

*a               *a

依赖项

~185–255KB