00:00:00 --- log: started forth/21.04.02 00:14:33 --- join: xek joined #forth 00:42:50 Great to see so many cool tech discussions in #forth! I think I should build a website that shows which handle is building which forth implementation just to keep track! 00:46:33 haha 01:37:59 :-) 03:22:54 --- quit: f-a (Read error: Connection reset by peer) 06:00:12 --- join: dys joined #forth 06:01:34 I decided this morning to write a Python script to generate the assembly source for my myriad conditional return / conditional recurse primitives. I think it will go together pretty easily and should completely rule out human error. There are like 70 or so of these things - I'd rather not do them by hand. 06:03:22 I could reduce that number quite a lot if I were willing to use 2-3 words to accomplish the operations. But I sometimes have these managing very short tight little loops, so having them all atomic is a good way to keep performance up. 06:04:02 For instance, I could have 0 <= ?; rather than 0<=; as its own primitive. 06:40:11 Why not write a Forth script? 06:40:49 I don't have one ready to do that. It'll get done faster in Python - I'm mostly already done with it. 06:40:58 Forth isn't the only tool in the box. 06:41:09 Python excells at text munging. 06:41:14 excels 06:42:37 that's true 06:42:40 python is very good at that 06:54:59 Cool - that's done and seems to work. I could have an error in it, of course. I'll save my source, delete the conditional primitives I'd already written, include this file, and see if it still runs. 06:55:15 It might. I figure I've about an 80/20 chance of it working on the first go. 06:56:16 I am trying to figure out how to build the core image of my C forth, I am trying to make it like the mark4 x4 experience of just run "make" and it builds, no weird dependencies 07:11:58 is there any way to autoformat forth code 07:12:04 my code is a mess of indentation and nonsense 07:13:56 I guess it's harder than other languages because there isn't concrete syntax or formatting rules 07:15:10 want no weird deps, do it in asm :) 07:16:43 Is this book a good one to read before implementing your own Forth? http://forth.org/OffeteStore/1010_SystemsGuideToFigForth.pdf 07:16:50 I already have some idea about how to do it, but I'd like to have a reference book just in case. 07:20:57 well one of fig forths styles is to have every single part of your compiler in one source file 07:21:14 so yea it might be good if you can make intelligent decisions against some of the things they advocae :) 07:21:33 --- quit: Zarutian_HTC (Ping timeout: 240 seconds) 07:49:46 room mates dog is sick and shitting all over the livingroom floor. woke up yesterday to it and again today. cleaned it up yesterday because roommate was out 07:51:22 and none of the vets are open grr 07:52:10 There are usually out of hours vets 07:53:10 In the UK you ring a vet and if they're closed they will provide an out-of-hours number 07:53:18 On answering machine 08:37:39 mark4: Manage to find an out of hours vet? 08:37:58 no roomie is going to take dog to vet tomorrow 08:38:06 Okay that's their choice I guess 08:38:16 Should take them in if they're sick for over 24h though 08:39:19 well he does not look sick or act sick he just wants to go out and poop every 2 or 3 hours and its icky stuff 08:39:30 and i was taking him out every few hours last night till 4 am 08:39:40 and then i slept and he couldnt help himself 08:39:41 Poor guy 08:39:54 not sure why he had to drip it all over the living room floor tho lol 08:40:14 its not just in one spot its like a 2 inc splatter every square foot :) 08:41:39 --- quit: mark4 (Remote host closed the connection) 08:47:12 Ok, those conditionsals all seem to be working. 08:47:23 Didn't get my 80% - I had to troubleshoot it a bit. 08:47:32 But it wasn't too bad. 08:57:24 I've certainly not tested htem all. But the ones I've used to build what's functional so far must all be working, because, well, it functions. Correctly. 08:57:39 Once I get to where I can load source from disk I'll write a test harness and test them exhaustively. 09:18:21 --- join: Zarutian_HTC joined #forth 10:26:23 --- quit: gravicappa (Ping timeout: 260 seconds) 10:26:44 --- join: gravicappa joined #forth 11:04:39 I'm going to forget a ton of ALIGN's now I'm on a forth where that actually matters 11:21:46 --- quit: dave0 (Quit: dave's not here) 11:57:17 Why did they make [COMPILE] obsolete? 12:04:38 because [POSTPONE] is better 12:05:11 it does what you want without you having to know at authorship time whether the word you're postponing is immediate or not 12:26:50 But it's already required that you know whether a word has special compilation semantics or not 12:28:14 POSTPONE is useful in that I can add semantics to compile a normal word, which [COMPILE] won't do 12:30:08 Although it's easy to define a word to do it : [COMPILE,] ' COMPILE, ; IMMEDIATE 12:33:27 --- quit: cantstanya (Remote host closed the connection) 12:35:51 --- join: cantstanya joined #forth 13:05:21 --- quit: gravicappa (Ping timeout: 268 seconds) 13:46:42 What's a good name for a word returning the alignment size of cells? 13:56:26 Anyone have or familiar with any sort of "conditional execute word" syntax? The thing would make the following word in the stream connditional. 13:57:34 Something like IF1 CONDITIONAL-WORD 13:57:35 ? 13:58:28 Yeah. I was thinking maybe ? So like <=? or !=? etc. 13:59:01 I've not seen something like this but I don't see an argument against it 13:59:20 I've tended away from "wordy" names as I've created things. I seem to prefer the more symbolic look. 13:59:23 Personally I'd get no intuition from the naming you've suggested 13:59:47 Well, it's not as intuitive as some of my others. 13:59:50 Not that I'd get that from IF1 either, maybe IF: or ?: 14:00:03 I find !=; or !=;; very intuitive. 14:00:22 ?: is kind of nice. 14:00:55 I don't think I like contracting the condition into the name 14:01:02 Anyway, I'm considering adding that. I seem to have almost every other conditional possibility I can thnk of. 14:01:11 But if you want a lot of contractions then go for it 14:01:29 Well, I understand that. And doing that runs up my primitive count severely. 14:01:39 But it does buy some performance. 14:01:55 But it's easy to get too performance hungry. 14:02:08 In most real cases only a tiny bit of your code is responsible for the time consumption. 14:02:15 Most of it is pretty irrelevant. 14:03:01 I eventually want a profiling capability, so I can identify where the performance really counts. 14:03:41 I think the reader should be able to learn all your control words, or at least guess what a control word is by seeing it 14:04:41 Well, these feel that way to me. I actually agree with that. But these seem intuitive to me. 14:05:00 Allowing for what they might read in a manual, tutorial or whatever. So I'm not saying it needs to be all 'standard' words 14:05:33 I don't regard my "me" words (my nomenclature for recursing) as quite as "nice" as the conditional return words, but all the other things I could think of were a lot longer. 14:05:45 Quite often one underestimates how confusing what makes sense to oneself is 14:05:57 In the end I'm writing for me. :-) 14:06:08 Well if you want to do that then there's no holding back 14:06:12 I agree - it's easy to get your mind around something and then overlook its difficulty. 14:07:20 I have conditional returns already - anything I could do with conditional execution I already can do that way. It just makes the word unusable without that conditional, and it's a bit lower performance, since you take on the call and the return. 14:08:10 I find that in trying to make something for 'me' I try and think about others, because I write code *I* would like to use, which means that not being already intimately acquanted with it should not prevent understanding 14:08:42 So I try and write code that I would like as the reader rather than the author 14:08:44 Another thing that tempted me down the road of combininng that stuff into single words is, believe it or not, saving the space. My taste for having things look very tight on the page has gotten kind of strong. 14:09:04 It doesn't save space if you have lots of words that aren't used more than once or twice :P 14:09:18 No, I mean space on the printed page of source. 14:09:27 The visual impact of what the code LOOKS like. 14:09:40 Why? Are you trying to make it take less than 64 characters a line or something? 14:09:43 I've had that problem over the years with C as well. 14:09:55 I just hate code that seems to sprawl all over the page. 14:10:16 I tend to write my C much like Forth - using "idiomatic phrases" and so on that I put all on one line. 14:10:21 I like to write words over multiple lines 14:10:27 Yes, me too. 14:10:43 Which is one reason I wind up writing my whole system over multiple times. 14:17:28 I love tabular structuring, and Forth rubs me just in the right direction for that. 14:18:42 Not that I've been very attentive to that while learning/writing Forth code lately though. 14:19:09 I also love the full caps convention (again not doing it, because my caps lock is set to control because of Emacs). 14:29:13 veltas: I do try to keep my definitions short. I do use the 64 value as a guideline there, but not because 64 is some magic number. It's just a number that's floating around that general vicinity. I do set my Forths up with block editors that show me 64 chars per line, and I try to never have multi-line definitions. 14:29:42 My own feeling about "why" is just that I'm trying to take seriously the Forth philosophy of factor, factor, factor. 14:30:03 I do find that it makes code easier for me to organize and grasp mentally. 14:36:18 Good 14:36:42 Size restraints tend to do that, but then when you're making contractions to save a space I think it's gone a little far :P 15:18:10 --- quit: xek (Ping timeout: 252 seconds) 16:16:09 :-) Well, there's an objective benefit to those conditional returns. They're faster than the other way - no bones about it. So I think it's really a atter of the value I associate with knowing that it's "as fast as I can reasonably make it." 16:16:23 I totally see your point of view too, though. 16:17:04 Just last night I was noting how many primitives I'd eliminate if I just had the usual conditionals and then a boolean flag driven conditionl return. 16:17:13 That would cut a pile of primitives. 17:26:22 --- nick: lonjil2 -> lonjil 18:43:54 --- join: boru` joined #forth 18:43:57 --- quit: boru (Disconnected by services) 18:44:00 --- nick: boru` -> boru 19:10:24 --- join: dave0 joined #forth 19:10:40 maw 20:00:06 --- quit: Zarutian_HTC (Ping timeout: 246 seconds) 20:12:22 --- join: Zarutian_HTC joined #forth 20:33:27 --- quit: dave0 (Quit: dave's not here) 20:41:41 --- quit: Zarutian_HTC (Remote host closed the connection) 20:50:58 --- quit: shmorgle (Quit: [TalkSoup] via NEXTSPACE) 20:54:24 --- join: shmorgle joined #forth 21:40:59 Howdy. 21:48:22 --- join: gravicappa joined #forth 22:30:04 KipIngram, is your forth in a github repo already? 22:39:00 neuro_sys, the FigForth manual and JonesForth source code (if you're target is x86) are definitely great canonical references for people wanting to build their own forth for the first time. Also Brad Rodrieguz' "Moving Forth" articles are outstanding supplements. 23:04:21 --- join: lispmacs joined #forth 23:59:59 --- log: ended forth/21.04.02