代码之家  ›  专栏  ›  技术社区  ›  August Karlstrom

赋值一个幂零函数

apl
  •  3
  • August Karlstrom  · 技术社区  · 6 年前

    非幂零函数 f 可分配给变量 G 具有

    G ← F
    

    然而,如果 f 是尼拉迪奇吗,我该如何阻止它被评估?

    3 回复  |  直到 6 年前
        1
  •  3
  •   Adám    6 年前

    你不能。

    在某种程度上,niladic函数的行为类似于数组,但它们的值只有在使用后才能确定。这也意味着它们显示了值语义而不是引用语义。还要注意,niladic函数不能是运算符的操作数,而是它们的结果将成为操作数。

    绕过这两个问题的一种方法是将niladic函数包装在一个dfn中,以便它采用一个或两个伪参数,因此:

    G←{F}
    
        2
  •  2
  •   Jürgen Sauermann    6 年前

    APL从右向左计算表达式。只要函数的所有参数都存在,就对函数进行计算,并用计算结果替换函数及其参数。

    现在考虑您的示例g_ f。如果f是单元的或双元的,则无法计算f,因为缺少其正确的参数。在解析器术语中,标记f被移动而不是减少,可以减少的第一个表达式是g_ f,它将f分配给g。

    另一方面,如果f是niladic,那么f可以(因此也将)立即被评估(例如,结果z),这样赋值将是g_ z而不是g_ f。

        3
  •  1
  •   mappo    6 年前

    我不知道你想做什么,所以请原谅我回答了错误的问题。

    对我来说,听起来你想要一个可选的正确论点。 在APL2中,我会这样做:

    ea'g_ f ra'

    如果ra未定义,则会捕获值错误,不会发生任何情况。如果需要g的默认值,请在ea的左侧进行分配。

    推荐文章