00:00:00 --- log: started forth/18.07.22 00:44:07 --- join: epony (~nym@77-85-135-149.ip.btc-net.bg) joined #forth 01:04:53 --- join: phadthai (mmondor@ginseng.pulsar-zone.net) joined #forth 01:31:05 --- quit: pierpal (Ping timeout: 260 seconds) 02:01:54 --- join: pierpal (~pierpal@host141-208-dynamic.11-87-r.retail.telecomitalia.it) joined #forth 02:02:31 --- quit: pierpal (Remote host closed the connection) 02:24:25 --- join: wa5qjh (~quassel@175.158.225.207) joined #forth 02:24:25 --- quit: wa5qjh (Changing host) 02:24:25 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 02:25:36 --- join: proteusguy (~proteus-g@14.207.1.113) joined #forth 02:25:36 --- mode: ChanServ set +v proteusguy 03:12:19 --- quit: jedb_ (Ping timeout: 240 seconds) 03:30:01 --- join: jedb_ (~jedb@199.66.90.113) joined #forth 04:54:14 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 05:07:09 --- join: pierpal (~pierpal@host141-208-dynamic.11-87-r.retail.telecomitalia.it) joined #forth 05:07:49 --- quit: proteusguy (Remote host closed the connection) 05:35:00 --- join: proteusguy (~proteus-g@cm-134-196-84-221.revip18.asianet.co.th) joined #forth 05:35:00 --- mode: ChanServ set +v proteusguy 06:36:46 --- nick: jedb_ -> jedb 06:38:47 --- join: gravicappa (~gravicapp@h178-129-96-235.dyn.bashtel.ru) joined #forth 06:49:06 --- quit: dave9 (Quit: one love) 06:57:27 --- quit: pierpal (Quit: Poof) 06:57:47 --- join: pierpal (~pierpal@host141-208-dynamic.11-87-r.retail.telecomitalia.it) joined #forth 07:04:15 --- quit: wa5qjh (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) 07:43:37 --- join: dys (~dys@tmo-100-235.customers.d1-online.com) joined #forth 07:45:49 Guys, I'm finding that these conditional and multi-level return words are really, REALLY shortening my code. They're extremely useful, just over and over agin. 07:46:24 There's a fair number of them to cover all the possibilities, but I've decided they're more than worth it. 07:51:18 multi-level return? 07:52:35 --- quit: dys (Ping timeout: 260 seconds) 07:53:13 Return to caller's caller, and so on. Basically R> DROP ; as a primitive. 07:53:30 I have unconditional and a full set of conditional versions of that. 07:53:40 I call it ;; 07:53:59 And I also have a word n; that you can pass a parameter to - 0 gets you a normal return, and you go up from there. 07:54:09 That doesn't get used as much, but I've used it a couple of times in this system. 07:54:24 It enables some nice control structures that span call-return levels. 07:54:39 A word can test something, and depending on the test it can return either to its caller or its caller's caller. 07:55:05 I find I don't wind up using IF ... THEN much - generally there's a shorter better way to do whatever needs doing using the conditional / multi returns. 07:56:29 If I need a whole IF ELSE THEN then I usually have to write it out. 07:56:39 But the simple conditional stuff gets covered. 07:57:19 I also have return capability that doesn't end the definition - I call that one ;, 07:57:32 And I've got ;;, as well. Those are handy also. 07:57:49 I think the impact it has on code size really arises from having the whole family so I can pick the right one. 08:06:51 yeah, I think this is a good example why Forth is a growable language per Guy Steele 08:09:16 Yes, I couldn't do anything like this in any other language. At least not so... "naturally." 08:09:47 So today I'm re-writing EXPECT to work with the new non-blocking keyboard I/O I got working yesterday. 08:10:19 I was basically "cheating" with the prior EXPECT - I didn't have KEY, and EXPECT just did a MacOS system call that brought in a whole line. 08:10:47 It's still not totally non-blocking; I can get back every keystroke, but at the moment it's still blocking for each one. 08:11:24 I'll have to fix that eventually, but the KEY word itself is supposedto be blocking, so that step won't change anything outside of KEY. 08:14:11 --- quit: dzho (Quit: leaving) 08:14:20 --- join: dzho (~dzho@unaffiliated/dzho) joined #forth 08:40:35 KipIngram, it makes tail call optimization impossible though 08:40:45 What does? 08:40:58 multireturns 08:41:05 Tail optimization doesn't really apply to ;; but I do have it in and working for ; and ;, 08:41:22 And yes, if I said 0 n; it wouldn't tail optimize that. 08:41:31 Even though in theory it could. 08:41:42 so what if you tail-call a word that uses ;; 08:42:01 It doesn't get optimized - it would do the usual return stack utilization. 08:42:46 But the ;; stuff and the n; stuff are completely separate words from ; and ;, so I can still optimize the latter. 08:43:11 no I'm not talking about optimizing ;; 08:43:27 You're talking about optimizing a final word that uses multi-return. 08:43:50 Yes, I think you're right about that - I'll have to make sure I don't do that. I haven't thought it all the way through, but it seems like that might cause a problem. 08:44:21 If I'm in a situation where I'm *counting* items on the return stack (so to speak), then they have actually to be there. 08:44:25 Good point. 08:44:58 : foo ;; : bar foo ; ( if you tco where bar calls foo, then foo's ;; will rdrop bar's return address instead of foo's ) 08:45:15 Yes - I'm with you. 08:45:21 I think you're right. 08:45:30 I have to "be aware." 08:45:42 I do have the ability to suppress tco case-by-case. 08:46:20 But having that kind of understanding of what's going on is sort of part of my whole design philosophy - I'll take responsibility for that vulnerability. 08:46:59 The whole idea os spreading control structures across levels is sort of contrary to the "don't worry about how the callee works - just call it" philosophy that's common in programming. 08:47:21 When I'm using these tools I regard the whole tree of words as a "unified whole." 08:47:30 Up to a point at least. 08:47:41 fair enough 08:48:47 If you'd asked me this a few months ago I probably would have agitated over it and had doubts about the whole idea. But now I've seen the impact it has on producing tight code - it's worth it to me. :-) 09:13:45 KipIngram: re KEY in eForth it uses ?KEY ( -- ch T | F ) basically : KEY BEGIN ?KEY UNTIL ; 09:14:37 Right - I'll be implementing ?KEY for sure. 09:14:51 And it will be tied into the thread switching system. 09:15:11 It's a cooperative system, so I'll have to make sure anything it switches to won't keep control for too long. 09:15:29 That's later, though - for now I'm probably just going to put a 50 ms or so sleep inside that loop. 09:18:35 well, one trick I saw regarding cooperative multitasking systems in Forth was that the flow control primitives do a fast "should there be a task-switch here?" check. 09:19:14 usually by decrementing an down counter and branching to task-switch code if that counter is zero 09:19:30 Ah, I see. Yes, I guess there are lots of possibilities there. 09:19:40 Still a ways down the road for me. 09:19:57 I'm getting close, though, to being ready to start on the editor / source database management stuff. 09:20:29 The source will be more than just a mound of text in this system. 09:21:39 I'm probably going to go ahead and do the full raw mode on the keyboard, so I'll have to make some character tables and so on to support that. 09:21:54 But I figure if I ever port to bare metal that will have to be done, so I may as well bite it off now. 09:22:27 I'm not 100% sure of that - it may be that keyboard controllers are capable of delivering ASCII. I'm not sure exactly how much capability they have. 09:41:15 I'm assuming, though, that in full raw mode all I will get will be single-byte make and break codes. That's actually a good thing - I won't have to deal with the way some keys return several characters in normal mode (cursor keys, F-keys). 09:41:31 So even though I'll need tables I expect the code to be cleaner. 10:19:48 --- join: MickyW (~MickyW@p4FE8C2BB.dip0.t-ipconnect.de) joined #forth 10:45:24 --- quit: pierpal (Quit: Poof) 10:45:42 --- join: pierpal (~pierpal@host141-208-dynamic.11-87-r.retail.telecomitalia.it) joined #forth 10:55:18 KipIngram: keysym are what keyboards produce 11:01:11 --- join: dys (~dys@tmo-121-97.customers.d1-online.com) joined #forth 11:20:25 Is that another word for the make/break codes? 11:30:12 well keydown and keyup codes but yeah 11:48:08 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 12:12:43 --- quit: gravicappa (Ping timeout: 264 seconds) 12:13:25 --- quit: MickyW (Quit: Leaving. Have a nice time.) 13:16:35 --- quit: pierpal (Quit: Poof) 13:16:52 --- join: pierpal (~pierpal@host141-208-dynamic.11-87-r.retail.telecomitalia.it) joined #forth 13:31:09 --- join: pierpa (570bd08d@gateway/web/freenode/ip.87.11.208.141) joined #forth 13:40:46 --- quit: mtsd (Quit: Leaving) 13:46:55 --- quit: dave0 (Ping timeout: 264 seconds) 14:36:05 --- quit: ncv (Ping timeout: 276 seconds) 15:27:56 --- join: wa5qjh (~quassel@175.158.225.208) joined #forth 15:27:56 --- quit: wa5qjh (Changing host) 15:27:56 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 15:48:19 --- quit: pierpal (Ping timeout: 240 seconds) 17:28:48 --- quit: wa5qjh (Remote host closed the connection) 17:54:13 --- join: karswell (~user@cust125-dsl91-135-5.idnet.net) joined #forth 17:58:47 --- join: pierpal (~pierpal@host141-208-dynamic.11-87-r.retail.telecomitalia.it) joined #forth 18:02:49 --- quit: pierpal (Ping timeout: 240 seconds) 18:08:59 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 18:12:27 --- quit: MrMobius (Ping timeout: 276 seconds) 18:12:27 --- nick: [1]MrMobius -> MrMobius 18:15:21 --- quit: dddddd (Remote host closed the connection) 18:22:30 --- quit: X-Scale (Ping timeout: 248 seconds) 18:23:10 --- join: [X-Scale] (~ARM@83.223.243.6) joined #forth 18:23:27 --- nick: [X-Scale] -> X-Scale 18:33:15 --- join: pierpal (~pierpal@host141-208-dynamic.11-87-r.retail.telecomitalia.it) joined #forth 18:38:15 --- join: dave0 (~dave@90.20.215.218.dyn.iprimus.net.au) joined #forth 18:56:14 --- join: reepca-laptop (~user@208.89.170.250) joined #forth 19:16:16 --- join: wa5qjh (~quassel@175.158.225.208) joined #forth 19:16:16 --- quit: wa5qjh (Changing host) 19:16:16 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 19:18:53 --- quit: pierpa (Quit: Page closed) 19:51:52 --- quit: pierpal (Quit: Poof) 19:52:10 --- join: pierpal (~pierpal@host141-208-dynamic.11-87-r.retail.telecomitalia.it) joined #forth 20:32:09 --- quit: wa5qjh (Read error: Connection reset by peer) 20:35:27 --- join: wa5qjh (~quassel@175.158.225.198) joined #forth 20:35:27 --- quit: wa5qjh (Changing host) 20:35:27 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 20:52:21 --- quit: wa5qjh (Ping timeout: 276 seconds) 20:53:38 --- join: wa5qjh (~quassel@175.158.225.198) joined #forth 20:53:38 --- quit: wa5qjh (Changing host) 20:53:38 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 21:20:06 --- quit: dave0 (Quit: one love) 23:09:16 --- quit: proteusguy (Remote host closed the connection) 23:31:52 --- join: proteusguy (~proteus-g@14.207.1.113) joined #forth 23:31:52 --- mode: ChanServ set +v proteusguy 23:50:29 --- join: gravicappa (~gravicapp@h178-129-98-142.dyn.bashtel.ru) joined #forth 23:54:30 --- join: leaverite (~quassel@175.158.225.192) joined #forth 23:54:30 --- quit: leaverite (Changing host) 23:54:30 --- join: leaverite (~quassel@freebsd/user/wa5qjh) joined #forth 23:54:46 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 23:56:54 --- quit: wa5qjh (Remote host closed the connection) 23:59:59 --- log: ended forth/18.07.22