00:00:00 --- log: started forth/17.04.30 00:04:14 --- quit: dual (Ping timeout: 260 seconds) 00:05:50 --- join: dual (~bonafide@69.39.96.53) joined #forth 00:37:51 --- quit: dual (Ping timeout: 240 seconds) 00:39:29 --- join: dual (~bonafide@subzeroup.core.rzwireless.net) joined #forth 01:21:45 --- join: wa5qjh (~Thunderbi@121.54.90.131) joined #forth 01:27:48 --- quit: dual (Ping timeout: 252 seconds) 01:29:39 --- join: dual (~bonafide@69.39.96.102) joined #forth 01:40:47 --- quit: dual (Ping timeout: 255 seconds) 01:42:31 --- join: dual (~bonafide@69.39.96.102) joined #forth 01:48:12 --- join: true-grue (~true-grue@176.14.219.178) joined #forth 02:16:23 --- join: GeDaMo (~GeDaMo@212.225.127.213) joined #forth 02:16:57 --- quit: dual (Ping timeout: 240 seconds) 02:18:34 --- join: dual (~bonafide@subzeroup.core.rzwireless.net) joined #forth 02:20:31 --- join: John[Lisbeth] (~user@2601:601:8f01:a6a0:ddcc:310e:79e:8289) joined #forth 02:25:28 --- quit: dual (Ping timeout: 260 seconds) 02:27:05 --- join: dual (~bonafide@69.39.96.183) joined #forth 03:15:12 --- quit: dual (Ping timeout: 245 seconds) 03:17:18 --- join: dual (~bonafide@69.39.105.216) joined #forth 03:43:32 --- quit: wa5qjh (Remote host closed the connection) 03:46:29 --- join: wa5qjh (~Thunderbi@121.54.90.131) joined #forth 04:00:25 --- quit: dual (Read error: Connection reset by peer) 04:05:33 --- join: dual (~bonafide@69.39.105.199) joined #forth 04:14:30 --- quit: dual (Ping timeout: 240 seconds) 04:16:24 --- join: dual (~bonafide@69.39.105.199) joined #forth 04:28:52 --- quit: dual (Ping timeout: 268 seconds) 04:30:12 --- join: dual (~bonafide@69.39.105.199) joined #forth 04:51:57 --- quit: dual (Ping timeout: 240 seconds) 04:53:43 --- join: dual (~bonafide@69.39.105.86) joined #forth 05:02:51 --- quit: dual (Ping timeout: 240 seconds) 05:04:38 --- join: dual (~bonafide@69.39.105.86) joined #forth 05:29:26 --- quit: rgrinberg (Remote host closed the connection) 05:29:26 --- quit: ggherdov` (Remote host closed the connection) 05:39:35 --- quit: dual (Read error: Connection reset by peer) 05:41:11 --- join: ggherdov` (sid11402@gateway/web/irccloud.com/x-avdqydfkazenruku) joined #forth 05:42:58 --- join: dual (~bonafide@subzeroup.core.rzwireless.net) joined #forth 05:51:17 --- join: rgrinberg (sid50668@gateway/web/irccloud.com/x-rfaanlexzuaeqykp) joined #forth 05:53:05 --- join: gravicappa (~gravicapp@ppp83-237-174-46.pppoe.mtu-net.ru) joined #forth 05:59:05 zy]x[yz: I am using ``.0'' :) . 06:34:22 --- quit: dual (Ping timeout: 260 seconds) 06:35:50 --- join: dual (~bonafide@subzeroup.core.rzwireless.net) joined #forth 07:12:33 why? 07:14:51 MnML :) 07:25:29 --- quit: dual (Ping timeout: 255 seconds) 07:25:40 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 07:26:26 --- quit: Zarutian (Read error: Connection reset by peer) 07:27:10 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 07:27:13 --- join: dual (~bonafide@69.39.99.29) joined #forth 07:28:44 so why not .f or .4 07:35:18 No reason. 08:14:56 sounds good to me! 08:20:36 --- quit: dual (Ping timeout: 260 seconds) 08:22:13 --- join: dual (~bonafide@69.39.105.199) joined #forth 08:22:39 :3 08:25:19 --- quit: dys (Read error: Connection reset by peer) 08:35:48 --- join: dys (~dys@ip-109-40-3-76.web.vodafone.de) joined #forth 08:45:29 --- quit: dual (Quit: Why is the alphabet in that order? Is it because of that song?) 08:50:16 true-grue: see this channel for the very same attitude. :) 09:52:24 DGASAU, I'm sorry? I'm afraid that I've missed the context. 10:12:48 Well, the problem is that they see their opponents as trolls. The internet was much better place to discuss when people did not call each other "trolls". 10:24:45 Yes. It's interesting that this "troll" definition appeared not so long ago. In 90s, in the times of Usenet/Fidonet we had "holy wars", "flames" and so on. Still we had some specific culture and netiquette. 10:26:19 For me, to call your opponent as "troll" means just reveal your weak position. 10:27:51 So, after famous Eternal September we got random people who call each other "trolls" etc. 10:28:34 so it is basically Eternal September fault that people new to the 'Net never learned Nettique 10:28:37 AFAIK, it comes from around mid-2000s. 10:29:11 Zarutian, Well, it sounds reasonable for me. Internet was not designed for masses originally. 10:32:48 Anyway, since you're aware of FTN and USENET, you might notice that all these newcomers don't even use the original meaning of "troll". 10:34:14 A monster under the bridge from fairy tales? :) 10:34:16 (And since you're aware of FTN, you may remember that even requirement of using real names doesn't protect you from somewhat similar behaviour of "kashhenits".) 10:34:24 --- join: leaverite (~Thunderbi@121.54.90.158) joined #forth 10:36:10 --- quit: wa5qjh (Ping timeout: 258 seconds) 10:36:10 --- nick: leaverite -> wa5qjh 10:39:01 DGASAU, I never read their echomail conf. I prefered something like SU.FORTH instead ;) 10:42:51 i peered into usenet a couple of months ago, first time since around 2003 or so 10:43:05 looks like it's mainly used for distributing dubious binary content nowadays 10:45:28 Yes, and still, there is no good alternative to Usenet. But for many people, who wasn't there, there is nothing to worry. It's good, that IRC is still alive. 10:46:03 i liked usenet back in the days 10:46:38 It's strange to see how "modern Usenet"/"modern IRC" projects are failing one by one. 10:50:47 i am not sure whether the target demographic exists anymore. what we have now does the job adequately, and iirc freenode is the only irc network that has actually grown in past years 10:57:34 onre: the demographic does exist, it's just the matter of usability and being useful. 10:59:03 If some AssLook, Inc. can create something shinier and glossier faster while requring less resources on client side, most of the people will use that. 10:59:19 it'd also have to be somehow better than whatever they're using now 11:01:00 Less intervention into private life means better, usually. 11:01:28 Though this is rather tricky, less visible and less noticable. 11:06:34 for me and you, sure 11:06:51 but if i asked the cool guy living next door to me, he probably wouldn't care 11:18:21 --- quit: MrBismuth (Excess Flood) 11:19:23 --- join: MrBismuth (~ArcMrBism@2602:306:8325:a300:c801:d7f:77e1:92be) joined #forth 11:35:22 --- quit: DocPlatypus (Ping timeout: 260 seconds) 11:45:33 onre: re usenet: distributing binary content and as a way to recieve messages anonymously via remailers and alt.anonymous.messages 11:46:49 it seems that most of discussions have moved to google groups afaict 11:50:07 --- join: DocPlatypus (~skquinn@2601:2c2:c300:ff70:3cbb:d0be:ca24:958f) joined #forth 12:03:16 --- quit: djinni (Quit: Leaving) 12:06:40 --- join: djinni (~djinni@68.ip-149-56-14.net) joined #forth 13:42:17 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 14:01:53 --- quit: John[Lisbeth] (Ping timeout: 246 seconds) 14:07:46 --- quit: GeDaMo (Remote host closed the connection) 14:15:54 --- quit: gravicappa (Ping timeout: 260 seconds) 14:38:02 --- quit: Keshl_ (Quit: Konversation terminated!) 14:38:21 --- quit: wa5qjh (Remote host closed the connection) 14:51:49 --- join: wa5qjh (~Thunderbi@121.54.90.158) joined #forth 14:58:45 --- join: real-grue (~true-grue@176.14.219.178) joined #forth 15:00:42 --- quit: true-grue (Ping timeout: 260 seconds) 15:06:37 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 15:08:20 --- join: impomatic (~digital_w@host109-149-158-236.range109-149.btcentralplus.com) joined #forth 15:13:58 --- quit: ACE_Recliner (Ping timeout: 245 seconds) 15:15:21 --- join: ACE_Recliner (~ACE_Recli@50.165.178.74) joined #forth 15:31:08 : ?DUP ( n - n n, 0) DUP IF DUP EXIT THEN ; ( 4) 15:31:25 wtf I have just lost all faith in chuck moore and am abandoning forth 15:31:45 --- quit: ACE_Recliner (Remote host closed the connection) 15:31:47 "low-fat computing" my ass 15:41:47 zy]x[yz: explain? 15:42:06 he's got a useless "EXIT" there! 15:42:28 maybe someone should ask him why it's there 15:42:41 there's got to be a reason. maybe "EXIT" is faster than falling through to the THEN? 15:43:01 I can think of far worse sins to commit than that, though 15:43:16 and if you need to use ?dup often enough that that's a speed killer... then you need to refactor your code 15:44:39 I'm just be facetious, of course. it's probably just an oversight. he has one in his definition of ABS, too: : ABS ( n - u) DUP 0< IF NEGATE EXIT THEN ; ( 4) 15:45:00 hmm 15:46:56 I can't imagine how it would ever be faster than to fall through; THEN should literally compile to nothing, but should patch the jump offset compiled at the IF 15:48:10 I found plent of other instances of "THEN ;" where THEN is not preceeded by EXIT. I think it's just a silly mistake 15:52:33 Chuck said don't use ?DUP 15:55:46 I'll bite, what's so wrong with ?DUP ? 15:56:47 he put that word in Forth (right?)... why would he not want people to use it? 15:59:20 seconded - why not? 16:00:01 I would love to eliminate it. in fact, for a while I did but I found that it's just way to convenient to leave out, so I'd love to know what I'm doing wrong 16:01:16 I use it rather often in the code I have here 16:01:27 usually as part of the GNU Forth-ism ?dup-if 16:03:05 I think it came in handiest when writing code to convert a raw number of seconds into weeks/days/hours/minutes/seconds depending on what was needed 16:03:16 without passing a bunch of extra zeroes 16:04:05 I was reading a thing once I think written by jeff fox that described a forth that didn't have destructive comparison operators, but instead set a flag in memory OOB to the stack and branching words would test that instead of taking a item from the stack. I can see how ?dup would be useless if that's the model they moved to 16:04:54 --- quit: real-grue (Read error: Connection reset by peer) 16:05:15 as much as some might find that useful... the Forth specs define those comparison operators as destructive 16:05:40 so much code would break if all of a sudden the stack effect of something like = changed 16:06:04 at that point you may as well make everything non-destructive and force everyone to NIP NIP NIP NIP NIP like mad 16:06:17 I see discussions like these being about how to design a forth from the ground up, not about how to change ans 16:06:44 ANS and 200x are great standards 16:06:57 there's no reason to fuck up Forth as we know it (excuse my French) 16:07:28 there has to be a happy medium, though. it shouldn't limit exploration either 16:07:29 honestly... if they want non-destructive comparison operators... they should call it something besides Forth 16:07:51 now that's just silly 16:07:58 the same way some of these "tournament" mods for certain pinball games, leave you with something that really isn't that game anymore 16:10:01 how would you refactor code with ?dup ? 16:14:43 : ONERS ( #-of-oners -- ) 16:14:44 ?DUP IF O DO ONER LOOP THEN ; 16:14:49 as an example from Thinking Forth 16:15:08 the only way I can think of would be something like 16:15:17 DUP IF 0 DO ONER LOOP ELSE DROP THEN ; 16:15:28 which is damned clumsy IMO 16:17:28 --- quit: DocPlatypus (Quit: Ex-Chat) 16:17:41 --- join: DocPlatypus (~skquinn@2601:2c2:c300:ff70:50e1:2ead:6eb1:7930) joined #forth 16:19:31 : TYPE ( a) BEGIN DUP C@ ?DUP WHILE EMIT 1+ REPEAT DROP ; 16:19:43 another example... the refactored version turns into: 16:20:29 : TYPE ( a) BEGIN DUP C@ DUP 0= IF 0 THEN WHILE EMIT 1+ REPEAT DROP ; 16:20:53 this is clumsier than a juggler after five beers 16:21:24 what 16:21:42 that just turns into : TYPE BEGIN DUP C@ DUP WHILE EMIT 1+ REPEAT DROP DROP ; 16:21:48 or 2DROP at the end 16:22:48 I mean, I'm also asking why get rid of ?dup, but honestly if you do all it does is mean that you'll have to drop something in one branch where you didn't have to before 16:23:47 ok I'm out of practice. yes that works but it's still less elegant than the ?DUP version 16:27:15 --- join: mark4 (~mark4@108.119.68.152) joined #forth 16:34:06 --- quit: nighty-- (Quit: Disappears in a puff of smoke) 16:36:53 --- quit: onre (Ping timeout: 245 seconds) 16:37:37 --- join: onre (esp@anteek.fi) joined #forth 16:47:44 --- quit: mark4 (Quit: Leaving) 16:55:33 Consuming and depending on a variable number of items on the stack (DEPTH, ?DUP) make your stack consumption less predictable because it assumes unpredictable inputs, much like over-generalized code assumes unpredictable inputs, and therefore has extra stack traffic. 16:55:33 Ideally Forth words shouldn't be anything more than passive abbreviations. 16:55:33 Forth words should consume only what they use and leave behind only what is needed. 16:55:33 I think the reason stack-neutral code doesn't always happen in forth is because the granularity of consumption is not very expressive: cells, bytes, strings. 16:55:33 I'm doing a (point-free) non-metric Forth in which references (such as HERE) reference patterns that may or may not be references to contiguous things or individual points. 16:55:34 Hopefully this will give the referencing expressiveness I need for stack-neutral forth. 17:18:46 DocPlatypus, one idea I just had: might be that the explicit exit is to encourage tail call optimization 17:19:01 possible 17:21:08 pointfree, so I've been thinking about this for the past week. what is your preference with regard to testing operators and control flow words? do tests eat their arguments and push a flag, or do they leave the arguments and push a flag? do branching words drop their flag, or do they leave it? 17:26:00 I've been playing around with tests that leave the arguments and I think I've decided I don't like it. maybe. over the course of the next week I'm probably going to start playing around with non-destructive ?branch 17:35:16 --- join: nighty-- (~nighty@d246113.ppp.asahi-net.or.jp) joined #forth 17:52:01 --- quit: wa5qjh (Remote host closed the connection) 17:54:23 zy]x[yz: Yeah, consume too much and there's DUP, 2DUP etc. Consume too little and there's SWAP, ROT, etc to get things out of the way. As for flags, I like to use 1 as TRUE/exists, 0 as FALSE/does-not-exist/empty stack. 17:54:23 something TRUE * ( something) 17:54:23 something FALSE * ( nothing) 17:54:23 Zarutian mentioned in #erights that he does something similar with AND. 17:54:23 The references in my forth can express membership in sets without resorting to loops except for implementing enumeration with dot ("." will enumerate the set HERE). 17:54:24 I'd like to eliminate all loops except for the main repl loop. 17:55:24 pointfree: ya rang? 17:58:17 Hello Zarutian! I just mentioned that you recommended using AND instead of multiply for flags, if I remember correctly. 17:58:25 --- join: wa5qjh (~Thunderbi@121.54.90.158) joined #forth 17:58:45 yeah, in the forth I am using TRUE is -1 (0xFFFF) and FALSE is 0 (0x0000) using AND which runs in one cycle while multiplication takes quite a few. 18:02:52 Zarutian: -1 AND makes more sense than what I was doing with 1 * ...it also has potential for more control over granularity. 18:04:47 this is something that one thinks of when one has had to implement an FSM with relays. You get into the habbit of looking for much simpler solutions. 18:07:24 --- join: ASau (~user@dhcpcld.drb.insel.de) joined #forth 18:08:59 --- quit: ASau (Remote host closed the connection) 18:11:27 So what are your approaches to interfacing with other code? For example, suppose one had to use the Windows API for something with its mess of macros and typedefs. How would you go about using that from forth? Crawl the header files manually, reasoning what sizes types are based on the ABI? Write wrapper C code? 18:20:37 DragonForth extracted C interface automatically. 18:27:13 --- quit: neceve (Quit: Konversation terminated!) 18:31:42 reepca: I would write a bit of a C code that acts like a shim and one can jump to from an code word. 18:33:18 added bonus is that at later date one can often simply dispense with the often illthought out API when something better replaces it. 18:36:15 but then again I use Forth mostly in an vm or on an mcu over an serial link. 19:00:06 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 19:05:42 --- quit: ACE_Recliner (Ping timeout: 260 seconds) 19:08:32 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 19:53:30 --- quit: ACE_Recliner (Ping timeout: 240 seconds) 19:53:56 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 19:54:32 --- quit: Zarutian (Quit: Zarutian) 22:03:27 --- quit: ACE_Recliner (Ping timeout: 240 seconds) 22:04:41 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 22:17:39 --- quit: reepca (Ping timeout: 258 seconds) 22:27:45 --- join: cantstanya (~chatting@unaffiliated/cantstanya) joined #forth 22:40:18 --- quit: wa5qjh (Remote host closed the connection) 22:43:05 --- join: wa5qjh (~Thunderbi@121.54.90.158) joined #forth 23:33:40 --- quit: wa5qjh (Remote host closed the connection) 23:59:59 --- log: ended forth/17.04.30