我正在学习(并且我的思绪被吹嘘)J,并且正在阅读学习J 。我注意到我一直在学习的许多(全部?)动词都非常灵活。我可以使用传统的4 - 2
,或者我可以将其用于列表,例如4 5 - 3 4
,甚至可以做3 4 5 - 1
,它似乎将运算符的右侧“提升”到数组,即使我只是给它一个标量。
我认为后一行为被ch包含在这一行中。 2上述文字:
因此,=的两个参数必须具有相同的形状,(或者在 至少,如在Y = 2的例子中,兼容的形状)。否则一个 错误结果。
确实,3 4 5 - 2 3
是一个错误。 “兼容形状”的技术定义是什么?它是否像“相同形状或标量”一样简单,还是更多呢?
答案 0 :(得分:5)
从词典页面B. Verbs:
协议。在短语
p v q
中,v
的论点必须同意 感觉一帧必须是另一帧的前缀
所以以下都可以正常工作
(i. 2 3) * (i. 2 3 4) NB. frame of left arg is prefix of the right arg
(i. 2) * (i. 2 3 4) NB. frame of left arg is prefix of the right arg
(i. 2 3 4) * (i. 2 3) NB. frame of right arg is prefix of the left arg
有关 frame 的正式定义,请参阅字典页面A. Nouns
我建议this section of J for C programmers全面介绍这些概念。