【问题标题】:Equivalent tacit expressions等价的默契表达
【发布时间】:2019-11-29 19:04:55
【问题描述】:

我对 J 编程语言比较陌生,我对 J 中的等效默认表达式有疑问。

我找到了两行等效的 J,但代码中的连词 (^:) 的参数是使用括号运算符切换的。

我主要是想知道这个表达方式:

u ^: x y

等价于这个表达式:

x u @] ^: [ y

感谢任何 J 程序员解释这两者是如何等价的。

【问题讨论】:

    标签: j tacit-programming


    【解决方案1】:

    我认为看待这个的方式是将默认表达u@] ^: [看成是由^:在两个动词u@][之间的连词形成的动词。 u@] 将采用右参数y(排除左参数)并将u 的一元形式应用于y[ 将使用左侧参数 x 作为值,该值将提供 u 的重复次数作为 ^: 的运算符。

    对于显式版本,u ^: x y[] 动词替换为其关联的左右参数,并且由于 x^: 的运算符,u ^: x 实际上是一个单子动词y 作为它的参数。

    让我们设置

       a=. 3
       b=. 4
       vb =. +: NB. double
       vb ^: a b
    32
       a vb @] ^: [ b
    32
       a (vb @] ^: [) b NB. expression within parenthesis is clearly a verb
    32
    

    【讨论】:

      猜你喜欢
      • 2015-05-24
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 2021-11-29
      • 2011-02-27
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多