【问题标题】:Why do two similar J verb phrases work, but only one of them works with the dynamic power conjunction?为什么两个相似的 J 动词短语有效,但只有一个与动态力量连词有效?
【发布时间】:2020-01-15 12:54:42
【问题描述】:

动词链 ''-:] 按我预期的方式工作。

   (''-:])''
1
   (''-:])'non-empty'
0

它也可以按照我期望的方式与动态功率合取一起工作。

   'empty'[^:(''-:])''
empty
   'empty'[^:(''-:])'non-empty'
non-empty

动词短语''&-: 产生的结果与我预期的相同。

   (''&-:)''
1
   (''&-:)'non-empty'
0

当我尝试将''&-: 与动态幂连词一起使用时,J 会产生域错误,我不明白为什么。这个用例与所有其他用例有什么区别?

   'empty'[^:(''&-:)''
|domain error
|   'empty'    [^:(''&-:)''
   'empty'[^:(''&-:)'non-empty'
|domain error
|   'empty'    [^:(''&-:)'non-empty'

“域错误”行下方的消息是否试图告诉我任何具体内容?

我的实际用例是用另一个字符串替换空字符串。如果有人对更好的方法有任何建议,我将不胜感激。

【问题讨论】:

    标签: j


    【解决方案1】:

    很好的问题,一个让我深入研究我的 Nuvoc 参考资料 (^:) Power Conjunction https://code.jsoftware.com/wiki/Vocabulary/hatco#Common_Uses_2
    我指的是 Nuvoc,因为这是现在使用的参考,而不是 J 词汇表。

    据我所知,问题在于您有一个二元函数(您的参数是 'empty''')并且您正试图通过您的测试 (''&-:) 强制它成为一元函数

       'empty'[^:(''&-:) ''
    |domain error
    |   'empty'    [^:(''&-:)''
    

    当您没有正确数量的参数,或者您使用的参数类型不合适时,通常会出现域错误。

    如果我们将您的测试更改为 fork ('' -: ]) 它可以工作,因为现在 x 和 y 参数正在得到适当的处理。 ] 选择 y 参数,左边尖的名词不需要参数。

       'empty'[^:(''-:]) ''  NB. turn the test into a fork
    empty
    

    另一种可行的方法是使用 "_ 将 x 参数更改为动词,这会创建一个无限等级的动词,并且在调用时将返回您期望的结果。这再次消除了二元一元混乱的问题,因此您的原始测试现在可以工作。 empty"_ 周围的括号需要将力量连词 ^: 与动词分开。

       ('empty'"_) ^:(''&-:) '' NB. turn the x argument into a verb
    empty
    

    您可能采取的其他方法是查看修正副词 } https://code.jsoftware.com/wiki/Vocabulary/curlyrt#dyadic

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多