00:00:00 --- log: started forth/19.07.12 00:36:58 --- join: xek (~xek@apn-31-0-23-202.dynamic.gprs.plus.pl) joined #forth 01:04:09 --- quit: reepca (Ping timeout: 245 seconds) 01:06:04 --- join: dys (~dys@2003:5b:203b:100:a64c:c8ff:fef4:13a6) joined #forth 02:00:06 --- nick: nighty -> cp 02:00:42 --- quit: cp (Quit: Disappeared in a puff of smoke) 02:01:40 --- join: cp (~cp@b157153.ppp.asahi-net.or.jp) joined #forth 02:11:29 --- quit: rdrop-exit (Ping timeout: 246 seconds) 02:28:53 --- join: rdrop-exit (~markwilli@112.201.174.189) joined #forth 03:09:08 --- quit: rdrop-exit (Ping timeout: 258 seconds) 03:47:23 --- join: proteusguy (~proteusgu@2403:6200:89a6:8231:c1d:d912:5ef9:f93c) joined #forth 03:47:23 --- mode: ChanServ set +v proteusguy 03:56:29 --- quit: jedb_ (Ping timeout: 246 seconds) 03:57:53 --- join: jedb_ (~jedb@185.128.24.51) joined #forth 04:12:47 --- join: rdrop-exit (~markwilli@112.201.174.189) joined #forth 04:30:39 rqjk ~.~. 04:30:50 oops 04:35:26 it has to follow a carriage return anyway 06:08:34 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 06:38:50 What do ARM people here use as an assembler? I hate gas with a passion, so I'd almost rather do my own from my amd64 forth 06:39:06 But then of course building the ARM one depends on having an amd64 machine... 07:05:19 --- quit: Zarutian (Read error: No route to host) 07:05:54 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 07:45:58 nasm? 07:46:48 oh, wait no 07:50:22 --- quit: tabemann (Ping timeout: 252 seconds) 08:24:09 --- quit: irsol (Ping timeout: 245 seconds) 08:30:42 --- join: irsol (~irsol@unaffiliated/contempt) joined #forth 09:32:17 i don't like 09:32:40 does> is overrated. debate me 09:33:01 i don't know why i didn't see it before, but it's basically just c++ templates 09:33:03 which are terrible 09:33:29 i mean, it's different in how it's implemented, of course, but the semantics are pretty much the same: it's parameterized code generation 09:34:05 c++ templates are terrible indeed but not because of parameterized code generation 09:34:42 i know the common complaint with them is code bloat, but i don't like them because they're too meta 09:35:02 the more meta it gets, the more impossible it is to reason about and debug 09:35:07 for instance, I have used techniques from Scheme in Tcl for generating code that takes shorter time to rn. 09:35:37 run* 09:36:20 yes, making code that manipulates other code is not something that most find easy 09:37:03 if anyone claims to find it "easy" that person is full of shit 09:37:09 I have found that using recipie similie helps explaining such meta stuff 09:38:21 for instance you can have a recipie for a blueberry pie. Then oneday you have lots of raspberries but no blueberries. Can you do a substituion in the blueberry recipie to use raspberries instead? 09:39:25 yes but that is an artifically simple analogy and nobody would ever use code generation for it, they'd write their code to take a berry argument 09:40:25 anyway, i haven't found a use for does> that can't be done just as clearly or more clearly with simple composition 09:40:51 what if the berries used are potatos? Specially if you need to add peeling and slicing steps in. 09:41:38 have you ever seen a recipe that explains how to peel and slice the ingredients? 09:41:59 you havent heard of the Cookbook of the Petant? 09:42:13 no, i don't cook 09:43:03 but my point is that you've introduced a different problem. peeling and slicing is a different task, it does not belong in the some codespace with baking a pie 09:43:22 and, in all seriousness, yes I have seen an recipe that explains how to peel and slice a particular fruit to match the outcome on the attached photo 09:44:47 in which case i'd argue that maybe cooking recipes are not a good model we should follow when we code 09:45:19 they were only used as similie 09:45:39 but it's a bad similie 09:46:24 all similies are pretty bad but in diffrent ways. Got a better one to explain this kind of stuff? 09:46:45 no, i prefer to actually discuss the topic instead of dancing around it with bad similies 09:46:53 the other is stories, both linear and choose-your-own-adventure style 09:47:31 why am i reading your dang book if i have to make all the decisions! i might as well write my own story! 09:48:15 right, the meta-ness of using does> or other such system has come about due to deficency in parameterization that cannot be done via primitive andor composite datum arguments passed in. 09:48:59 --- quit: proteusguy (Remote host closed the connection) 09:49:21 for instance doing higher order functions (not closures but functions) in Forth is usally done via eXecution Tokens (which usually are the code addresses of such functions) 09:50:19 yes 09:50:49 though that often looks ugly as hell. 09:53:08 seems fine to me 09:53:29 you can't even get the xt of a does> word; they're not first-class constructs 09:54:06 does> is bad factoring 09:54:11 --- quit: jedb_ (Ping timeout: 244 seconds) 09:54:47 I never bother implementing it 09:55:28 --- join: jedb (~jedb@185.128.24.51) joined #forth 09:55:37 --- quit: dys (Ping timeout: 264 seconds) 09:55:41 Hi guys 09:55:46 hi 09:59:24 what about : NEW_WORD ( name_c-addr name_length -- xt ) ; ? 10:00:25 that's the thing; i'm not sure there's actually any value to that. NEW_WORD is just a macro, it actually has no runtime benefit 10:01:20 What's the point? 10:03:01 usually half arsed object systems in Forth. Better to implement one fully though. 10:04:03 remexre: People seem to really like the look and feel of fasm. It's also fairly lean. 10:04:03 gdb doesn't support it though. 10:04:03 Perhaps it would be best to use a forth assembler wordset. 10:04:59 pointfree: for arm? 10:05:56 remexre: https://arm.flatassembler.net/ 10:06:12 I never climbed aboard the OO bandwagon 10:06:20 pointfree: huh, TIL; thanks! 10:06:53 Zarutian, that's how i've seen does> tauted which threw me off: that it's a "half-assed object system". it's not, though. it's a code-time macro, nothing more 10:08:11 It's simply bad factoring 10:08:40 and it facilitates more bad factoring 10:09:41 right 10:11:07 And it's usually inefficient anyhow 10:12:07 The does> portion is a second class citizen 10:20:47 The oft cited example is : constant { x -- }( -- x ) create , does> @ ; 10:21:19 but nobody actually implements constant using does> 10:22:34 Inlining also does away with many does> scenarios. 10:23:08 well, i did, though i did it in the assembler part. but the end result is my "const" and "var" implementations are the same as if you had written them in forth using does>, and there's no reason for it except that i wanted to 10:24:38 With inlining constant boils down to a literal. 10:25:20 (with a header) 10:26:48 i.e. 10:26:58 : constant ( x -- )( -- x ) header, & literal inline ; 10:28:25 & is just my shorthand for POSTPONE 10:38:05 where is x written and restored from memory 10:38:34 oh, nevermind. because it's inlined it doesn't have to be 10:38:52 no wait, yes it does. what does inline do? 10:40:27 I wrote it up in a reddit reply, just a sec, I'll get the url 10:42:30 See my reply to jephthai in this thread: 10:42:40 https://www.reddit.com/r/Forth/comments/9u0h7u/idea_for_making_forth_compiler_more_pluggable/e91ne3l/?context=3 10:45:00 --- quit: jedb (Ping timeout: 245 seconds) 10:45:14 In that thread I use VARIABLE as the example, but the same applies to CONSTANT 10:46:44 --- join: jedb (~jedb@185.128.24.51) joined #forth 10:52:03 It's almost 2am here, gotta crash. Catch you again soon. 10:52:15 l8r dood 10:52:26 --- quit: rdrop-exit (Quit: Lost terminal) 10:53:54 --- quit: xek (Remote host closed the connection) 10:54:19 --- join: xek (~xek@apn-31-0-23-202.dynamic.gprs.plus.pl) joined #forth 11:21:15 damn, I missed the does> conversation 11:27:59 yes and it can never happen again 11:28:53 no do-over 11:28:57 * Zarutian hides ;-Þ 11:38:34 --- join: dys (~dys@tmo-110-127.customers.d1-online.com) joined #forth 12:23:20 --- quit: gravicappa (Ping timeout: 245 seconds) 12:33:29 My development progress is currently do-over-and-over ;þ 12:42:38 --- join: karswell (~user@cust125-dsl91-135-5.idnet.net) joined #forth 12:45:03 zy]x[yz: why can't one get the xt of a does> word? 12:46:17 i mean the part following does> 12:46:37 you can, but you have to treat it specially 12:47:17 i.e., you'd have to know the word your after was defined with does> 12:47:25 s/your/you're/ 12:48:52 when would this be needed? 12:49:14 never, because does> isn't needed 12:50:02 it's useful sometimes 12:50:25 * crc doesn't use it often, but it's nice to have on occasion 12:55:35 --- quit: jedb (Ping timeout: 248 seconds) 12:57:14 --- join: jedb (~jedb@185.128.24.51) joined #forth 13:23:54 --- join: X-Scale (~ARM@64.251.28.37.rev.vodafone.pt) joined #forth 13:30:24 as an example case, http://forth.works/450e58fcf61ee810f8f464004e1beef0 (two approaches to a problem avoiding does, and one using it) 13:46:56 crc: To store the variable, I would have done "over var". 13:47:20 It would be (sn-s). 13:54:06 I don't follow 13:55:02 --- quit: Croran (Ping timeout: 276 seconds) 13:55:13 The two words share the same value in memory, so I'd need to save a pointer to it, or extract it from the header before creating the actions 15:06:15 --- quit: xek (Ping timeout: 245 seconds) 16:09:13 --- quit: john_cephalopoda (Ping timeout: 250 seconds) 16:11:09 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 17:34:41 --- quit: djinni (Quit: Leaving) 17:38:25 --- join: djinni (~djinni@static.38.6.217.95.clients.your-server.de) joined #forth 18:12:55 --- quit: karswell (Ping timeout: 248 seconds) 18:59:19 --- join: tabemann (~tabemann@2600:1700:7990:24e0:a846:c34a:8824:869f) joined #forth 19:09:24 --- quit: Zarutian (Read error: Connection reset by peer) 19:09:30 --- join: Zarutian_2 (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 19:09:43 --- nick: Zarutian_2 -> Zarutian 19:47:10 hey 20:01:00 heyhey 20:26:26 --- quit: jedb (Ping timeout: 258 seconds) 20:28:14 --- join: jedb (~jedb@103.254.153.113) joined #forth 21:11:44 --- join: gravicappa (~gravicapp@h109-187-229-72.dyn.bashtel.ru) joined #forth 21:36:08 --- quit: dddddd (Remote host closed the connection) 21:41:43 --- join: reepca (~user@208.89.170.37) joined #forth 22:12:53 --- quit: dys (Ping timeout: 268 seconds) 22:13:16 --- quit: jedb (Read error: Connection reset by peer) 23:19:36 --- join: jedb (~jedb@103.254.153.113) joined #forth 23:59:59 --- log: ended forth/19.07.12