J中的二元钩子有什么用吗?
Is there any use for dyadic hooks in J?
我突然想到,二元钩与没有括号的相同动词具有相同的效果,例如,
2 (+ #) 1 2 3
2 + # 1 2 3
这两个产生相同的结果:5
。我可以用 (+ #)
做哪些我不能用 + #
做的事情?
我认为最大的区别是你可以默认使用 hooks 来构建更复杂的动词。挂钩成为一个模块,您可以将其放入更长的叉子中。删除括号会取消挂钩的功能。
2 (+ #) 1 2 3
5
这让我可以用 2 个零填充列表
2 ((+ #){. ]) 1 2 3
1 2 3 0 0
这给出了不同的结果
2 (+ # {. ]) 1 2 3
3 4 5
Dyadic hook 求解组合 "problem",其中 M 代表单元动词,D 代表二元动词。
M@D
(D M)
Dyadic hook 比 monadic 版本更必要,后者只是
的捷径
(] D M)
虽然 dyadic hook 也可以建模为
([ D M@:])
这也是一个矛盾的表达。一个例子:
(, *~)
单子地,追加 y 及其平方
dyadically,追加 x 以及 x 和 y 的乘积。
(哎呀,鲍勃是对的)。用以上解释纠正矛盾动词。
([ , *~)
我突然想到,二元钩与没有括号的相同动词具有相同的效果,例如,
2 (+ #) 1 2 3
2 + # 1 2 3
这两个产生相同的结果:5
。我可以用 (+ #)
做哪些我不能用 + #
做的事情?
我认为最大的区别是你可以默认使用 hooks 来构建更复杂的动词。挂钩成为一个模块,您可以将其放入更长的叉子中。删除括号会取消挂钩的功能。
2 (+ #) 1 2 3
5
这让我可以用 2 个零填充列表
2 ((+ #){. ]) 1 2 3
1 2 3 0 0
这给出了不同的结果
2 (+ # {. ]) 1 2 3
3 4 5
Dyadic hook 求解组合 "problem",其中 M 代表单元动词,D 代表二元动词。
M@D
(D M)
Dyadic hook 比 monadic 版本更必要,后者只是
的捷径 (] D M)
虽然 dyadic hook 也可以建模为
([ D M@:])
这也是一个矛盾的表达。一个例子:
(, *~)
单子地,追加 y 及其平方
dyadically,追加 x 以及 x 和 y 的乘积。
(哎呀,鲍勃是对的)。用以上解释纠正矛盾动词。
([ , *~)