質問
私はちょうどJ言語をピックアップしようとし始めていて、次のように混乱しています:
1 2 +/@{ i.4
1 2
+/ 1 2 { i.4
3
するとき、それは言う@のドキュメントで: "Xのu @のV yを↔uがV yをx" は
私は、私はちょうど別のための音声の一部を間違えてると仮定し、それを把握することはできません。
また、どのように私は名前はスピーチの種類教えていますか?
解決
NB. u b. 0 returns the rank of u NB. the rank of a verb determines the arguments it applies to at a time NB. monadic + y applies to atoms; dyadic x + y applies to pairs of atoms + b. 0 0 0 0 NB. monadic +/ y and dyadic x +/ y apply to anything (unbounded rank) +/ b. 0 _ _ _ NB. monadic { y applies to arrays of atoms; NB. dyadic x { y applies to pairs of atoms and anything { b. 0 1 0 _ NB. u @ v has the rank of v +/@{ b. 0 1 0 _ NB. since 1 2 { i.4 returns atoms at a time, +/ works on atoms +/"0 [ 1 2 { i.4 1 2 NB. u @: v has unbounded rank +/@:{ b. 0 _ _ _ NB. +/ applies to all of 1 2 { i.4 at once +/"_ [ 1 2 { i.4 3 NB. mechanical translation to tacit form 13 : '+/ x { y' [: +/ {
他のヒント
ウィキペディアは私の偏った意見、ランク上のまともなWRITEUP、とそれがJで「スピーチ」のさまざまな部分の文脈で意味で、持っています。
元の質問に答えることが、その文法がどのように機能するか、Jのトレース機能を理解するのに役立つことができます:
require'trace'
trace '1 2 +/@{ i.4'
これは、各生産ルールとそれぞれが生成する結果によって消費された単語を示す、構文解析プロセスをステップバイステップになります。
代わりに@
ああ、私は、@を使用する必要があり、それを考え出したかもしれないと思います
1 2 +/@:{ i.4
3
これは私が欲しかったものです。
:私は、@と@の間の唯一の違いである、ランクにいくつかのより多くを読むために持っているつもりだと思います所属していません StackOverflow