为什么两个相似的 J 动词短语起作用,但其中只有一个与动态力量连词一起起作用?

Why do two similar J verb phrases work, but only one of them works with the dynamic power conjunction?

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

   (''-:])''
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'

"domain error" 行下方的消息是否试图告诉我任何具体信息?

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

好问题,让我深入研究了我的 Nuvoc 参考文献 (^:) Power Conjunction https://code.jsoftware.com/wiki/Vocabulary/hatco#Common_Uses_2
我指的是 Nuvoc,因为现在正在使用它来代替 J 词汇表。

据我所知,问题是你有一个二元函数(你的参数是 'empty''')并且你试图在你的测试中强制它成为单子函数 (''&-:)

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

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

如果我们将您的测试更改为分叉 ('' -: ]) 它会起作用,因为现在 x 和 y 参数得到了适当的处理。 ] 选择 y 参数,左边尖齿上的名词不需要参数。

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

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

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

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