什么构成J动词的数组参数的“兼容形状”?

时间:2012-01-11 04:49:02

标签: arrays arguments j

我正在学习(并且我的思绪被吹嘘)J,并且正在阅读学习J 。我注意到我一直在学习的许多(全部?)动词都非常灵活。我可以使用传统的4 - 2,或者我可以将其用于列表,例如4 5 - 3 4,甚至可以做3 4 5 - 1,它似乎将运算符的右侧“提升”到数组,即使我只是给它一个标量。

我认为后一行为被ch包含在这一行中。 2上述文字:

  

因此,=的两个参数必须具有相同的形状,(或者在   至少,如在Y = 2的例子中,兼容的形状)。否则一个   错误结果。

确实,3 4 5 - 2 3是一个错误。 “兼容形状”的技术定义是什么?它是否像“相同形状或标量”一样简单,还是更多呢?

1 个答案:

答案 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全面介绍这些概念。