分配一个niladic函数

时间:2019-01-24 13:19:56

标签: apl

可以使用

为变量 G 分配非尼拉度函数 F
G ← F

但是,如果 F 是尼拉地语,如何防止其被评估?

3 个答案:

答案 0 :(得分:3)

你不能。

从某种意义上讲,尼拉迪奇函数的行为类似于数组,只是它们的值直到使用完才确定。这也意味着它们表现出值语义而不是引用语义。还要注意,尼拉第函数不能是运算符的操作数,而是它们的结果将成为操作数。

规避这两个问题的一种方法是将niladic函数包装在dfn中,以便它接受一个或多个伪参数,因此:

G←{F}

答案 1 :(得分:2)

APL从右到左评估表达式。一旦存在函数的所有参数,就对函数求值,并用求值结果替换函数及其参数。

现在考虑您的示例G←F。如果F是单声道或双声道,则F不能求值,因为缺少正确的参数。用解析器术语来说,令牌F是移动而不是减少的。因此,可以减少的第一个表达式是G←F,它将F分配给G。

另一方面,如果F是尼拉第语,则可以(因此将)立即对F进行求值(例如,结果Z),这样赋值的对象将是G←Z而不是G←F。 / p>

答案 2 :(得分:1)

我不确定您要做什么,因此请原谅我回答错误的问题。

在我看来,您需要一个可选的正确参数。 在APL2中,我将执行以下操作:

''⎕EA'G←F ra'

如果ra未定义,则将捕获“值错误”,并且不会发生任何事情。如果您想要G的默认值,请在EA的左侧进行分配。