00:00:00 --- log: started forth/16.12.10 00:17:29 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 00:22:00 --- join: DGASAU`` (~user@lmpc.drb.insel.de) joined #forth 00:22:11 --- join: reepca` (~user@std-001.cune.edu) joined #forth 00:22:14 --- quit: reepca (Remote host closed the connection) 00:22:24 --- join: reepca (~user@std-001.cune.edu) joined #forth 00:23:09 --- quit: reepca (Client Quit) 00:23:26 --- nick: reepca` -> reepca 00:23:50 --- quit: DGASAU` (Remote host closed the connection) 00:25:08 --- join: true-grue (~true-grue@176.14.222.10) joined #forth 00:25:44 --- quit: reepca (Client Quit) 00:26:15 --- join: reepca (~user@std-001.cune.edu) joined #forth 00:56:02 --- nick: DGASAU`` -> DGASAU 01:05:55 --- quit: dys (*.net *.split) 01:05:55 --- quit: MrBusiness2 (*.net *.split) 01:11:22 --- join: MrBusiness2 (~ArcMrBusi@104-50-90-48.lightspeed.brhmal.sbcglobal.net) joined #forth 01:33:01 --- quit: MrBusiness2 (*.net *.split) 01:33:54 --- join: MrBusiness2 (~ArcMrBusi@104-50-90-48.lightspeed.brhmal.sbcglobal.net) joined #forth 01:48:55 --- join: dys (~dys@ip-109-44-0-169.web.vodafone.de) joined #forth 02:08:11 I feel like it is the duty of us that really like reverse polish notation to rally behind forth, no matter what language we use 02:08:18 functional programming is on the rise 02:08:35 I think anyone who has sat down and used forth a long time realizes how it is similar to functional programming 02:09:12 One real problem is lets say someone starts with gforth 02:09:21 and another person starts with gforth 02:09:55 the first person we'll call Rodney and the second person we'll call Haruhi. 02:10:41 Rodney loves object oriented because that is what the industry loves, and so he puts objects on his gforth. He makes a beautiful object oriented language with c-like syntax. 02:11:27 Haruhi really likes functional immutable programming and so she makes an immutable type styems and then starts writing functions as purely as she can. 02:11:46 We know rodney can run Haruhi's code separate from his own because he has gforth. 02:12:04 We know haruhi can start coding in Rodney's forth. 02:12:46 Haruhi does not like the c-like syntax of Rodney's language, but she knows that in any language she can quickly make a forth, so she can just start plopping her forth right on top of his and start stealing from his forth functions. 02:13:33 Rodney absolutely needs objects and a c like sytnax so he can just quickly add these things in an immutable way and start using Haruhi's forth. 02:13:46 --- quit: proteusguy (Ping timeout: 244 seconds) 02:13:53 if you need a C-like syntax, why wouldn't you use C? 02:14:00 that's just fucking obvious 02:14:07 just hear me out 02:14:11 if you need OOP, you wouldn't start with Forth 02:14:25 the problem is what if Rodney wants to run his exact forth on top of Sydney's forth 02:14:28 I mean Haruhi 02:14:44 and what if Haruhi wants to run her exact forth on top of rodney's forth 02:14:56 They can make approximations of their forths but not exactly the same thing 02:15:19 this problem is hard to solve 02:15:52 no, it's not 02:15:56 why not? 02:15:56 it's simple to solve 02:16:00 how? 02:16:01 if you need a C-like language, use C 02:16:09 it's the most C-like of C-like languages 02:16:11 because it's C 02:16:25 and if you need OOP, pick one of the many languages that inherently does objects 02:16:42 some are better than others, but one may be a better fit even if it's conceptually "worse" overall 02:16:45 C is not the solution to the problem that I was trying to solve. RPN is the solution 02:16:56 why is RPN the solution? 02:17:04 Because it fits the most of my design constraints 02:17:14 okay 02:17:29 I realize now I was trying to find the easiest lanuage there was 02:17:34 based on my own definition of easy 02:17:35 but in Forth, RPN is only there because it's computationally a very simple thing to implement if you already have a stack 02:17:47 a language that would give me absolutely the most benefit for the least effort 02:18:01 I did not care about how computationally efficient it would be at all 02:18:02 the rest of the underlying infrastructure of Forth makes it not very C-like 02:18:07 and makes OOP quite difficult 02:18:18 I care nothing for computational efficiency I am a high level programmer 02:18:33 I did not find forth because I googled "most computationally efficient language" 02:18:37 I *guesS* what you could do is pass pointers to objects around on the stack 02:18:43 You are missing the point 02:18:45 I hate objects 02:18:51 If you're a high-level programmer, you should use Lisp then 02:18:54 I would never put objects in my forth unless my boss made me 02:18:55 In fact, Forth is very OOP-friendly :) 02:19:00 I realize this 02:19:24 My point is there is a certain problem I am trying to solve and forth fits that problem like a perfect glove 02:19:33 and now I am feeling around 02:19:50 and I really think forth is the solution to a really big problem in programming 02:19:56 which is that most languages are hard to learn 02:20:30 Forth is hard to learn 02:20:42 Forth is probably *harder* to learn than many other languages 02:21:11 Forth breaks a lot of our a priori assumptions about natural language 02:21:20 well, unless you speak German 02:21:21 to me forth is the easiest language to learn there is 02:21:24 great 02:21:26 go learn it 02:21:26 yes 02:21:27 german 02:21:34 any german can learn forth 02:21:37 See OOP definition from Alan Kay. You just need to have N Forth interpreters for N objects. And you need a mechanism to communicate between them, to call the words from their dictionaries. 02:21:39 most people who live in that region 02:21:54 go write your project and stop posting these bogus sagas about hypothetical immutable languages based on Forth 02:21:55 Does swedish do this like german does? 02:22:06 I just like to chat about forth man 02:22:24 what do they call this feature in human linguistics? 02:26:33 what, verbs at the end of a sentence? 02:27:44 I don't know but it seems like it shuld have 02:28:42 https://en.wikipedia.org/wiki/Word_order 03:41:43 --- join: workp (~workp@host-92-25-126-252.as13285.net) joined #forth 04:06:55 --- quit: dys (Remote host closed the connection) 04:49:49 --- quit: mnemnia (Remote host closed the connection) 04:52:06 --- quit: bluekelp_ (*.net *.split) 04:52:07 --- quit: Keshl (*.net *.split) 04:52:23 --- join: bluekelp_ (~bluekelp@bluekelp.com) joined #forth 04:52:23 --- join: Keshl (~Purple@24.115.181.94.res-cmts.gld.ptd.net) joined #forth 05:14:31 --- join: saml_ (~saml@cpe-24-102-97-97.nyc.res.rr.com) joined #forth 06:19:30 --- join: proteusguy (~proteus-g@echelon.c-base.org) joined #forth 06:19:30 --- mode: ChanServ set +v proteusguy 06:24:47 --- join: ricky_ricardo (~rickyrica@2601:240:4203:ecb0:9069:fe52:54ff:b846) joined #forth 06:58:18 --- quit: true-grue (Read error: Connection reset by peer) 07:01:28 --- join: true-grue (~true-grue@176.14.222.10) joined #forth 07:12:03 --- quit: banonos (Ping timeout: 260 seconds) 07:33:58 --- join: dys (~dys@tmo-110-209.customers.d1-online.com) joined #forth 07:34:19 --- join: banonos (b04eabac@gateway/web/freenode/ip.176.78.171.172) joined #forth 08:30:25 --- quit: proteusguy (Ping timeout: 250 seconds) 08:38:22 --- quit: dys (Ping timeout: 260 seconds) 08:45:29 --- quit: DGASAU (Ping timeout: 256 seconds) 08:46:25 --- join: DGASAU (~user@lmpc.drb.insel.de) joined #forth 08:53:07 --- join: Zarutian_ (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 09:16:54 --- join: dys (~dys@x5f722052.dyn.telefonica.de) joined #forth 09:20:22 --- quit: workp (Remote host closed the connection) 09:34:22 --- quit: MrBusiness2 (Ping timeout: 260 seconds) 09:39:14 --- nick: Zarutian_ -> Zarutian 09:43:36 --- join: karswell` (~user@127.209.208.46.dyn.plus.net) joined #forth 09:48:02 --- quit: ricky_ricardo (Ping timeout: 258 seconds) 09:55:30 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:a966:73c5:7600:e543) joined #forth 09:57:19 --- quit: mnemnion (Remote host closed the connection) 09:57:35 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 10:02:14 --- join: nal (~nal@adsl-64-237-234-83.prtc.net) joined #forth 10:07:24 --- join: tg9541 (5fd002a8@gateway/web/freenode/ip.95.208.2.168) joined #forth 10:07:42 hi 10:08:42 I'm looking for a 2>R and 2R> reference 10:09:22 I and for implementation requirements of DO .. LOOP 10:16:40 --- join: Mat4 (~claude4@ip5b410480.dynamic.kabel-deutschland.de) joined #forth 10:17:05 hallo Mat4 10:18:42 hello 10:20:40 I'm looking for some hints on how to best implement DO LOOP on an 8 bit machine 10:20:42 I hope to understand your question right in assuming you are in search for a Forth specification which include the implementation of specific words ? 10:21:09 that's right 10:21:30 what computer system have you in mind ? 10:22:04 STM8 architecture, 8 bit 10:22:41 my system is based on eForth, but I guess that doesn't matter 10:23:48 I just need to know what you'd expect when you do : t DO R> R> DUP . . >R >R LOOP ; 10:24:06 oh, 2DUP instead of DUP of course 10:26:00 ah, I think you work with the eForth demo for the STM8 discovery board 10:26:15 yes, right 10:28:11 well, given a range as parameters t should just echo the data stack content 10:29:09 right. The question is if you'd expect the limit or the counter first, and if it's even specified. 10:30:11 first the upper limit, then the lower limit 10:31:45 ok. "4 1 t" should print "4 1 4 2 4 3 4 4" then? 10:34:01 no, given '1 2 3 4' on the stack 10:35:05 the output for '4 1 t' should be: '4 1 4 2 4 3' 10:36:16 ok. so the limit won't be reached. That's more consistent than the eForth FOR..NEXT loop 10:38:35 which reference would you use for testing such an implementation detail? 10:38:49 the seForth source code 10:38:58 seForth = eForth 10:40:39 which one? the one in http://www.exemark.com/FORTH/eForthOverviewv5.pdf doesn't implement DO..LOOP 10:42:24 probably this source repro: https://github.com/TG9541/stm8ef 10:44:12 hmm.. sure, but I'm implementing it now, so I'd need a time machine :-) 10:49:21 --- join: workp (~workp@host-92-25-126-252.as13285.net) joined #forth 10:57:58 --- quit: Zarutian (Read error: Connection reset by peer) 11:00:12 --- join: Zarutian_ (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 11:01:55 the expected functionality of 'do' is: Looping until the lower limit is met. The actual loop count is thereby stored in a variable 'I' 11:02:20 so defining 'do' you need 'variable I' 11:02:37 then take a look at the defination of for and next 11:02:45 I usually maps to R@ 11:03:44 conversion of the form ( upper limit, lower limit - ) should be just 'swap -' 11:04:43 ': DO SWAP - FOR' (untested) 11:04:55 then 11:05:11 ah, sorry 11:05:16 the example you first gave was "counting up from ll to ul" 11:05:32 ': DO SWAP - DUP I ! FOR ;' 11:06:03 the implementations I know keep the FOR counter on the RS 11:06:25 --- quit: Zarutian_ (Ping timeout: 250 seconds) 11:06:28 ': LOOP COMPILE next which is, of course, an implementation detail 11:07:08 something like that (all untested and from memory) 11:07:21 ok, that would be using "VARIABLE I" 11:07:40 which would make nesting loops a bit impractical :-) 11:07:52 you're right, the swap is unneeded 11:08:40 the eForth implementation for FOR is : FOR >R HERE ; IMMEDIATE 11:09:38 a matching implemenatation of DO would be : DO R> R> HERE ; IMMEDIATE 11:13:54 ??? I remember (and just readed) 11:14:08 : FOR COMPILE >R -> 11:14:38 : it just puts the address of the next token on the stack so that "next" knows what to "," after "COMPILE ?branch" 11:16:48 : FOR COMPILE <- ! 11:23:22 '>R' need to be compiled 11:23:50 at runtime 11:24:14 right. it should be ": FOR COMPILE >R ... " 11:24:14 --- quit: DGASAU (Read error: Connection reset by peer) 11:24:24 --- join: DGASAU (~user@lmpc.drb.insel.de) joined #forth 11:26:25 --- join: PoppaVic (~PoppaVic@unaffiliated/poppavic) joined #forth 11:26:38 : DO - COMPILE >R HERE ; 11:27:01 IMMEDIATE 11:27:08 should work 11:27:18 (at least I hope so) 11:28:00 : LOOP COMPILE next HERE SWAP ! ; 11:28:11 IMMEDIATE 11:28:29 well, it's nice to see signs of life. 11:29:00 hi PoppaVic :-) 11:29:28 howdy 11:29:28 hi 11:29:32 Mat4: this won't work with the eForth "next" 11:29:45 PoppaVic: whereabouts? 11:30:01 on my sofa 11:30:24 oh, issues with faking do/loop where for/next is used? 11:30:37 --- join: MrBusiness2 (~ArcMrBusi@104-50-90-48.lightspeed.brhmal.sbcglobal.net) joined #forth 11:30:48 I always found the do/loop workable, but irritating 11:31:10 hacking on the sofa is a bit impractical. monitors and keyboards there have a low WAF 11:31:24 tg9541, well it's quite some time ago that I have worked with eForth 11:31:47 The bench is in the coldest room, and covered with electronics crap - plus, you can't watch the boobtube when yer there ;-) 11:32:01 Mat4 and I discussed how DO LOOP should behave in the case of ": t DO R> R> 2DUP . . >R >R LOOP ;" 11:32:54 that sounds fairly dangerous 11:32:54 Mat4: sure :-) I just want to get it right :-) 11:33:23 : LOOP COMPILE loop HERE SWAP ! ; ? 11:33:57 PoppaVic: I spose that DO is implemented as ": DO COMPILE >R COMPILE >R HERE ;" 11:34:24 I just remembered the somewhat interesting handling of recursive calls in eForth 11:34:34 * PoppaVic facepalms... 11:34:42 recursion is the devil, sheesh 11:34:48 Mat4: this implies that "loop" does something useful at runtime :-) 11:36:22 Mat4: recursion in eForth is easy: https://github.com/TG9541/stm8ef/wiki/STM8S-eForth-Programming#recursion-in-stm8-eforth 11:36:26 that definition for DO is not right. you cant do reverse loops or loops from N to M with it 11:36:39 : DO - COMPILE >R HERE ; <-- this one is not right 11:37:21 I agree. That one is like FOR in eForth. 11:37:22 and LOOP doesnt compile loop - loop compiles (loop) 11:37:41 but for just does N itterations it does not take 2 parms 11:37:46 params 11:37:55 the - should not be there for "for" 11:38:10 and DO need to put 3 items on the return stack 11:38:32 first it needs to put the address of the loop exit point on the return stack so that leave knows where to exit to 11:38:56 ah, I see, that way the limits are not needed any longer 11:39:01 then it puts two FUDGED loop indicies on the stack. 11:39:14 * PoppaVic shudders.. 11:39:30 the fudging of the loop indicies allows yuu to just increment the loop inded and cause an overflow once the loop is complete 11:39:46 to unfudge the current loop index you add the two fudged loop indicies 11:40:02 sounds really horrific 11:40:46 it get's really bad when you add smudging to the fudging ;-) 11:41:20 as n for .. next is just a repeated iteration which is identical to m n do .. loop each do loop can be converted to for .. next 11:41:21 (do) is compiled as TWO xt's .int (do) .int exit_address 11:41:29 I'll be thinking about it. Maybe a count-up loop isn't needed at all. 11:41:43 no. do loops cannot be converted into a for loop 11:41:53 for loops count from N to 0 and exit or from N to -1 and exit 11:41:53 hmm 11:42:11 right, I forgot about that detail, sorry 11:42:16 do loops can count from 1 to n or from n to m (2 3 4 5 6) or from M to N (6 5 4 3 2) 11:42:18 counted-loops remain counted loops - the issue is the direction and the relativity 11:42:39 with do loops you can also use n +loop 11:42:51 2 +loop would make the loop count UP by 2 each itteration 11:42:53 yeah, because it's like 2-3x more complex 11:43:07 -n +loop makes it count DOWN by n each itteration 11:43:28 mark4: thanks! Do you have a reference for best-practice? 11:43:39 https://paste.pound-python.org/show/FdLkoGRf0pElaoy6MQEG/ 11:43:44 I just use recursions to implement iterations (never saw any need for iteration constructs) 11:43:45 thats isforths (do) 11:44:05 tg9541, i have the sources for the compilers i wrote.. those are my best practices lol 11:44:35 to copy what linus T says about the GNU coding standard... I say get a copy of the ANS coding standartd and BURN IT 11:45:14 mark4: that's the fun part about Forth: "write the language that works for you" :-) 11:45:41 : do compile (do) >mark ; immediate 11:45:57 >mark compiles a DUMMY address (a zero for now till we know what it is later) 11:46:07 what does your (do) do? 11:46:09 mark4, this eForth version do not have a (do) word 11:46:46 : loop compile (loop) ( a1 --- ) dup cell+ resolve ; immediate 11:46:59 that one is a bit more confusing 11:47:12 in DO we did a >mark which leaft HERE on the stack 11:47:23 LOOP made a copy of that address and used it twice 11:48:05 first to compile a branch back to the cell 1 location past that address (the loop back address) 11:48:28 then to write the new value of HERE into that address 11:48:40 >mark btw is just an alias for here 11:49:08 well, there is an unofficial eforthl.zip for linux with DO and LOOP added. brr... 11:49:12 so DO does a here (leaving it on the stack during the compilation of the code) 11:49:27 and LOOP does "here swap !" storing the loop exit address in that cell 11:49:43 CM does not use do loops 11:49:49 he only uses for loops 11:50:17 Admittedly, CM is so far beyond most folks as to seem nuts. 11:50:30 eforth tries to use CMs ultra minimalistic approach 11:50:45 cm IS nuts lol 11:50:49 he has been in here btw 11:50:58 i mean nusts in the good way 11:51:01 really? 11:51:20 yes CM has been in this channel. he was invited for a q and a and showed up! 11:51:28 no. he's just off in his own universe - anyone that gets the results he gets ain't nuts - but it prolly is far too difficult to explain to "mere mortals" 11:51:29 i didnt even know he knew what irc was lol 11:51:41 mark4: I think I get the point about your loop implementation 11:52:06 just use recursion and avoid all kind of iteration constructs 11:52:13 * PoppaVic facepalms... 11:52:25 as you have shown, recursion is easy in eForth 11:52:31 its more complex than for/next but the implementation of (do) has more versatility 11:52:41 begin .. repeat/again/while/until/whatever 11:54:02 Mat4: loops have a tendency of doing many iterations. Tail-recursion in Forth isn't as trivial as in functional languages :P 11:54:30 tail recursion is just a jump 11:54:49 : foo begin .... again ; 11:55:25 if you want to prevent a call followed immediately by a return i used to allow : foo .... goto blah ; 11:55:53 there is NO automatic tail call fix in isforth. 11:56:47 it's doable, just need some more functional style of programming 11:57:21 I would love to see example code :-) 11:57:41 in fact, I have added taol call optimization to Retroforth which was quite easy 11:57:52 ^taol=tail 12:02:44 thanks, I'll have a look at Retro. It's not quite the minimalistic target I have in mind, but it looks nice. 12:06:26 mark4: do you have an URL for isforth? 12:08:06 work time, ciao 12:08:09 --- quit: Mat4 (Quit: Leaving) 12:09:08 PoppaVic: found that eforthl.zip for linux, thanks! 12:09:14 sure 12:10:14 I tend to collect all the versions I can find. 12:10:32 of course, one day I'll geet a new lappy and have to start all over ;-) 12:10:47 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 12:12:10 tg9541, i usred to lol 12:12:22 i can email it or maybe i can TRY dcc 12:12:27 not sure if dcc will work 12:12:54 don't think so, I'm using a web IRC client 12:13:10 PM an email address 12:14:05 #mark4 test 12:14:29 ? 12:14:33 that wasnt a PM 12:14:36 hmm.. can't PM either. could you please open a private channel? 12:14:44 join #mark4 lol 12:15:51 oh, to PM people on freenode ya need to register yer nick 12:18:03 --- quit: ASau (Ping timeout: 248 seconds) 12:24:03 effectively, yes. 12:24:49 no its worse than that I dont think you can PM unregistered names either 12:24:54 or i might be wrong about that 12:24:56 this is to deecreease the amount of scam-spams 12:25:59 an horrible pun joke comes to mind: "What do you call the EU after the grexit? -Degreeced!" 12:26:29 actually it was england that was degreaced :P 12:28:08 are ya shure? Ya seen 'mount o' th' stuff used fo' fish'n'chips? 12:44:01 --- join: Mat4 (~claude4@ip5b410480.dynamic.kabel-deutschland.de) joined #forth 12:45:06 --- quit: Mat4 (Client Quit) 13:17:23 --- quit: saml_ (Remote host closed the connection) 13:25:49 --- part: PoppaVic left #forth 13:45:47 --- quit: mnemnion (Ping timeout: 260 seconds) 14:02:16 --- join: ricky_ricardo (~rickyrica@2601:240:4203:ecb0:9069:fe52:54ff:b846) joined #forth 14:09:48 --- quit: irsol (Ping timeout: 252 seconds) 14:11:16 --- join: irsol (~irsol@unaffiliated/contempt) joined #forth 14:32:55 fish n chips are only greasy in the south of england 14:33:08 the only decent ones are in the north of england 14:33:19 blackpool, the roses chipy 14:33:24 err i ferget what street thats on! 14:33:25 omg 14:33:40 --- quit: true-grue (Read error: Connection reset by peer) 14:34:16 --- quit: tg9541 (Quit: Page closed) 14:48:46 --- quit: neceve (Quit: Konversation terminated!) 15:19:36 --- join: Kumool (~nal@adsl-64-237-233-187.prtc.net) joined #forth 15:19:42 --- join: ASau (~user@netbsd/developers/asau) joined #forth 15:22:58 --- quit: nal (Ping timeout: 260 seconds) 15:41:25 --- join: koz_ (~koz@121.99.240.58) joined #forth 15:43:16 --- quit: ASau (Remote host closed the connection) 15:43:59 --- join: ASau (~user@netbsd/developers/asau) joined #forth 16:42:38 --- join: kumul (~nal@adsl-64-237-237-97.prtc.net) joined #forth 16:43:59 --- quit: Kumool (Ping timeout: 250 seconds) 16:44:41 morning 16:45:24 John[Lisbeth]: Hihi! 16:47:44 I must procure marijuana before it gets dark 16:49:35 What's a Forth-y way to convert a number into 'false' if it's even and 'true' otherwise? 16:49:57 (sorry if this is a daft question - I'm a Forth noob) 16:53:37 koz_: bitwise and, maybe? 16:53:52 1 and 0= 16:55:18 gordonjcp: Thank you - that's exactly what I was looking for! 16:55:57 i would say 1 and 0= not 16:56:09 that would return true for even and false for odd 16:56:26 : is-even 1 and 0= not ; 16:56:39 mark4: I need to have even be false and odd be true, so gordonjcp's suggestion works. 16:56:42 ans would use the gay INVERT instead of the correct "not" 16:56:49 then remove the not 16:56:58 : odd-test 1 and 0= ; 16:57:02 mark4: Thanks! 17:54:32 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 17:56:30 --- join: mnemnia (~mnemnion@2601:643:8102:7c95:11f4:ae62:832a:aba6) joined #forth 17:58:58 --- quit: mnemnion (Ping timeout: 252 seconds) 18:04:31 I'm a bit confused - I'm trying to implement the power-of-two only version of this: https://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn . This is what I've written so far: http://ix.io/1LwB . It doesn't behave itself on inputs above 32. What did I miss? 18:11:40 Sorry, this is a cleaner one: http://ix.io/1LwC 18:16:01 --- join: M-jimt (jimtmatrix@gateway/shell/matrix.org/x-necurngakegobvnz) joined #forth 18:29:19 Never mind - I figured it out. My machine has 64-bit integers, and so does my Forth, while that solution needs 32-bit ones. 18:31:12 27 >> $1f and ? 18:31:38 sorry but i dont like the ans forth rshift lshift they are fucking stupid 18:31:42 << >> 18:32:11 mark4: OK. I don't quite get the $1f up there - could you tell me what that does? 18:32:11 not "shift_these_bits_left_by_n_bits_and_leave_the_result_at_top_of_stack like ans forth bullshit 18:32:26 $1f is hex 1f which is 32 -1 18:32:39 it masks the result from 0 to 31 18:32:50 mark4: Ah, so that should solve my 32-bitness problem? 18:33:00 try it :) 18:33:07 mark4: OK. 18:33:18 another optio is $ffffffff and 27 >> 18:34:03 mask input to 32 bits instead of masking output to 5 18:34:40 learn to think bit manipultions in HEX. doing stuff like this in decimal is not practical 18:34:55 mark4: Yeah, I can see why. Thank you for that - it fixed my problem right up. 18:34:57 the bit count for the shift in decimal is fine 18:35:08 i know lol. both solutions would 18:35:41 Also, you don't seem to like ANS Forth much. How come? 18:36:11 the ans forth standard does not describe the forth language but a language of the same name 18:36:14 -- chuck moore 18:37:00 thbe 79 standard had a broken definition for NOT (or maybe it was fig forth) 18:37:04 : not 0= ; 18:37:07 STUPID 18:37:19 NOT is a 1's compliment not a test for equality withy zero 18:37:28 the 83 standard fixed that 18:37:31 along comes ans 18:37:42 oooohhh drat, we have TWO conflicting definitions for "not" 18:37:45 err what should we do! 18:38:00 oh i know. lets invent a limp wristed word that does a 1s complement yay! 18:38:06 : invert do gay stuff here ; 18:38:20 i have nothing good to say about the ans standard, not ONE thing 18:38:32 every decision they made was an example of open ass, insert head 18:39:05 all in an attempt to achieve the IMPOSSIBLE goal of making code portable across different platforms/compilers 18:39:13 something NO other computer language has achieved. NOT ONE 18:39:49 so. take a beautiful, simple, elegant language and turn it into a gordian knot cluster fuck of obfuscated bullshit 18:39:55 no i dont like the ans standard much 18:40:22 I see. 18:40:29 So what's your Forth of choice, then? 18:40:47 my own 18:41:08 isforth is absolyutely 100% isforth compliant :) 18:41:28 mark4: I see. :P 18:41:32 heh 18:41:38 Well, thanks for all your help - I shall continue learning. 18:41:53 theres a rule. if it aint broke dont fix it 18:42:05 not only did ans BREAK something, they broke something that was already fixed 18:42:32 i also never use words like postpone 18:42:42 for the simple reason that the word is utterly redundant 18:42:53 and for the fact that it totally fails to describe its purpose 18:43:05 there was never ANYTHING wrong with compile or [compile] 18:43:19 except omg they sound similar and sort of kind of do similar things! 18:43:24 omg we need ONE WORD that does both! 18:43:51 that way we can utterly destroy the context of the soruces that would have been obvious using compile and [compile] 18:44:18 also, use of compile/[compile] requires the end user know what words are and are not immediate 18:44:30 and we cant expect people to actually know the language they are coding in now can we 18:44:32 --- join: newuser|66123 (49e18c6c@gateway/web/cgi-irc/kiwiirc.com/ip.73.225.140.108) joined #forth 18:44:36 --- quit: newuser|66123 (Client Quit) 18:44:51 rationalization: portable code!!!! 18:45:05 we dont know if immediate word X is still immediate in compiler Y omg 18:46:06 portability is a MYTH 18:46:12 not even C is portable 18:46:41 thats why you need 40 different versions of the same code all interleaved into another clusterfuck unreadable gordian knot of #ifdef's 18:46:52 not only in your own code but the damned includes too 18:47:25 show me any "portable" ans forth code that will compile on EVERY ans forth compiler without duct tape 18:49:07 if compiling for PC do this, else if compiling for arm do that... if using this compiler do this other thing, otherwise if being compiled wtih this compiler over here do this other other thing here..... 18:49:50 drat! we have to add a new architecture to the cluserfuck because someone made a new compiler omg 18:50:28 now instead of maintaining and developing your code your maintaining an unmaintainable clusterfuck 18:50:54 i refuse to add conditional compilation to any of my compilers 18:51:40 i have the same allergic reation to #ifdef as other people have to goto 18:52:00 #ifdef is MUCH worse than goto ever was at turning sane code into utter insanity 18:52:21 but im a heretic :) 19:08:32 mark4: re portable code: do what I do, define a small VM spec. Target that and implement it anywhere the code needs to run. 19:09:06 Zarutian, exactly 19:10:40 It's what all the cool kids seem to be doing. 19:11:11 got some idiot outside with his car going DUM DUM... DUMDUM.... DUM DUM... DUMDUM..... 19:11:24 not the cool kids 19:11:26 the grown ups 19:12:04 better yet, also specify a file format for snapshotting the state of said VM 19:21:06 --- quit: workp (Ping timeout: 252 seconds) 20:03:13 --- quit: dys (Ping timeout: 256 seconds) 20:05:26 --- quit: kumul (Quit: WeeChat 1.4) 20:10:07 --- quit: Zarutian (Quit: Zarutian) 20:15:07 --- join: impomatic_ (~digital_w@host81-136-106-55.range81-136.btcentralplus.com) joined #forth 20:32:50 ... but then doesn't the code that implements the virtual machine have to do the #ifdef stuff? Or is the main point just separating out the non-portable stuff so it's all in one place? 20:40:01 --- quit: mnemnia (Remote host closed the connection) 21:20:12 --- quit: ricky_ricardo (Quit: No Ping reply in 180 seconds.) 21:23:18 --- join: rgrinberg (~rgrinberg@24-246-56-85.cable.teksavvy.com) joined #forth 21:24:25 --- join: ricky_ricardo (~rickyrica@2601:240:4203:ecb0:9069:fe52:54ff:b846) joined #forth 21:34:54 --- quit: rgrinberg (Ping timeout: 258 seconds) 21:39:59 --- quit: ricky_ricardo (Ping timeout: 240 seconds) 21:40:30 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 21:49:26 --- quit: mnemnion (Ping timeout: 258 seconds) 22:26:19 --- quit: X-Scale (Read error: Connection reset by peer) 22:54:47 mark4, ricky_ricardo: regarding earlier discussion of words like VOCABULARY, CONTEXT, ONLY, ALSO, etc. You don't need those words to do namespace management if you use your words like variables and leverage the hyperstatic scope. https://www.reddit.com/r/Forth/comments/5aas7t/i_have_udlyunds_bind_word_implemented_in_a_number/ 23:02:53 --- quit: banonos (Ping timeout: 260 seconds) 23:46:50 looks similar to defered, not really understanding what the codes is doing tho 23:48:08 is kforth indirect threaded? i thought it was sub theaded. or am i not understanding the ' @ ' ! code 23:48:45 or are all words somehow variables ? 23:53:21 how would this work when creating headerless words? 23:53:54 and you work for a company that uses forth? 23:53:58 can i haz a job? :) 23:55:01 why is everyone so enamoured of jonesforth 23:55:07 isforth is much better 23:55:10 and has no air time at all! 23:58:01 if my techniques work well which I think they do then you may be able to program in a very forthlike way in an ordinary language 23:59:05 * koz_ thinks that programming in the style of Forth should be termed 'Forthright programming'. 23:59:59 --- log: ended forth/16.12.10