J中的exit(不是exit'')是什么意思?

duk*_*reg 4 j

我最近安装了J并在jconsole中玩。这是我的会议结束时的样子:

    quit
|value error: quit
    exit
2!:55
Run Code Online (Sandbox Code Playgroud)

我在网上搜索并很快发现正确的退出代码是

    exit''
Run Code Online (Sandbox Code Playgroud)

既然无意义的词给出了值错误,并且“exit”的子串都不是有效的J,为什么要为“exit”给出一个值呢?2!:55 是什么意思?

Eel*_*vex 5

2!:55是 的定义exit。当您输入不带参数的动词时,J 会显示其定义。例如:

f =: *:
f 5
25
f
*:
Run Code Online (Sandbox Code Playgroud)

与所有其他预定义动词相同:

echo
0 0&$@(1!:2&2)
every
&>
each
&.>
Run Code Online (Sandbox Code Playgroud)

ETC。

  • [1/2] 为了补充这个出色的答案,也许还可以向 J 的新手澄清一下:J 的所有内置(原始)函数都是用符号拼写的;也就是说,一个 ASCII 字形 (`!"#$%&*+,-./:;<=>?@[\]^_{|}~`) 或任何可打印的 ASCII 字符,后跟任意数量的点 ( `.`) 和冒号 (`:`)。特别是,两个字母的原语 `!:` 是 *foreign* 函数,它控制对主机系统的所有访问。例如,`1!:n` 是“file”系列函数,“1!:1”是“读文件”,“1!:2”是“写文件”,依此类推,而“7!:”函数与内存相关(管理)。 (2认同)
  • [2/2] 具体函数`2!:55`是动词*exit*;选择数字代码“2”和“55”作为助记符:“255”是(八位)字节的“最后”值,而“2!:55 ''”是您的“最后”值想要在 J 会话中做。与所有动词一样,“exit”*需要一个参数*才能调用。如果它的参数是单个原子整数,则它将成为 J 可执行文件的退出代码(有一些注意事项),否则,如果参数不是原子整数(如 `exit''`),则退出代码将只需为 0。无论哪种方式,J 会话都将结束。 (2认同)