2017-02-02 16 views
0

Может кто-нибудь объяснить это поведение k3 мне или указать мне в правильном направлении? Я использую kona.Может ли кто-нибудь объяснить эту причуду при применении функций в k3?

> (1e2>+/-1#){x,1+-1#x}/1 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 
> ((1e2)>-1#){x,1+-1#x}/1 
1 

В частности, почему (1e2>-1#) или ((1e2)>-1#) не работает, как (1e2>+/-1#). Я нахожу это запутанным, так как +/-1# и -1# такие же, как я.

ответ

0
(1e2>+/-1#){x,1+-1#x}/1 

Это держит на применении функции {x,1+-1#x} от результата (начиная с 1) до тех пор, пока (1e2>+/-1#) conition становится верным./действует как над собой оператор.

Функция {x,1+-1#x} просто берет последний элемент списка, добавляет 1 к нему и затем добавляет его в конец списка. (1e2>+/-1#) - это условие, которое проверяет, является ли 100 больше, чем последний элемент списка.

+0

Я должен рассказать о своем вопросе лучше, но почему '((1e2)> - 1 #)' не является допустимым условием? –

+0

условие должно возвращать булевой атом (1b или 0b), -1 # возвращает список счетчика 1 (а не атом). так что если вы делаете (1e2)> (любой список), он вернет вам список, следовательно, не является допустимым условием. +/в основном преобразует список счетчиков 1 в атом. – Akash

+0

В качестве дополнительной точки: +/фактически совпадает с суммой – terrylynch

 Смежные вопросы

  • Нет связанных вопросов^_^