>8th 使用命名空间而不是词汇表。 每个命名空间都有自己的整数表示形式。
ok> ns:a . cr ns:n . cr
4
2
因此,2 表示数字命名空间,4 表示数组。
我想构造一个包含命名空间的数组,然后我可以将其放置在 TOS(堆栈顶部)。
但是,如果我只是写这个
ok> [ ns:a , ns:n ]
Exception: invalid JSON array: at line 1 char 3 in ....: cr (G:;;; +000004c2)
Exception: can't find: :a: at line 1 char 6 in (null): cr (G:??? +00000029)
Exception: can't find: ,: at line 1 char 8 in (null): cr (G:??? +00000029)
Exception: can't find: ]: at line 1 char 15 in (null): n (G:??? +00000029)
我是 8th 的开发者。 带有 ' ns:a 的解决方案并不是您想要的,因为它将单词放在数组中,而不是单词将返回的值。
您可以使用反引号完成所需的操作:[ ' ns:a ' ]
反引号将文本馈送到下一个反引号到 eval 并将值(无论它是什么)放入您正在创建的 JSON 中(它不限于 JSON,它是一个通用结构)。
您可以将函数地址存储在数组中
[ ' ns:n , ' ns:a ]
并通过获取数组值并执行它来访问值
0 a:@ w:exec . cr
2
ok>
您还可以使用匿名函数
[ ( ns:a ) , ( ns:m ) ]