00:00:00 --- log: started forth/08.02.24 01:59:16 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 02:00:10 --- quit: proteusguy (Remote closed the connection) 02:00:10 --- join: proteusguy (n=proteusg@ppp-124-120-222-20.revip2.asianet.co.th) joined #forth 02:00:10 --- quit: forther (Read error: 110 (Connection timed out)) 02:45:39 --- quit: sauvin (Remote closed the connection) 03:29:26 --- quit: Raystm2 ("Should have paid the bill.") 06:12:53 --- quit: nighty^ ("Disappears in a puff of smoke") 06:13:28 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 06:38:35 tackling poor man's defining words in efte macros without having anything like "create" or facilities to build any such ... :) 06:39:36 sub variable { here cell allot } ; sub foo { variable new } ... would you consider that tolerable syntax? 06:40:03 { foo fetch ... n foo store } to use var then ... 06:56:03 --- quit: forther (Read error: 110 (Connection timed out)) 08:44:56 Bushmills, what is there in sub variable { here cell allot } that defines a new word? 08:46:04 Oh, does { variable new } send a 'new' message to 'variable' or something? In that case, wouldn't each invocation of 'foo' allot a new cell? 08:46:35 not really "send a message" ; hi quartus. 08:46:46 "new" just executes ... 08:46:57 and patches up the macro (defined with "sub") 08:47:36 replaces "variable" against "push_pointer_to_data", and "new" against "variable" for later reference, if ever needed. 08:47:58 Gah. Ok. It looks confusing. 08:48:15 What is this weird setup? 08:48:18 so execution of "new" would also be the "not yet initialized" detection 08:48:59 that's latching on a sequential command executor, to make that one forthish 08:49:16 don't have shared name space, for headers. 08:49:44 in fact, until shortly configuration compilation/parsing was a separate process 08:49:52 'forthish' for some very small value of 'ish' 08:50:27 other forth components map better than defining words 08:50:48 defining words is one point were the underlying model is a bit resistant 08:51:01 so I need to work around it at this point 08:51:15 until we made the macro executor map forth better 08:51:28 for example, I don't have access to return stack. 08:51:50 my macro "return" stack is purely a loop and temp >r r> stack 08:52:05 but I need some variables now 08:52:14 base, dp, such things 08:52:31 therefore I'm willing to compromise a bit here 08:54:49 Well, as for the above, it looks to me as though each invocation of foo will reinvoke variable, which will allot a new cell. 08:55:43 idea is that "new" patches foo, by overwriting "variable" with token of command "push the address supplied by "variable" to stack. 08:55:57 thus, on first execution 08:56:00 'new' strikes me as badly named, then. 08:56:22 after that, "variable" will not be at that slot in macro anymore, and "new" not at all anymore 08:56:53 thought of calling it "create" first .. but as the function is so different, it didn't seem to be a good choice 08:57:05 'redefine' perhaps 08:57:58 or 'repurpose' 08:58:06 or even 'patch' 08:58:40 yes, that is what it is *doing*. the "inner working" 08:58:55 I didn't think the name has to reflect "inner working" 08:59:02 Point being, it is doing nothing that involves the word 'new'. 08:59:02 but more what it is used for 08:59:09 in that case, "new variable" 08:59:18 or, " variable new" 08:59:54 Yes, and 'variable new' says to me 'make a new variable'. 09:00:01 which is what it does 09:00:05 On each invocation. 09:00:59 What it sounds like you're trying to convey is that 'variable new' redefines foo, and only once. 09:02:20 From this it seems as though 'variable' and 'new' have some kind of status akin to a Forth IMMEDIATE word. 09:04:11 ... yet the syntax doesn't flag them as such, or does it? Or are all words immediate, in this setup? 10:32:30 --- join: edrx (i=edrx@189.25.90.199) joined #forth