سؤال

وأنا بدأت للتو في محاولة لالتقاط لغة J، وأنا في حيرة من ما يلي:

   1 2 +/@{ i.4
1 2
   +/ 1 2 { i.4
3

وعندما تكون في وثائق @ تقول: "س ش ص @ الخامس ↔ ش س ت ذ"

وأفترض أنا فقط ظنا جزء واحد من خطاب لآخر، ولكن لا يمكن معرفة ذلك

وأيضا، كيف يمكنني معرفة ما نوع الكلام هو الاسم؟

هل كانت مفيدة؟

المحلول

   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

وهذا ما أردت. اعتقد انا ذاهب لدينا لقراءة بعض أكثر على رتبة، وهذا هو الفرق الوحيد بين @ و @:

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top