2017-02-02 2 views
0

Kann mir jemand dieses Verhalten von k3 erklären oder in die richtige Richtung weisen? Ich benutze Kona.Kann jemand diese Eigenart bei der Anwendung von Funktionen in k3 erklären?

> (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 

Insbesondere warum (1e2>-1#) oder ((1e2)>-1#) funktioniert nicht wie (1e2>+/-1#). Ich finde es verwirrend, da +/-1# und -1# für mich gleich sind.

Antwort

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

Dies hält auf die Funktion {x,1+-1#x} auf dem Ergebnis der Anwendung (beginnend mit 1), bis (1e2>+/-1#) conition wahr wird./agiert hier als Overoperator.

Funktion {x,1+-1#x} nimmt nur das letzte Element der Liste, fügt 1 hinzu und fügt es dann am Ende der Liste an. (1e2>+/-1#) ist die Bedingung, die prüft, ob 100 größer als das letzte Element der Liste ist.

+0

Ich sollte meine Frage besser formulieren, aber warum ist '((1e2)> - 1 #)' keine gültige Bedingung? –

+0

Die Bedingung sollte ein boolesches Atom (1b oder 0b) zurückgeben, -1 # gibt eine Liste von count 1 (und kein Atom) zurück. Wenn du also (1e2)> (irgendeine Liste) tust, gibt es dir eine Liste zurück, also keine gültige Bedingung. +/wandelt im Grunde eine Liste von count 1 in ein Atom um. – Akash

+0

Als ein zusätzlicher Punkt: +/ist effektiv das Gleiche wie die Summe – terrylynch

Verwandte Themen