算术平均值是向前还是向后?

时间:2015-06-04 15:29:42

标签: j tacit-programming

我熟悉J:

中这种算术平均值的方法
+/ % #

但它也显示为here

# %~ +/

这两个版本是否可以互换,如果不是,我何时应该使用哪一个?

3 个答案:

答案 0 :(得分:3)

Dyadic <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> 颠倒了动词的论点。 int idMain = object.getInt("idMain"); String date = object.getString("date"); String name = object.getString("name"); double value = object.getDouble("value"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date datePar = sdf.parse(date); 相当于~。当你,嗯,想要反转动词的参数时,你使用x f~ y

其最常见的用途之一是用于叉子和挂钩的组合。例如,由于y f x~,因此您可以在需要y f (g y)时使用(f g) y

答案 1 :(得分:2)

在相反的例子中,我并没有真正看到一种方式比另一种方式(VVV形式的叉子)更有效的原因,但是因为J中的叉子可以是非对称的(在NVV形式中)我可以看到一些原因,倒转叉的中间叉是一个优势。举个例子:

   (5 # $) 1 2 3  NB. (N V V) form
3 3 3 3 3
   (5 #~ $) 1 2 3 NB. (N V~ V) becomes effectively (V V N)
5 5 5
   ($ # 5) 1 2 3  NB. (V V N) is a syntax error  
|syntax error
|       ($#5)1 2 3

答案 2 :(得分:1)

Dyadic ~是&#34;被动&#34;副词,交换左右参数。因此x f~ yy f x相同。 +/ % ## %~ +/是等效的。 2 % 5为您提供了0.4,但2 %~ 5提供了2.5

可以方便的地方是检查您正在使用的线的结果。虽然您可能会测试更复杂的东西,但您可以通过重复最后一行来检查自己,只需添加到左侧而不重新排列任何内容或添加括号。

   string =. 'J is beyond awesome.'
   'e' = string
0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0
   string #~ 'e' = string
eee

monadic ~是&#34; Reflex&#34;副词,它使修改后的动词作为二元组操作,复制左右两个单个参数。虽然这是安排你的论点的另一个捷径,但它与二元~完全不同。 *~ 416,因为您将y与其自身相乘(y * y)。