规范排序的 J 语法?

J syntax for canonical sorting?

我正在整理一些 J 代码,偶然发现了这行代码:

] { /:@~.

我正在尝试了解它的用途和功能。有人可以帮我阅读或使用它吗?它上面有一个标签,表明它是一个规范函数。

老实说,我不太确定您的代码部分试图做什么。它可能是更大的默认动词的一部分吗?

与此同时,有些部分肯定可以用于对向量的唯一项进行排序。

   ~. 3 4 5 2 3 4     NB. returns the unique items of a vector
3 4 5 2
   /:@~. 3 4 5 2      NB. returns the indices that will order that vector
3 0 1 2
     3 0 1 2  { 3 4 5 2 NB. using { to select indices 3 0 1 and 2 from the vector.
2 3 4 5
    (] {~ /:@~.) 3 4 5 2 3 4 NB. perhaps this is what your code should have been?
2 3 4 5

] {~ /:@~. 周围的括号很重要,因为它们使三个动词 ]{~/:@~. 成为一个叉子,叉子将 ]/:@~. 并使它们成为 {~ 的左右参数 副词 ~ 反转动词 { 的左右参数。我们知道的右参数是 /:@~.,它是唯一索引 3 0 1 2,左参数是 ],它是原始列表 3 4 5 2 3 4。将两者反转等同于

     3 0 1 2  { 3 4 5 2 3 4
2 3 4 5

所以,也许您的意思是 (] {~ /:@~.) 它将对向量的唯一项进行排序?

希望这对您有所帮助。