4

我正在学习(并且让我的思绪被)J 和阅读Learning J的过程中。我注意到我一直在学习的许多(全部?)动词的论点非常灵活。我可以做传统的4 - 2,或者我可以将它与列表一起使用4 5 - 3 4,甚至可以做3 4 5 - 1似乎将运算符的右侧“提升”为数组的操作,即使我只是给了它一个标量。

我假设后一种行为被这条线所涵盖,来自 ch。2 上述文字:

因此,= 的两个参数必须具有相同的形状,(或至少,如 Y=2 的示例中那样,兼容的形状)。否则会产生错误。

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

4

1 回答 1

5

从字典页面B. 动词

协议。在该短语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

有关框架的正式定义,请参见字典页面A. 名词

向 C 程序员推荐 J 的这一部分,作为对这些概念的全面介绍。

于 2012-01-11T08:08:04.077 回答