J неявная оценка фразы

Почему 2(*i.)5 оценивается как 0 2 4 6 8 ?

Понятно, что 2*i.5 делает, но () создает хук, и вычисление справа налево кажется, что мы получаем

 (*i.)5  ==  0 5 10 15 20

и 2 не будут действовать в этом списке - так где я ошибаюсь?


person user1202733    schedule 21.03.2015    source источник


Ответы (2)


2 (* i.) 5 — это диадический хук, который переводится как 2 * (i. 5).

(* i.) 5 — это монадический хук, который переводится как 5 * (i. 5).

Диадический крючок x (u v) y эквивалентен x u (v y), который совпадает с x u v y.

Монадический хук (u v) y эквивалентен y u (v y), который совпадает с y u v y.

http://www.jsoftware.com/jwiki/Vocabulary/hook

person Dane    schedule 21.03.2015
comment
Хорошее объяснение. Книга, которую я читал, не объясняла эти случаи (даже существовали), а просто сразу приводила пример. Теперь я знаю, где искать! - person user1202733; 27.03.2015

x (u v) y ‹--> x u (v y) для диадических крючков.

Может использоваться преобразование y в форму x, как показано на http://www.jsoftware.com/jwiki/Vocabulary/hook

   [t=.i. 3 2
0 1
2 3
4 5

   2 3 ($ ,) t
0 1 2
3 4 5
person bob    schedule 21.03.2015