2016-08-11T17:59Z mt joined 2016-08-11T18:00Z mt: Hi 2016-08-11T18:07Z bernd: Hallo! 2016-08-11T18:07Z bernd: Jetzt bin ich da. 2016-08-11T18:08Z mt: Hallo Bernd 2016-08-11T18:10Z bernd: Hillary Clinton will in Infrastrukturprogramme investieren, eine Idee von Donald Trump ;-) 2016-08-11T18:10Z mt: Soll sie. 2016-08-11T18:11Z bernd: Jaja, ein irrer Wahlkampf, das irrste ist, dass gelegentlich sogar vernünftige Vorschläge gemacht werden. Das irritiert mich zutiefst! 2016-08-11T18:13Z mt: Solche Vorschläge gab es auch anderswo. Mit dem normalen Schicksal nach der Wahl. Verschwunden, manchmal wegen weil... 2016-08-11T18:13Z bernd: "Wahrversprechen, verzweifelt gesucht" ;-) 2016-08-11T18:14Z mt: Ich glaub, wir wissen gar nicht zu schätzen, auf welcher Insel der Glückseligkeit wir leben 2016-08-11T18:15Z bernd: Ne, meine Erfahrung mit China ist, dass wir nur glauben, auf einer Insel der Glückseligen zu sein, weil man uns das ständig erzählt. 2016-08-11T18:15Z bernd: Unser Oberprediger betet auch immer die westlichen Werte gesund. 2016-08-11T18:15Z mt: Klar, aber noch gibt es wenige Tote und die Supermärkte sind gut gefüllt 2016-08-11T18:16Z bernd: Das mit den Supermärkten und den wenigen Toten kriegen die Chinesen auch hin. 2016-08-11T18:16Z mt: Das die zivilisatorische Decke dünn ist, ist mir bewusst 2016-08-11T18:16Z mt: Siehst, die leben auch auf einer Insel. Sogar mit Firewall drumherum 2016-08-11T18:17Z bernd: Genau, aber unsere Politiker bauen ja auch ständig an Vorschlägen, dass wir auch einen bekommen. 2016-08-11T18:17Z bernd: Beim BitTorrent-Traffic soll Deutschland auf Platz 49 liegen, vor Vietnam. 2016-08-11T18:17Z bernd: Vietnam hat eine ganz schlechte dünne Leitung ins weltweite Internet. 2016-08-11T18:17Z bernd: Die können gar nicht soviel saugen wie sie wollen ;-) 2016-08-11T18:17Z martin joined 2016-08-11T18:18Z bernd: Hallo Martin! 2016-08-11T18:18Z martin: Grüß Dich! 2016-08-11T18:18Z mt: Klar, die sehen ja, was China alles kann. Das wollen sie auch. Menschlich verständlich, und unanständig. 2016-08-11T18:18Z mt: Hallo Martin 2016-08-11T18:18Z martin: Allerhand 'krauses zeug' hier: 5404 messages: [2015-09-24T17:42Z<3382E26A148244B1 usw ??? 2016-08-11T18:18Z mt: Bittorrent ist noch ein Thema? Ich dachte, das ist inzwischen ausgestorben 2016-08-11T18:19Z bernd: Außerhalb Deutschlands keineswegs. 2016-08-11T18:19Z bernd: Nur bei uns wegen Abmahnmafia. 2016-08-11T18:19Z bernd: Das ist aber ein ganz spezifisch deutsches Justizwillkürproblem. 2016-08-11T18:19Z mt: Ok, das ist plausibel. 2016-08-11T18:19Z bernd: Knnst du erst mal ignorieren. 2016-08-11T18:19Z martin: Was ignorieren? 2016-08-11T18:20Z bernd: Die Ausgabe, die du gesehen hast. 2016-08-11T18:20Z bernd: Das sagt dem net2o auf deiner Seite, dass ich 5404 Messages habe, und dann gleichmäßig verteilt Timestamps und Hashes. 2016-08-11T18:20Z martin: (Das war ein Scherz: Was ...) Sorry 2016-08-11T18:21Z bernd: Das soll dann den Abgleich erleichtern, weil nur das kopiert werden muss, was noch nicht auf beiden Seiten ist. 2016-08-11T18:21Z mt: Ich hatte nur 5383!!11! ;) 2016-08-11T18:21Z bernd: Ja, etwas weniger, wir chatten ja schon... 2016-08-11T18:21Z bernd: Nächste Woche gibt es dann den Abgleich, versprochen! 2016-08-11T18:22Z mt: ok 2016-08-11T18:25Z mt: Ich wollte dieser Tage mal das (( Thema von Ulli mit Recognizern nachbauen. Die Idee war, das (( den Recognizerstack austauscht und nur noch eine spezielle Suchliste hat, in der praktisch nur nich )) drinsteht und alle anderen Worte als "ok" markiert sind. Sollte natürlich mit amforth und gforth gehen 2016-08-11T18:25Z mt: Naja, gforth kennt recognizer nicht (ohne :) und das r:word fehlt, ist mir auch aufgefallen. 2016-08-11T18:25Z bernd: Für [IF] [ELSE] [THEN] mach' ich sowas ähnliches. 2016-08-11T18:26Z mt: Ja, da würde das Schema auch passe 2016-08-11T18:26Z bernd: Jedes Wort-xt selbst ist sein eigenes r:word. 2016-08-11T18:26Z mt: Mag sein, beim amforth ist das jedenfalls nicht so. 2016-08-11T18:27Z mt: das heisst, r:word ist einfach nur DUP? 2016-08-11T18:27Z bernd: Jaja, das muss man eben so spezifizieren, dass das beides möglich ist. 2016-08-11T18:28Z bernd: Nein, der word-recognizer gibt einfach nur das xt zurück. 2016-08-11T18:28Z bernd: Bzw. das nt, aber das ist in Gforth praktisch das gleiche. 2016-08-11T18:28Z bernd: Also nicht nt r:word, sondern nur nt. 2016-08-11T18:28Z martin: see r:word --> undefined 2016-08-11T18:28Z mt: Schade, anders wär das Leben einfacher. 2016-08-11T18:29Z bernd: Und das lässt sich mit den r>int, r>comp und co nutzen. 2016-08-11T18:29Z bernd: Man könnte natürlich ein Dummy-r:word machen, das einfach nur durchreicht. 2016-08-11T18:30Z mt: Wäre einen Versuch wert 2016-08-11T18:30Z mt: IMHO 2016-08-11T18:31Z mt: Das gforth ganz anders funktioniert muss ja nicht heißen, das andere Systeme das nachbauen müssen. Dafür könnt ihr viel mehr Optimieren... 2016-08-11T18:32Z bernd: Ja, musst du nicht nachbauen. 2016-08-11T18:32Z bernd: Du musst das in deinem RfC nur so spezifizieren, dass das, was Gforth macht, auch zulässig ist. 2016-08-11T18:33Z mt: Solange Du es nicht rec:word nennst, ist die Welt IMHO auch im Lot. 2016-08-11T18:33Z bernd: Nein, rec:word darf das heißen. rec:word gibt eben nicht definitiv ein r:word zurück, wenn es Erfolg hat. Nur ein r:fail, wenn es fehlschlägt. 2016-08-11T18:34Z bernd: Was es im Erfolgsfall zurückgibt, ist implementierungsabhängig, aber immer so, dass r>int, r>comp und r>post darauf angewendet den spezifizierten Effekt haben. 2016-08-11T18:35Z mt: Seh ich halt anders. Im Core von amforth wird das r:* Token nunmal gefressen und das XT/flag vom rec:word wird verarbeitet. Wenn ich name tokens haben will, nehme ich rec:name 2016-08-11T18:35Z bernd: Du darfst das r:*-Token nicht "fressen", sondern musst es verarbeiten. 2016-08-11T18:35Z mt: fressen == verarbeiten 2016-08-11T18:35Z bernd: Ja, und zum Verarbeiten darfst du r>int, r>comp und r>post verwenden. 2016-08-11T18:35Z bernd: Und das geht ja mit den Rückgaben von meinem rec:word. 2016-08-11T18:37Z mt: Da solltet ihr euch nochmal im September drüber austauschen. Meine Lösugn mit den zwei Zahlen erscheint mir einfacher und nachvollziehbarer. Deine Lösung ist mit zuviel optimiert. 2016-08-11T18:38Z bernd: Bei mir weiß jedes Wort, was es zu tun hat. Das ist zum Teil auch Ballast, wie Antons Dual-Xt-Wörter, die eben eine etwas eigenwillige Behandlung brauchen. 2016-08-11T18:39Z bernd: Deshalb gibt es kein generisches r:word, weil das diese eigentwillige Behandlung nicht machen könnte. 2016-08-11T18:39Z bernd: Weil jedes Wort eh selber weiß, was es tun soll, kann man r>int, r>comp und r>post so implementieren, dass sie direkt auf die Wörter arbeiten. 2016-08-11T18:39Z bernd: r:num ist auch nur ein xt. 2016-08-11T18:40Z bernd: Es ist halt bei mir keine Tabelle, das ist der ganze Unterschied. 2016-08-11T18:42Z mt: Jedenfalls kann ich nicht die (( mit Recognizern umsetzen die sowohl im amforth wie im gforth ohne IFDEF's arbeiten. Und das finde ich schade. 2016-08-11T18:42Z bernd: Warum denn nicht? 2016-08-11T18:43Z bernd: Der Recognizer schlägt fehl, wenn r:fail gekommen ist. 2016-08-11T18:44Z bernd: Ach ja, ich sehe, dann willst du einen Erfolgsfall zurückgeben, und zwar den von noop. 2016-08-11T18:44Z bernd: Dann musst du dir halt ein r:success bauen, das geht auf jeden Fall. 2016-08-11T18:44Z mt: Ich habe mir einen Recognizer gebastelt, der nur in der Kommentar-Wortliste sucht (also nur )) findet) und einen, der alles als "ok aber mach nichts" einstuft 2016-08-11T18:44Z bernd: Das r:success macht halt in jedem Fall nichts. 2016-08-11T18:45Z bernd: Das r:success kannst du dir aber unabhängig vom System bauen. 2016-08-11T18:45Z mt: Für den rec:comment brauch ich halt ein r:word als Returnwert, damit der amforth Core damit zurecht kommt 2016-08-11T18:45Z mt: Der sieht etwa so aus: 2016-08-11T18:45Z mt: : rec:comment ( addr len -- xt +/-1 r:word | r:fail ) 2016-08-11T18:45Z mt: comments search-wordlist ( xt +/-1 | 0 ) 2016-08-11T18:45Z mt: ?dup if ( r:word ) else r:fail then ; 2016-08-11T18:45Z bernd: Wieso kommt das mit einem neu konstruierten r:success nicht zurech? 2016-08-11T18:45Z mt: Sozusagen der normale rec:word, nur ohne search order 2016-08-11T18:47Z mt: wenn der also ein Wort aus comments findet, soll er es auch ausführen. Dabei wird dann im wesentlichen der forth recognizer stack wieder zurückgesetzt, so dass es normal weiter gehen kann 2016-08-11T18:48Z bernd: Ja, ist mir schon klar, dafür gibt es momentan keine klare Abstraktion. 2016-08-11T18:49Z mt: Ähnliche Situationen hatte ich schon ein paar mal, aber erst jetzt habe ich ein greifbares und nachvollziehbares Beispiel. Sonst war das aus vielen Gründen zu vage 2016-08-11T18:50Z mt: Der Code ist auch nicht wirklich fertig, ich wollte das auch mit gforth entwickeln und mit amforth testen. 2016-08-11T18:51Z bernd: Ich mach' mal ein r:word für ( xt +-1 ) und r:name für ( nt ) 2016-08-11T18:51Z mt: cool, danke 2016-08-11T18:52Z martin: Ich sag mal Gute Nacht! 2016-08-11T18:53Z bernd: Gute Nacht! 2016-08-11T18:53Z martin: CU 2016-08-11T18:53Z mt: Ciao Martin 2016-08-11T18:53Z martin left 2016-08-11T18:53Z bernd: Ok, mal testen... 2016-08-11T18:53Z bernd: :noname drop execute ; 2016-08-11T18:53Z bernd: :noname 0> IF execute ELSE compile, THEN ; 2016-08-11T18:53Z bernd: :noname swap postpone literal postpone literal ; 2016-08-11T18:53Z bernd: recognizer: r:word 2016-08-11T18:53Z mt: Ich glaub, den haben wir verärgert ;) 2016-08-11T18:53Z bernd: 1234 ' dup 1 r:word r>int execute .s <2> 1234 1234 ok 2016-08-11T18:54Z bernd: : test [ ok 2016-08-11T18:54Z bernd: ' dup -1 r:word r>comp execute ok 2016-08-11T18:54Z bernd: ] ; ok 2016-08-11T18:54Z bernd: see test 2016-08-11T18:54Z bernd: : test 2016-08-11T18:54Z bernd: dup ; ok 2016-08-11T18:56Z bernd: : test1 [ ' dup -1 r:word >postpone ] ; 2016-08-11T18:56Z bernd: see test1 2016-08-11T18:56Z bernd: : test1 ['] 2016-08-11T18:56Z bernd: dup -1 139630577902232 >comp ; ok 2016-08-11T18:56Z bernd: immediate ok 2016-08-11T18:56Z bernd: : test2 test1 ; ok 2016-08-11T18:56Z bernd: see test2 2016-08-11T18:56Z bernd: : test2 2016-08-11T18:56Z bernd: dup ; ok 2016-08-11T18:56Z bernd: Ok, das sieht gut aus. 2016-08-11T18:57Z mt: Dann brauchts nur noch RECOGNIZER (ohne :) ;) 2016-08-11T18:57Z bernd: Ok, das lässt sich schnell ändern. 2016-08-11T18:57Z bernd: Wenn du dann noch set-recognizer und get-recognizer auf deque! und deque@ änderst ;-) 2016-08-11T18:57Z bernd: Denn die sind so ja generische Funktionen. 2016-08-11T18:58Z mt: das wording von do-recognizer ist auch wohl eher suboptimal. ;) 2016-08-11T19:00Z mt: Ich würde aber schon gerne bei der Bezeichnung der Aufgabe bleiben, deqeue's sind nur eine Implementierungsmethode. 2016-08-11T19:00Z bernd: Nein, das ist die Aufgabe. 2016-08-11T19:01Z bernd: Die Recognizer sind nur ein Nutzer. 2016-08-11T19:01Z mt: Synonyme sind schon bei forth angekommen ;) 2016-08-11T19:01Z bernd: Es ist halt ein allgemein verwendbares Tool, das nicht allgemein verwendet wird, wenn es einen speziellen Namen hat. 2016-08-11T19:02Z mt: Auch wenn ich ein Fan von kurzen Namen bin. Beim amforth sind so ca 1/4 des Codespaces nur für die Namen "verbraucht". 2016-08-11T19:02Z bernd: Du kannst immer noch : set-recognizers forth-recognizer deque! ; machen. 2016-08-11T19:02Z bernd: Das ist dann ein Special-Purpose-Name für den special Purpose. 2016-08-11T19:02Z mt: forth-recognizers ist schon ein parameter für set-recognizers. 2016-08-11T19:02Z bernd: Ja, damit wird aber set-recognizers ein generisches Wort, und sollte nicht mehr un-generisch heißen. 2016-08-11T19:03Z bernd: Du kannst diese Stacks dann beliebig benutzen, und dann sollte man das auch so ansagen. 2016-08-11T19:03Z mt: Ich werd mich einem Stack RFD nicht widersetzen ;) 2016-08-11T19:04Z bernd: Ja, kein Problem, das dann abzutrennen. 2016-08-11T19:05Z mt: Scheint so, als ob die Standardbibliothek für forth entstehen könnte. 2016-08-11T19:05Z mt: So mit generischen Datenstrukturen und so Zeugs. 2016-08-11T19:05Z bernd: Ja. 2016-08-11T19:06Z bernd: Diese deque braucht dann wohl noch einen Iterator, der von oben nach unten abarbeitet. 2016-08-11T19:06Z mt: Vor allem mit Worten, damit zu arbeiten, deren Worte auch festelegt sind. Sinnvoll ist das allemal 2016-08-11T19:06Z bernd: Mit dem man dann map-recognizers implementieren kann. 2016-08-11T19:07Z mt: Ist ja schon bei der Diskussion etwas aufgekommen. Search Order und Recognizer Stack(s) benutzen die gleichen Werkzeuge. 2016-08-11T19:07Z bernd: Ja. 2016-08-11T19:08Z bernd: Oder zumindest sehr ähnliche, die man mit etwas Willen dann gleichsetzen kann. 2016-08-11T19:09Z mt: Muss man aber nicht. Wer will, der kann, wer nicht, auch ok. 2016-08-11T19:09Z bernd: Genau, wordlists müssen keine Recognizer-xts sein, können aber. 2016-08-11T19:11Z mt: Ich finde die Chains von winforth ja recht charmant, auch wenn ich die eigentlich total falsch verstanden habe. Die kann man mit den gleichen Werkzeugen bauen. 2016-08-11T19:11Z bernd: Ja, kann man. 2016-08-11T19:11Z bernd: :noname r>int execute ; 2016-08-11T19:11Z bernd: :noname r>comp execute ; 2016-08-11T19:11Z bernd: ' lit, 2016-08-11T19:11Z bernd: recognizer r:name ( takes nt, i.e. result of find-name and find-name-in ) 2016-08-11T19:11Z bernd: So, das r:name ist jetzt auch fertig. 2016-08-11T19:12Z bernd: 1234 ' dup r:name r>int execute . . 1234 1234 ok 2016-08-11T19:12Z bernd: : test [ ' dup r:name r>comp execute ] ; ok 2016-08-11T19:12Z bernd: : test1 [ ' dup r:name >postpone ] ; immediate ok 2016-08-11T19:12Z bernd: : test2 test1 ; ok 2016-08-11T19:12Z bernd: see test2 2016-08-11T19:12Z bernd: : test2 2016-08-11T19:12Z bernd: dup ; ok 2016-08-11T19:12Z bernd: see test 2016-08-11T19:12Z bernd: : test 2016-08-11T19:12Z bernd: dup ; ok 2016-08-11T19:18Z mt: ich klink mich dann mal aus. War ein langer Tag 2016-08-11T19:18Z mt: Bis neulich dann 2016-08-11T19:18Z bernd: Ciao 2016-08-11T19:18Z mt left 2016-08-11T19:18Z bernd macht das Licht aus