00:00:00 --- log: started forth/06.10.19 01:21:18 --- nick: crest_ -> Crest 01:43:27 --- join: Smidsy (n=dmikejon@cpc2-neww1-0-0-cust751.cdif.cable.ntl.com) joined #forth 01:45:50 --- part: Smidsy left #forth 02:16:18 --- quit: JasonWoof (Read error: 60 (Operation timed out)) 02:17:07 --- join: vatic (n=chatzill@pool-162-84-156-148.ny5030.east.verizon.net) joined #forth 02:22:38 --- join: JasonWoof (n=jason@c-71-192-26-248.hsd1.ma.comcast.net) joined #forth 02:22:39 --- mode: ChanServ set +o JasonWoof 02:34:27 --- nick: arke__ -> arke 03:12:43 --- quit: jackokring (Read error: 104 (Connection reset by peer)) 03:25:44 --- quit: vatic ("*poof*") 03:44:28 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 03:54:18 --- join: jackokring (n=jackokri@ACC9503E.ipt.aol.com) joined #forth 04:11:13 --- quit: JasonWoof ("off to bed") 04:23:42 --- join: crest_ (n=crest@p548972CE.dip.t-dialin.net) joined #forth 04:25:58 --- quit: crest_ (Client Quit) 04:35:25 --- quit: Crest (Read error: 110 (Connection timed out)) 05:01:34 --- join: arke_ (n=Chris@pD9E06978.dip.t-dialin.net) joined #forth 05:01:42 --- quit: arke (Read error: 104 (Connection reset by peer)) 05:03:47 --- part: EdLin left #forth 05:09:56 --- nick: Cheery -> batman 05:10:21 --- nick: batman -> Cheery 05:17:24 --- quit: timlarson (Read error: 110 (Connection timed out)) 05:47:45 --- quit: arke_ (Read error: 60 (Operation timed out)) 05:54:06 --- quit: jc (Read error: 110 (Connection timed out)) 05:56:11 --- join: tgkuo3 (n=tgkuo3@125-233-3-231.dynamic.hinet.net) joined #forth 05:59:47 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 06:01:54 Good morning. 06:03:20 bon soir 06:04:45 :) 06:05:56 --- join: arke (n=Chris@pD9E059C7.dip.t-dialin.net) joined #forth 06:05:56 --- mode: ChanServ set +o arke 06:06:09 hi arke :) 06:06:20 hi 06:07:22 I got an envelope that will fit the folendar... mailing this afternoon! 06:08:33 thanks! :D 06:08:38 :D :D :D 06:08:45 how big is the folendar? 06:08:46 np. 06:10:22 it's 3 peices of paper folded so ... there are 2 8x11's and one 8x14 and after folded it ends up being like a letter fold size of a normal piece of paper, but you can fold that in quarters so... 06:11:53 --- part: tgkuo3 left #forth 06:12:04 cool 06:12:19 so if I quarter fold it it fits in a pocket, right? 06:14:07 ya or even half fold it. When I quarter fold it, I can put 3 folendars in a mans front-pocket-wallet 06:15:24 cool cool cool 06:18:25 --- quit: snowrichard ("Leaving") 06:28:14 --- join: jcw (n=jcw@adsl-074-238-180-251.sip.asm.bellsouth.net) joined #forth 06:38:00 --- join: madwork (n=foo@204.138.110.15) joined #forth 06:39:41 --- quit: jackokring ("Bersirc 2.2: Looks, feels and sounds (?!) different! [ http://www.bersirc.org/ - Open Source IRC ]") 06:40:20 --- join: jackokring (n=jackokri@ACC9503E.ipt.aol.com) joined #forth 06:53:56 Is there pattern matcher implementations for forth? 06:54:03 or unificator. 06:54:28 http://en.wikipedia.org/wiki/Pattern_matching 06:55:53 http://en.wikipedia.org/wiki/Unification 06:58:43 --- join: JasonWoof (n=jason@c-71-192-26-248.hsd1.ma.comcast.net) joined #forth 06:58:44 --- mode: ChanServ set +o JasonWoof 07:00:47 --- quit: jackokring (Read error: 54 (Connection reset by peer)) 07:02:15 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 07:07:34 --- join: jackokring (n=jackokri@ACC9503E.ipt.aol.com) joined #forth 07:14:56 Cheery, not that I know of but its possible to make one 07:39:49 arke: I know, but I wonder what would be the best interface for such. 07:51:36 --- join: zpg (n=user@user-5440eceb.wfd80a.dsl.pol.co.uk) joined #forth 07:54:20 hi all. 07:54:56 hi 07:56:21 how's it going arke? 07:56:32 pretty decent 07:56:37 good good. 07:56:45 glad im not in the US at the moment though :) 07:57:26 why? have i missed a big news item? 07:57:42 I assume its not that big in the media over there 07:57:47 what? 07:57:53 http://www.youtube.com/watch?v=igycXBseoAg&eurl= 07:58:02 thats actually msnbc 07:58:16 mr. bush basically laid the framework for suspension of habeas corpus 07:59:06 (habeas corpus = being told why you're being detained and getting a chance of trial) 08:00:35 hmm i see. 08:01:31 i'm operating in a much more palm-based framework at the moment. my palm crashed totally, had to do a hard reset. 08:01:35 first hotsync failed midway 08:01:42 ouch 08:01:44 :/ 08:02:21 yep 08:02:49 i wish i had a little tablet pc or something 08:02:51 something really small 08:04:35 once more, failure and a boot loop 08:04:38 damnit! 08:04:51 msnbc? is that a microsoft sponsored channel? 08:05:55 no, powered by microsoft 08:06:32 is there a difference? 08:06:37 i take it this is MSN + NBC 08:06:40 basically, they took NBC news, microsoft gave them $200 million and a promise to equip with microsoft products, and in return, got the MS in the name. 08:08:07 so the whole channel is a microsoft commercial? 08:08:21 the name is, the channel isnt 08:21:52 well, i removed the backups folder entirely, so hopefully this Memo synchronisation works... 08:44:10 hoorah 08:48:28 :) 08:53:57 --- join: rabbitwhite (n=Miranda@136.160.196.114) joined #forth 08:58:19 what's the sense in life in this world? 08:59:12 what 08:59:19 huh? 09:00:44 if you are talking about committing suicide then this is the last time i'm signing onto a forth channel 09:04:30 hi rabbitwhite. 09:04:36 Hey rabbitwhite. 09:04:49 rabbitwhite pm please? 09:04:55 hi Quartus :) 09:05:25 hey ray. 09:05:38 zpg, what are you writing that's crashing so hard? 09:06:30 Cheery, I wrote one recently. s" hi there" s" *th?r*" pattern-match . -> -1 There's also pattern-search, and pattern-locate. 09:08:39 since what time does that means to commit suicide? 09:09:51 lets have a vote who else would have interpreted "what's the sense of life in this world" as what i thought 09:10:12 It does have that 'teenage angst' sound to it. 09:10:40 I'm in a philosophical mood 09:11:07 angst? haeh? wtf? 09:11:28 that's not how you spell psycological, or even pathological. :) lol 09:12:05 Ray_work, what do you mean? 09:12:54 Yes, angst. "what's the sense of life in this world?" is along the same lines as "why go on?" or "what's the point in continuing to live?", the cornerstone of bad teenage poetry. 09:13:13 it's not to be taken seriously. but what I mean is that if everybody thinks you want to commit suicide then philisophical becomes pathalogical. 09:14:43 I don't understand your points nor the idiotic conclusion that this the cornerstone of bad teenage poetry 09:15:52 somebody needs a girl or boy friend 09:16:08 Bad teenage poetry is an expression of the angst associated with adolescent existential dilemmas, usually in blank verse, though sometimes it rhymes, which is especially bad. :) 09:17:34 adolescent angst? well, dream your dreams but they don't fit my reality and never ever will. 09:18:18 dude, have you ever been on the internet. 09:18:46 stupid teenage poetry is like the glue that holds it together 09:18:51 You are a teenager, or only just past; you're bitter, angry, and contentious; you are asking philosophical questions that most people ask at the age of 15 or so. So I'd say it fits pretty well. 09:18:57 or something liek that 09:19:11 how old is virl? 09:19:15 thats what i want to know no 09:19:16 w 09:19:22 virl is 21 in april 09:19:30 well, will be 09:20:49 k so you're not a teenager 09:21:13 15 pah.. only very stupid people are able to think something like that. 09:22:02 i think the point of life in this world is to see past the bullshit 09:22:08 at least at this point in time 09:23:27 better would it be when it could be changed. 09:23:36 rabbitwhite: good a point as any. /me restrains himself from getting "philisophically" off topic. 09:24:00 If you think something needs changing, change it. 09:24:15 dunno 09:24:18 you're just one person 09:24:25 and the US doesn't have habeas corpus anymore 09:24:29 :) 09:24:31 heh 09:25:18 all you need is the "enemy combatant" flag set next to your number 09:27:10 --- join: erider (n=erider@unaffiliated/erider) joined #forth 09:27:16 hi all 09:27:21 hi 09:27:27 hey 09:27:41 how are things today? 09:27:47 Not too bad. You? 09:28:12 very well! 09:28:30 just got some books from amazon 09:28:43 On what? 09:28:51 assembly 09:28:55 hi erider 09:28:57 x86? 09:29:25 x86 and x86_64 09:29:55 hi R! 09:30:40 :) 09:31:44 Quartus: erider is still of the opinion that assembler is easier/readable/maintainable better then forth. How do you compare these languages? 09:32:09 Ray_work, that would depend entirely on your context. It may seem easier or more readable or more maintable to erider. 09:33:16 I have no trouble understanding, reading, or maintaining either. A good macro assembler has some of the features of Forth, but by no means all. In contrast, Forth makes an excellent macro assembler, plus has all the extra good stuff. 09:35:07 for me its just some on the code is cryptic. Its like when zpg was trying to explain something to me and you were making corrections Q 09:35:16 s/on/of 09:35:31 Unfortunately zpg's examples weren't aligning with his explanation at that particular time. 09:35:39 Stack diagrams a bit off. 09:36:13 :) it just left me more confused 09:36:23 but its coming a long 09:36:49 I like the quartus on my treo because it makes standalone programs 09:37:06 Oh yes? I didn't know you were a registered user. Glad you're enjoying it. 09:37:09 I haven't found a forth implementation on linux that does that 09:37:57 I have gforth and retro on my system and I use gforth more then retro but I like the syntax of retro in some of its data structure 09:38:25 data structure? 09:38:46 blocks of defined data 09:38:51 in what way? 09:39:13 hold one I will find you an example 09:40:03 loc: 09:40:03 variable off 09:40:03 : mpad here 2048 + ; 09:40:03 : process drop mpad off @ type cr 0 off ! ; 09:40:03 : copy dup 32 :: net.read dup 10 =if process ;; then copy ; 09:40:07 ;loc alias update 09:40:29 Which part of that are you talking about? 09:41:01 the block of data between the loc: ->data<- loc; 09:41:25 oh. The code, you mean. loc: ;loc is a way of hiding name headers. 09:41:32 and you can give the whole thing a name such as update 09:41:45 yup 09:41:49 well you can't, actually. What's being named there is the last :: definition. 09:42:44 but is looks modular 09:42:50 it* 09:43:12 crc has since added section: expose and ;section, after some code I wrote in the ANS layer. It's a bit cleaner, syntax-wise. 09:43:45 so that would be section: variable off .... expose : update net.read ... ; ;section 09:44:07 everything before expose is hidden, everything after is visible. 09:44:09 cool! 09:44:45 In Standard Forth (gforth included) I use -- and recommend -- a fancier setup. module/public:/private:/end-module. It's more flexible, and it nests. 09:45:12 and some of the functions or words in forth are confusing to me at time with the way that parameter are passed 09:45:48 any in particular come to mind? 09:46:26 not confusing but maybe I have to get use to passing parameters via the stack 09:47:40 : foo ( n1 n2 -- n ) + cr . ; this is simple but if I was to add some more stuff to it. It may get confusing to me 09:48:01 erider, you seem to enjoy it more when you can use the registers 09:48:03 It's also wrong. The stack diagram there is ( n1 n2 -- ) 09:48:19 I know that its going to take 2 arguments and return one 09:48:40 It's not. You're using . to consume the result. 09:49:05 I got that but if I want to add * or / then I'm getting deep in to what I want it do work on first 09:49:13 it goes left->right. 09:49:44 erider? 09:49:49 s/do/to 09:50:05 2 3 4 + * -> (3+4)*2 09:50:15 Under Quartus Forth, there's OPG by Wil Baden. If you set its debug mode on, you can use it to show you the translation between infix and postfix, it should help you understand better. 09:50:23 yup that stuff virl 09:50:36 and that's confusing? 09:51:00 not now but it did 09:51:23 the things that confuse me now it all the stack fiddling 09:51:24 god i can't read algebraic expressions 09:51:47 -rot, rot, over, dup, 2over etc... 09:51:54 which algebraic expressions? 09:52:01 heh 3 of those you shouldnt need 90% of the time 09:52:12 (x+y)/3*4-n 09:52:15 stuff like that 09:52:19 i can't remember order of expressions 09:52:37 oh you mean x @ y @ + 3 / 4 * n @ - :) 09:52:43 erider, that's stack juggling and it shows when you use it too often that you don't use forth correctly. 09:52:57 Quartus: that i can read! 09:53:28 infix is conceptually quite a bit trickier than postfix, but it's taught early so people are more accustomed to it. 09:53:39 virl: got it but the tutorial is stressing this word 09:53:50 to be about the do things easier 09:54:03 s/about/able 09:54:16 s/about/able to :) 09:54:18 postfix is longer.. 09:55:13 less cramped i say 09:55:17 should I just work with a shallow stack 09:55:18 perhaps an argument against it, or not, I like postfix 09:55:19 No. The Forth syntax may be longer because of the dereferences and spaces, but the expression is not. x y+3/4*n- is shorter than (x+y)/3*4-n. 09:55:25 and you want it to show how long it really is. 09:56:11 erider, yes, a stack shouldn't have more than 4 elements(that's the ideal number) 09:56:48 so : foo ( x y n -- ans ) + 3 / 4 * ; ? 09:57:08 somehow I think the expression isn't correctly translated, but let's see.. start checking... 09:57:31 oops 09:57:45 erider, no. That'll add n to y, divide the result by 3, multiply that result by 4, and then leave x totally alone. 09:57:45 not you, Quartus one 09:57:53 3 + 4 / * 09:58:07 --- quit: madwork (Read error: 104 (Connection reset by peer)) 09:58:19 erider, that'll add 3 to n, divide the result by 4, and multiply that result by y, again leaving x totally alone. 09:58:22 you dont want a routine with 3 args that are used that way 09:58:47 its a waste with the stack operations 09:59:09 also, i think its fair to say that this theoretical garbage gets people nowhere 09:59:37 If you wanted that, you'd do this: : formula ( n y x ) + 3 / 4 * swap - ; 09:59:41 just program in forth and try to see the places where you can leverage it AS IS to your advantage 09:59:46 personally I would say the expression is 2 3 + 4 3 * 5 - / 09:59:52 But yes, picking arbitrary and random examples out of the air is useless. Find something you want to write, and get to it. 09:59:52 eh.. 10:00:02 quartus that is such a good idea 10:00:46 x @ y @ + 3 4 * n @ - / 10:02:23 quartus do you know of and other implementation that creates standalone programs for linux? 10:02:50 s/and/any 10:02:58 virl, order of operations requires left-to-right execution for an infix expression. The (x+y) happens first, the /3 happens before the 4*, and both happen before the -n. 10:03:38 erider, as I recall retroforth can save itself as an executable under linux. Ask crc. 10:04:31 virl, your postfix there would be (x+y)/(3*4-n) 10:04:49 the turnkey thingy I think you are talking about 10:04:55 Right. 10:05:04 hmm 10:05:09 ok, that's true 10:05:53 its easy to get confused I guess 10:06:33 It's not complex to do the translations by hand, but if you find you do a lot of them, there are infix translators. OPG is one for floats, and there are at least two others for integers. 10:07:02 Unless you're translating a lot of code from another language (say, Fortran), it won't come up much. 10:07:52 I wrote an infix translator -- it quite happily converts. expr (x+y)*3/4-n -> x @ y @ 3 * 4 / n @ - 10:08:25 what if x y and n are constants or calculated values 10:08:41 It's just an expression translator, not a mind-reader. :) 10:08:52 lol 10:09:25 oh, wee 10:10:09 Q what do you use forth for on a regular day like today? 10:10:53 I know you guys are working on the gtk and that is exciting 10:10:55 In OPG: LET x = (-b - SQRT(b*{FDUP}-4*a*c)) / (2*a): -> b F@ FNEGATE b F@ FDUP F* 4.E a F@ F* c F@ F* F- FSQRT F- 2.E a F@ F* F/ x F! 10:11:20 I'm not working on gtk. I have a few projects underway, the most active of which is the book I'm writing on Forth. 10:12:27 cool! what platform are you going to target 10:12:33 Standard Forth. 10:15:09 for beginners or advanced topics or what? 10:15:17 Hoping to address both audiences. 10:17:50 cool! 10:21:25 --- join: madwork (n=foo@204.138.110.15) joined #forth 10:37:14 ugh bye 10:37:30 cya 10:40:47 caio 10:45:38 --- join: mikett (n=nobody@80-195-208-58.cable.ubr14.live.blueyonder.co.uk) joined #forth 10:46:11 --- part: mikett left #forth 10:48:39 i'm moving this weekend, will be out of touch till the wifi hop is up again may the forth be with u 10:49:18 bye bye 10:50:31 --- quit: jackokring ("Bersirc 2.2, for external use only. [ http://www.bersirc.org/ - Open Source IRC ]") 11:06:40 --- join: jennyb (i=webmaste@figuk.plus.com) joined #forth 11:09:23 Hey, Jenny. Neal Bridges here. 11:09:46 How's FIG UK today? 11:09:53 Thought that was you! 11:10:16 Still just about there! 11:10:44 Good deal. :) 11:11:31 What is the difference between the forth and #forth rooms? 11:11:40 I didn't know there was another one. 11:12:03 All the official or quasi-official language channels start with #. 11:12:26 On freenode, anyway. Naming convention. 11:13:29 --- join: alexshendi (n=alexshen@dslb-084-056-173-041.pools.arcor-ip.net) joined #forth 11:17:49 This is confusing. The other one is called #forth, but is billed as unofficial 11:17:55 This one is #forth. 11:18:19 I just checked; there is no channel named 'forth' without the #. 11:18:50 This channel is, strictly speaking, unofficial. 11:22:05 It seems the channel we used to use with FIG UK is gone. I was looking for another home 11:22:16 Wasn't that on a different IRC server entirely? 11:22:37 Yes, IRCNet 11:22:42 You're certainly welcome here. 11:22:56 Bring all your Forth friends. :) 11:25:29 who has experiences with the SeaForth simulator? 11:26:01 I think it was Ambidian who posted questions about the T18 simulator stuff in c.l.f. 11:26:22 --- quit: jcw (Read error: 145 (Connection timed out)) 11:27:49 jennyb, the other one is for the "cool" people :) 11:28:17 actually, according to freeenode policy, this should be a "##" channel, not a "#" channel 11:28:24 but nobody cares :) 11:29:22 so you have the official unofficial channel and the unofficial official unofficial channel 11:29:45 I didn't realize there was a ##forth. 11:29:50 I see two or three people hiding out there. 11:29:57 more than two or three 11:30:03 12 11:30:10 Five show in the /names right now. 11:30:31 What mysterious things happen there? 11:30:31 then theres 7 with +i 11:30:56 forth talk 11:31:14 A likely story. 11:31:43 Oh. There were 5 when I checked; the count is up now. 11:31:57 /names doesnt show everybody 11:32:16 Seems kind of bizarre to split the Forth discussion across two channels. 11:32:38 It has its reasons. 11:32:54 I've asked what those are over in ##forth, in case it's secret clubhouse business. 11:33:12 Does MikeT turn up here or there? 11:33:20 Haven't seen that nick, jennyb. 11:34:01 ##forth is open for everybody, just like #fort is 11:34:33 jennyb: be is a girls name 11:34:53 jennyb: is a girls name 11:35:00 erider, nothing gets past you! 11:35:05 lol 11:35:32 we need a "no shit, sherlock" smiley 11:35:44 I like talking to programmers who are girls they see things differently 11:35:56 I have a FigUK forum that's just opening to the public. He mentioned There is a Forth chat active on IRC at 11:35:56 irc.eu.freenode.net 11:35:56 port 6667 11:35:56 #forth 11:36:19 erider, get your hand out of your pants and shaddap :) 11:36:31 jennyb, yeah, thats this one. 11:36:35 LOL! 11:36:39 whaaa? 11:37:22 yikes I'm way behind. I was 'whaaa' -n about something that was an hour or more ago. 11:39:02 Heh. 11:39:06 Thanks, I'll change the address on the old website. 11:39:12 Something arke was saying about Habeas Corpus? 11:39:31 http://www.youtube.com/watch?v=igycXBseoAg&eurl= 11:39:32 jennyb, I was looking for a 1998 ForthWrite the other day; I see the archives don't go back that far. 11:39:44 Ray_work, that link 11:40:43 I wound up finding the article translated into German, and read that. Which was no fun. :) 11:41:12 Which one was it? 11:41:28 An article on Genetix that quoted me. 11:41:34 Jakeman's. 11:42:36 I have that upstairs 11:42:54 I'd like a copy at some point, if it's convenient. 11:44:31 Email me. The address is on c.l.f. 11:45:13 Done. 11:45:31 * Quartus_ goes mobile 11:52:22 hey 11:53:21 hey zpg 11:53:24 hi Quartus_ 11:54:51 to answer your earlier question -- writing some buggy list code; for the first time, resetting brought me into a boot loop. 11:54:58 what was crashing for you earlier? 11:55:17 i was writing a new free-list word. 11:55:23 perhaps i freed something i shouldn't have. 11:55:23 ah. That's not easy to achieve; congratulations :) 11:55:28 heh thank you 11:56:15 hotsyncing after that was idiosyncratic... i ended up copying my backups and deleting the original folder. all the memo data re-sync'd (though i lost the more recent code, written over the past 24 hours) and then just re-installed QF and a few other apps. 11:56:55 I recommend a good full-backup tool, like pilot-xfer or Backup Buddy. 11:57:15 are either mac/unix compat? 11:57:49 Pilot-xfer is unix. 11:58:08 also win32, not aware of a mac port but there may be one. 11:58:24 it's part of pilot-tools, as I recall. 11:59:16 ah ok. will look into it. 11:59:40 backup buddy will back up to sd, which is handy. 12:01:32 --- join: jcw (n=jcw@adsl-065-006-151-062.sip.asm.bellsouth.net) joined #forth 12:05:33 oh that's neat. 12:07:35 did you try holding down the up button on the reset? 12:08:55 oh yes, that's how i restord my system in the end. 12:08:59 *+e 12:09:12 reset+power then up to erase. 12:09:24 you mean the power button, or the up button? 12:09:47 reset held in, power button pushed, reset released, power released. then given the choice of up or down. 12:10:32 ok. I mean up by itself, not the power button. It does a soft reset instead of a hard. 12:11:13 ah ok 12:11:24 so one has three options? normal reset, soft reset, hard reset? 12:14:00 incidentally, i have some forth source that uses ?allot -- does this just allot but leave the stack unchanged? 12:15:06 oh, never mind --> : ?allot HERE SWAP ALLOT ; 12:19:06 and on the palm front --> soft, warm, hard. 12:19:21 (i didn't know about the up button option, so had assumed it was soft-hard) 12:31:45 --- part: jennyb left #forth 12:32:52 --- join: erider_ (n=erider@unaffiliated/erider) joined #forth 12:33:06 --- quit: erider (Read error: 110 (Connection timed out)) 12:38:18 --- nick: erider_ -> erider 12:46:48 --- quit: alexshendi ("This computer has gone to sleep") 12:49:30 --- quit: rabbitwhite () 13:10:01 zpg, I'm really not clear on ?allot. The name suggests conditional behaviour but the definition does not. 13:18:03 indeed. i thought it might just preserve the TOS, but the definition clearly isn't for that. 13:22:08 poorly named. 13:31:00 * zpg nods 13:43:34 I don't know about conditional behavior, and while I agree it's poorly named, the ? says to me "what is?" since it returns a pointer to the start of the space it allots. 14:00:56 --- join: timlarson (n=timlarso@user-12l325b.cable.mindspring.com) joined #forth 14:02:31 Conventional forth naming says a leading ? indicates conditional behaviour. 14:06:19 !#*$@#!allot 14:06:45 or "Just gimme the freakin' memory, already!" 14:13:29 --- join: I440r_ (n=mark4@67.135.84.40) joined #forth 14:16:34 --- join: vatic (n=chatzill@ool-45740b1c.dyn.optonline.net) joined #forth 14:19:32 heh 14:32:16 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 14:37:22 Quartus_: hey! 14:44:14 hi vatic. 14:45:28 zpg: hey! 14:46:47 zpg: gotta duck out, but I'll be back later... 14:47:00 --- nick: vatic -> vatic_away 14:47:16 i get that a lot ;) 14:54:57 --- quit: Ray_work ("User pushed the X - because it's Xtra, baby") 15:07:44 --- quit: segher (Nick collision from services.) 15:07:56 --- join: segher (n=segher@dslb-084-056-143-156.pools.arcor-ip.net) joined #forth 15:19:10 and now ... a@ isn't found ... i think it's time to test kforth programmes in kforth. 15:20:15 kforth has a bunch of non-standard stuff. It's not a standard system. 15:20:58 if I'm remembering the right ?Forth, anyway :) mobile right now 15:21:16 your doing irc on your palm ? 15:21:17 heh ok. well, i want to check out this neural net implementation. 15:21:32 I seem to recall a broken create/does. 15:21:42 broken how ? 15:22:01 is it create thats broken or does> ? 15:22:24 in the kforth docs. Can't have a does> that contains a does>, I think. 15:22:38 dunno, maybe both. 15:23:10 at any rate kforth doesn't claim compliance, so no worries. 15:23:31 incidentally, if i wanted string concatenation i'd just write a very simple word that takes two strings and cats them, right? 15:23:37 (there's no inbuilt word, i take it) 15:23:51 zpg, I'd use append. 15:23:58 looking... 15:24:13 it's common-usage. 15:24:13 not ANS... 15:24:21 ok, isforths does> can contain a does> but i think its a bit silly to code like that lol 15:24:38 ah, http://www.albany.net/~hello/comus.htm#append 15:24:42 why does ans specify that you must be able to places a does> inside a does> ? 15:25:12 i440, It's not stated, just a natural side-effect of implementing it with Standard semantics. 15:25:32 : silly-constant-creation create , does> @ create , does> @ ; 15:25:44 i cant see any actual valid use for something like the above 15:25:51 sorry, we've covered this before but: (addr u -> counted), is there a word that does this, or do i just unpack the counted string myself? 15:25:52 oh okj 15:26:17 ya. isforth will allow it - i cant think of a way to implement does> that doesnt support it hehe 15:26:20 erm, counted -> addr u i mean 15:26:29 oh, you could do that. But I'm thinking of : foo does> ... ; or : bar create ... does> ... does> ... ; 15:26:57 zpg, I think you mean pack, not unpack. Place is the common-usage word. 15:27:23 the first does is called at create time. the second does is called by the created word which itself would probably need to be a creating word 15:27:45 Zpg -- for the correction, count is the word you want. 15:28:13 yes, i saw COUNT. and asked for the word that did the opposite while seemingly describing count's features. 15:28:24 i seem to do this a lot :) 15:28:34 i440r, does> can be in a word separate from create. 15:28:54 thanks for the APPEND and PLACE pointers. 15:28:54 place and count are opposites. 15:28:59 indeed. 15:29:01 but it patches the most recently created word so it cant be TOTALLY separated from the creation :) 15:29:27 right, off for a bit. thanks again. 15:30:19 but it can be: : foo create , ; : bar does> @ . ; then 42 foo wokka bar wokka -> 42 15:30:55 ya 15:31:39 --- quit: I440r (Nick collision from services.) 15:31:44 --- nick: I440r_ -> I440r 15:31:55 --- mode: ChanServ set +o I440r 15:32:42 --- join: edrx (n=Eduardo@20151074195.user.veloxzone.com.br) joined #forth 15:33:08 I440r: hi - I can't pvtmsg you because I'm not registered 15:33:21 I haven't chatted with him in ages 15:33:35 aha ok lol (let it be known that i think the requirement to register is TOTALLY GHEY!!!) 15:33:38 yea me either. 15:33:43 im wondering if he is still alive 15:33:55 8-| 15:35:09 --- join: I440r__ (n=mark4@65.244.197.34) joined #forth 15:35:23 You can also do this weird sort of thing: : foo create , ; : bar does> @ . does> @ 1+ . ; 42 foo wokka bar wokka wokka -> 42 43 15:35:47 And let me just say 'wokka bar wokka wokka' just for fun. 15:35:55 ok isforth would NOT support that 15:36:11 the second does> would not leave the address of the original compiled constant on the stack 15:36:23 tho i can see a use for that!~ 15:36:31 Sure. But a standard implementation has no barrier to having one does> clause containing another does> clause, ad infinitum. 15:36:31 maybe. 15:36:55 does> @ does> 1 +! ; 15:37:01 an auto incrementing variable? 15:37:08 You can do that without two does> clauses. 15:37:10 tho i would do that as does> dup @ swap 1 +! ; 15:37:35 actually isforth has INCR which basically does a 1 +! 15:37:41 Don't you mean 1 swap +! ? : counter create , does> dup @ 1 rot +! ; 15:37:47 ya 15:38:08 The point of having a does> contain a does> would be to define new defining words. 15:38:12 does> dup @ swap incr ; 15:38:20 yes 15:39:07 It's one thing that separates the men from the boys, Forth-wise. Most knocked-together Forths have a lesser create/does> setup that contains only part of the functionality. 15:39:25 --- part: edrx left #forth 15:40:17 isforths does> compiles a "call dodoes" and then patches the most recently created word to call that call 15:40:33 would that be a standard compliant does> ? 15:40:45 Not sure I follow that. Surely the patching happens when the word containing the dodoes is executed? 15:41:11 ok does> is an immediate word. it assembles "call dodoes" 15:41:48 it then patches the cfa of the most recently created word (usually call dovariable" to be a call to the just assembled called 15:42:20 That's the general idea. So why doesn't : bar does> @ . does> @ 1+ . ; work in isforth? 15:42:38 the patched word leaves its body address on the stack when executed and then the call to dodoes leaves the address of the code of the does> part on the stack 15:43:09 on the stack? That's weird. The CREATE word doesn't automatically its assigned DOES> clause? 15:43:13 dodoes pushes si to rstack. pops TOS to si. andf begins interpreting 15:43:17 on the stack? That's weird. The CREATE word doesn't automatically *execute* its assigned DOES> clause? 15:43:34 no because does> is an implied exit 15:44:03 I know. That's not what I mean. I mean : foo create , does> @ . ; 5 foo hello hello . -> 5 is that not what happens in isforth? 15:44:04 does references ;code which is an implied exit 15:44:13 yes 15:44:14 sorry. hello -> 5 15:44:19 yes 15:44:49 ok. So discussions of isforth's register assignments aside, why would : foo create , does> @ . does> @ 1+ . ; 5 foo hello hello hello -> 5 6 not work for you? 15:45:41 ok.... 15:45:56 : foo create , does> \ cmpile time action 15:46:20 @ . does> @ 1+ . ; \ run time action 15:46:38 create , is also run-time action. 15:46:57 its the run time action of the creating word 15:47:01 yeah. 15:47:17 making it compile time :P 15:47:18 but yes, you've broken it down right. The does> clause is @ . does> @ 1+ . 15:47:48 ok let me show you my does> implementation :) 15:47:59 have you tried that code? does it bomb out? 15:48:20 it seems to work for me in isforth... 15:48:25 : ;code r> last @ name> 1+ dup>r 4+ - r> ! ; 15:48:34 : does> compile lcode ,call dodoes ; 15:48:40 erm thats compile ;code 15:48:45 so... when you do 15:48:50 : constant create , does> @ ; 15:48:53 what you end up with is 15:48:56 constant: 15:48:58 dd create 15:49:00 dd comma 15:49:05 call dodoes 15:49:08 dd @ 15:49:11 dd exit 15:49:21 sorry about the wopbbly indentation lol 15:49:35 erm no im lying 15:49:37 its 15:49:41 constant: 15:49:44 dd create 15:49:47 dd comma 15:49:50 dd ;code 15:50:05 call dodoes 15:50:09 dd @ 15:50:11 dd exit 15:50:47 so when you run constant it creates the word, commas in the value then the ;code patches that newly created word to call the "call dodoes" immediatly following it 15:50:54 Yeah, that looks more-or-less typical. The practical upshot -- if that line above prints 5 6, and it's kosher to have your does> in a separate word like : bar does> ... ;, then you're likely ANS compliant. There are a few other tests but they're not peculiar. 15:51:31 if you had does> @ does> whatever ; then you will have 15:51:34 for instance, create t here t = . -> -1 and things like that 15:51:40 dd ;code 15:51:43 call dodoes 15:51:47 dd @ 15:52:04 dd ;code 15:52:08 dd call dodoes 15:52:16 dd whatever (no dd above sorry) 15:52:38 the second call to dodoes would NOT execute using the same paramter as the first 15:52:58 dodoes takes a parameter? 15:53:08 the call to dodoes does 15:53:20 the body address of the created word 15:53:27 which it gets from last. 15:53:34 no 15:53:42 which it gets from the stack at runtime 15:53:53 Can you try the line I posted above in isforth? crc says it worked. 15:54:12 it most definatly should not work - im not in linux atm 15:54:27 but if im understanding how you say it should work it most definatly shouldnt work that way 15:54:44 You lost me somewhere, I can't for the life of me see why dodoes should need anything on the stack. It's just supposed to take the last-created word, and assign the following code to it. 15:55:00 no. DOES> uses last 15:55:06 ok let me give you an example 15:55:19 create foo \ this is presently a variable 15:55:27 : fudge does> @ ; 15:55:32 last-CREATEd, in fact, which might be a different animal than last. But that's a minor point. 15:55:51 create foo isn't a variable, it has no space allotted. 15:55:52 erm sorry create foo some-vale , 15:56:00 ok. 15:56:19 its still a variable in that its cfa is "call dovariable" 15:56:27 you know what I mean. 15:56:32 ya 15:56:38 which is why i corrected it hehe 15:56:40 now... 15:56:49 let me start over 15:56:57 : fudge does> @ ; 15:57:12 create foo 2 , fudge 15:57:26 Right. Now foo is a self-fetching variable, or a constant. 15:57:31 when fudge executes IT looks in "last" and sees the NFA of "foo" 15:57:40 Right. 15:57:44 from the nfa it derives the cfa and patches said cfa 15:57:46 Right. 15:57:59 when you execute foo it does a call to a call dodoes 15:58:07 Which looks in "last" and yadda yadda. 15:58:10 the call dodoes containe4d within fudge 15:58:12 NOOOOOOOOOOOOOOO 15:58:17 it does not look in last 15:58:27 because at RUN TIME you dont know WHERE last is 15:58:39 oh, I misread you. Thought you said foo. But in that case, not right. fudge does not look in last. Fudge is a created word. 15:58:55 stop 15:58:57 Crap. Can you start over with two words that don't start with f? 15:59:04 fudge is the creating word lol 15:59:09 ya lol 15:59:18 jeepers. Start again. : bar does> @ ; 15:59:21 : make-it-a-constant does> @ ; 15:59:29 ok 15:59:35 create blah 2 , 15:59:41 ok stop for a second. 15:59:41 make-it-a-constant 15:59:45 variable mux 15:59:55 ok 16:00:10 create blah 2 , blah is equivalent to a variable. 16:00:21 make-it-a-constant now blah is equivalent to a constant. 16:00:27 Right? 16:00:33 yes but i didnt want to use "variable" in that case 16:00:39 because it isnt GOING to be a variable :) 16:00:46 Sure. But my description is valid. 16:00:50 yes 16:01:19 Ok. make-it-a-constant, when it runs, executes dodoes. Dodoes looks in 'last', finds the NFA of blah, derives the CFA of that, and points it at the code following dodoes. 16:01:28 ok. when you execute "make-it" the most recently created word (blah) is patched 16:01:44 when you run blah IT does not look in last because by then mux will have been created 16:01:50 Right. 16:02:06 But if instead you did : make-it-funky does> @ . does> @ 1+ . ; 16:02:15 Then create blah 2 , make-it-funky 16:02:42 ohhh hehe 16:02:52 make-it-funky would call dodoes, find 'last', patch the CFA with the address of the '@ . does> @ 1+ .' code. 16:02:56 then when you ran blah it would run the SECOND does> part only 16:03:01 Then blah -> 2 16:03:05 no thats not right 16:03:06 stop 16:03:25 blah runs, fetches the address, prints a two, then calls dodoes, which looks up 'last', which is still blah, finds its CFA, patches it to point at the '@ 1+ .' code. 16:03:30 make-it-funky is BAD - let me show you why 16:03:34 Then blah -> 3 16:03:40 expanding on your example (stop a sec :) 16:04:01 : make-it-funky does> @ does> @ 1+ ; 16:04:17 variable blah make-it-funky 16:04:19 well, no, does> @ . does> @ 1+ . so you can see the effect immediatly, but same general idea. 16:04:20 variable fudge 16:04:21 blah 16:04:40 Right, blah would reassign the last created word no matter what it is. 16:04:42 when blah executes it will execuyte the first does> part and will return the body contents of blah 16:04:58 it would then PATCH FUDGE !!! 16:05:07 when fudge executed it would does> the second does> 16:05:39 Yes. 16:06:06 which is a totally funked up way of coding ANYTHING lol 16:06:15 it looks like an accident waiting for an idiot to happen 16:06:27 This example is completely spurious and illustrative, but in fact it's a way to write a defining word that creates new defining words. 16:06:36 i think does> .... does> .... is a dangerous construct 16:07:01 Maybe it is, but it's a required behaviour of a compliant implementation. I bet yours works. 16:07:38 it does do that 16:07:46 Consider : foo create ... does> ... create ... does> ... ; foo will define a word that defines new words. 16:08:01 but thats not what i understood to be the way you were saying it should behave 16:08:04 I mean, I bet yours is compliant. 16:08:13 yes 16:08:44 Well, in the hello hello example, it prints 5 6 because it reassigns its own does> behaviour. Of course it would do the same for any subsequent created after which it was executed, which is why it's a spurious example simply designed to test for the required behaviour. 16:08:45 but your exampele above does> @ does> @ 1+ ; being used to create a word taht returns X and X+1 is totally not now it would work in isforth 16:09:08 in fact i cant see how that would work anywhere lol 16:09:17 no, it's not being used to create a word that returns x and x+1. I'm calling the word twice. First time, it prints x and reassigns its DOES>, so the second time it prints x+1. 16:09:30 If you prefer, hello -> 5 hello -> 6 16:09:54 ok but only if you execute the created word immediatly after it was created 16:09:59 yeah, as I did. 16:10:10 Again, just an illustration to demonstrate the required behaviour. 16:10:32 It's a natural offshoot of building it properly. But many weekend Forths don't build it properly. Some can't even have DOES> in a word separate from the CREATE. 16:10:35 ok IMHO creating a creating word that requires you execute the said created word immediatly after it was created is VERY BAD!!!! 16:10:50 someone will neglect to do it one time and will have a very difficult bug to find :) 16:11:06 I440r, stand back from the phosphor dots a foot or two. I'm not recommending it as a programming technique, or suggesting that the example as given has any utility outside of being illustrative of the required behaviour of DOES>. 16:11:18 having a spec that requires that you have something that is likely to cause you to shoot yourself in the foot is bad 16:11:39 having a requirement to allow you to do so is good. but requiring you to possibly do so is bad 16:11:44 Having a spec that disallowed DOES> after DOES> would be odd, restrictive, and awkward. 16:12:33 no. i didnt say it should be disallowed. it should be allowed. "unix was not designed to stop you from doing stupid things because that would stop you from doing clever things" 16:12:41 what you ahve isnt "we allow you to do stupid things" 16:12:43 what you have is " 16:12:50 It would also have to disallow : constant create , does> @ ; : foo create , does> @ 2* constant ; and any other construction where a does> clause, however inadvertently, called another does> clause. 16:13:00 no 16:13:08 not disallowing is not the same as MUST ALLOW 16:13:16 Either a does> clause can contain another does> clause, or it can't. 16:13:54 the spec should have nothing to say on this 16:14:13 Then how do you answer the question of whether it's compliant to have a does> clause that contains another does> clause? 16:14:21 it should not require you to support it but it also shouldnt disallow you from doing so 16:14:27 i.e. it should not specify one way or the other 16:14:54 Fantastic. So if I'm writing a defining word that creates defining words, I have to bend over in several directions at once to accomodate systems that may, or may not, allow me to call another does> clause from inside the first. 16:14:59 --- nick: vatic_away -> vatic 16:15:10 Thanks, I'll go with the specification. 16:15:45 ok. have you ever created a defining word that creates defining words ? 16:15:50 I have. 16:16:03 show me ? 16:16:17 I'd have to ferret around in my sources to dig it up. It's not something I do often. 16:16:40 i would expect not, i would also think it could be done better 16:17:00 requiring defining defining words is like requiring defining defining defining defining words 16:17:05 Consider a system where a does> clause can't contain another does> clause. How would you build something that broken? After all, the one you built, ignorant of the standard, is already compliant. 16:17:09 when do you stop requiring? 16:17:13 You don't. 16:17:42 Systems that can't have a does> call a does> are broken in strange ways; it's very likely that the breakage means other aspects won't behave in an expected way, either. 16:17:47 so i am required to support (*assume compliance is important to me) words that create creating words that create creating words ad infinitum ? 16:17:49 Like, for instance, being able to have does> in its own word. 16:17:51 im REAQUIRED to support that ? 16:17:53 dumb 16:18:05 how about not requiring i support stupid coding practices ? 16:18:38 You can't legislate poor practice away. How would you write DOES> so that it disallowed calling another DOES>? 16:18:55 im not saying legislate it AWAY. im sayinag "dont legislate it" 16:19:01 i.e. dont require it NOT be present 16:19:06 just dont require it present 16:19:15 theres a difference 16:19:26 And hence make it that much more difficult to write code you can share. 16:19:38 your requiring that my machine have the ability to decapitate me. as opposed to requiring that it not be able to decapitate me 16:19:47 if i decapitate mysefl its my fault not the standards 16:19:57 Jesus, Mark. Go to the wall with it, why don't you. Why not 'eviscerate'? Or 'eat babies'? 16:20:08 you dont want to require im not able to - i agree 16:20:15 but your requiring that i AM able to 16:20:44 Yes. Even a naive useful implementation of DOES> will have compliant behaviour. It's broken systems that don't. That breakage will likely turn up other artifacts, as well. 16:21:01 you should allow me to do it if i chose because to NOT allow it is to restrict me. thats NOT what your doing 16:21:31 I'm not requiring you to do anything at all, I440r. However, fortuitiously your implementation already does allow this hideous, unthinkable baby-eating behaviour. 16:21:43 According to cr. 16:21:45 crc. 16:21:56 you are totally not understanding what im saying lol 16:21:59 * lukeparrish is confused about what is and isn't being allowed 16:22:17 I440r, I'm understanding you. You're ranting about the Standard making you wear funny pants again. 16:22:29 no 16:22:32 because it doesnt 16:22:38 You are, however, already wearing the funny pants, by your own choice. 16:22:45 And don't think we didn't notice. 16:23:45 btw, there are SIX new werties on c.l.f. 16:24:15 the standard is wrong for requiring i support bad coding practices. it would be good if it said i MAY support them. it saying that i MUST is bad 16:24:25 werties ? 16:24:29 do they all put a space before question marks ? 16:24:31 messages from werty 16:24:36 oh 16:24:44 i do that lol 16:24:50 :) 16:24:52 this is my question xyzzy ? 16:25:06 even tho i know its wrong i still do it sometimes 16:25:12 The standard does not make any mention of bad coding practices, nor any requirement for you to support them. Being able to define defining words is a strength, not a weakness. If you don't use it properly, seek higher counsel. 16:25:15 usually if im doing ??? or somethign lol 16:25:50 hehe, I just noticed that you did it, so I thought I'd bring it up 16:26:03 im not werty btw :P 16:26:12 werty uses !!! and stuff though 16:26:14 no, he's at least twice as crazy as you are. :) 16:26:18 ok, just thought I'd check 16:26:57 what messages has he posted 16:27:07 clf doesnt allow me to sort according to poster heh 16:27:08 The standard also requires you to be able to do 1 0 / despite the fact that the result is undefined. 16:27:35 He responded to a few existing threads. 16:27:43 yea. which ones ? 16:28:01 mental note: stop putting that space in 16:28:02 lol 16:28:08 'separate : and code dictionaries', 'ANS forth testing', 'simplified immediate' 16:28:27 'a small wildcard matching algorithm' 16:28:37 'is there an app server in forth yet' 16:29:39 werty is the ultimate in insane stupidity. He is the alpha and omega of morons. 16:30:14 ok. i think werty types random words in random order 16:30:25 we should invite him in here :) 16:30:31 Christ no. 16:30:36 lol 16:31:17 err he posts the same shit over and over ? 16:31:18 Quartus: you almost make him sound cool 16:31:43 Oh yeah, he's the shiznit. 16:32:01 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-144-191.pools.arcor-ip.net) joined #forth 16:32:27 methunkes he hates forth :P 16:32:31 and all who code it 16:32:33 --- quit: Snoopy42 (Nick collision from services.) 16:32:49 --- nick: snoopy_1711 -> Snoopy42 16:33:01 Well, he is the greatest systems programmer in the world, after all. 16:33:16 true 16:33:34 Every program has at least one bug and can be shortened by at least one 16:33:34 instruction -- from which, by induction, one can deduce that every 16:33:34 program can be reduced to one instruction which doesn't work 16:33:40 But you and he may bond, he thinks the standard is deliberately slow and bad. 16:33:50 I'm sure he'd buy you a beer if you visit him in Zurich. 16:33:53 acvtually the above is wrong 16:34:05 every program can be redused to ZERO opcodes that dont work 16:34:26 i dont think its deliberatly slow or deliberatly bad 16:34:31 but i do thinki its slow and bad :) 16:34:34 and overly complex 16:34:42 That'll still get you beer from werty. He also claims to be rich, so you should horn in. :) 16:34:57 a hugely complex solution to a very simple problem even 16:35:06 no thanks, i dont drink beer heh 16:35:15 Oh, I'm sure he could find an appropriate libation. 16:35:18 im rich too :) 16:35:30 but then... if i had $29475082745023743 id be poor 16:35:35 so im poor too 16:36:15 having money is not what makes me rich and not having a life partner IS what makes me poor :) 16:36:22 I traced back in the pattern-matching thread, found out why the posted implementations are so crappy. They're one-to-one translations from a C routine. 16:36:35 hah 16:36:43 ive ported c code to forth 16:36:54 it never looks right 16:37:07 I wrote mine in ignorance of the C implementation, so it somehow doesn't have four levels of nested conditionals. I should go back and add them in. :) 16:37:24 yea. you did it all wrong 16:37:25 duh 16:37:36 anyway, back to work 16:37:43 Anyway, to rewind, and to get you re-started on your rant... oh, dang. Ok, see you later. :) 16:38:38 :) 16:42:21 Anyway -- you can usually spot weekend-forths in the wild by broken create/does> implementations (if they're implemented at all). It's one of the most powerful items in a Forth, and trickier to implement (esp. properly) than most of the others. 16:43:39 And not necessarily just broken in not being able to have a does> call a does>. 16:44:02 its one of the most difficult things to implement for sure. i was using create does> for years without knowing HOW does> worked 16:44:41 So I noted with interest that kForth's create/does> is broken. Also that Ting left DOES> completely out of his eForth, saying he never used it, so didn't see why it should be there. 16:45:18 I look for it in an implementation; if it works, there's a good chance the rest of the system is sound too. 16:45:28 ting isnt too smart for being a genius n all 16:45:45 i didnt like his b0rken english documentaiton in fpc at all 16:46:15 I don't know, maybe his DOES>-fu is amazing, but does> is darned handy. I'd miss it if it were gone. I wonder what Forth apps he wrote where he never had cause to use it. 16:46:38 And what peculiar work-arounds he used instead. 16:47:06 And whether those were by choice, or because he didn't understand does> well enough to use it, let alone implement it. All these questions and more, on 'Ting!' 16:48:54 you can use ;uses and ;code 16:49:01 : constant create , does> @ ; 16:49:01 or 16:49:08 : constant create , ;uses doconstant ; 16:49:18 the latter is actually more efficient 16:49:26 and better factored 16:49:43 so does> is strictly speaking not required 16:49:52 you con do 16:50:03 : foo create , does> lots of stuff here ; 16:50:03 or 16:50:08 : stuff lots of stuff here ; 16:50:13 : foo create ;uses stuff ; 16:50:24 * vatic would take werty over the Forth-inspired poetry and $400 teddy bears anyday... 16:50:41 100 bottles of beer was cool! 16:50:42 lol 16:52:52 I440r, that's not appreciably different from having DOES>, in terms of implementation. You could build one from the other in about 23 seconds. 16:53:06 vatic, the poetry put the fear into me. 16:53:18 yes but if does> was not there i wouldnt MISS it exactly heh 16:53:46 Quartus: yes, it REALLY creeped me out. 16:53:46 but i implemented it in isforth because it gives the user a choice. and a good one 16:53:50 I mean to say, if DOES> was missing it would need re-inventing. It (or its work-around equivalent) is useful. 16:54:04 did cm invent does> ? 16:54:09 or did someone come along later ? 16:54:16 argh theres taht space again lol 16:54:48 The early stuff was with somewhat different semantics. 16:55:00 yes but did cm invent it ? 16:55:03 Yes. 16:55:06 ok 16:55:22 CREATE/DOES> is in FIG, and it is based on Moore's stuff. 16:56:50 Actually looking it over I'm not sure the FIG DOES> works with CREATE. Hmm. 16:57:20 it used i think create is a 79ism 16:59:57 Ah here we go. microForth, which was Forth, Inc., mostly by Dean Sanderson in 1977-1978, had that later evolved into CREATE DOES>. 17:00:21 microForth was based on Chuck's original miniForth. 17:00:47 aha 17:02:02 Question then comes, did miniForth (originally just called Forth) have or some relative of it? 17:03:24 Looks like yes. Moore: "The word DOES> appeared (spelled ;: )." 17:03:59 ewww 17:04:12 So he did invent it. Yes, bad name. 17:04:24 he corrected names of certain words over time 17:04:53 but i think "AND" "OR" and friends should use the C operator names 17:05:02 i implemented that in isforth for a while but ppl complained 17:05:12 Yeah, I wouldn't like it much. I don't find C all that readable. 17:05:20 like reading AND when you see & is as problematical as seeing FETCH when you see @ 17:05:30 its more consice 17:05:34 less verbose 17:05:34 ^ says exponentiation to me. I hate that C has | and || and & and &&, and = and ==. 17:05:57 oh no i only had & | ^ ~ etc not && and friends 17:06:03 And + and ++ and - and --, to boot. 17:06:26 ++ is a good name for what i currently call INCR 17:06:28 well, a few aliases and you're off to the races, though I'd find such source hard to read. 17:06:33 ( a1 --- ) 17:06:35 It's only a good name if you're steeped in C. 17:06:38 increments contents of address a1 17:06:47 no. its a good name not because of C 17:06:50 because its SMALL 17:07:05 It's not descriptive, in and of itself, unless you already are familiar with it from C. 17:07:16 would you prefer x y * or x y multiply 17:07:28 I prefer *, but not because I learned it in C first. 17:07:37 (Learned it in BASIC first, actually). :) 17:07:39 exactly 17:07:49 c has no bearing on this 17:08:01 The * / + and - have long historical usage as mathematical symbols, predating any computer languages. 17:08:02 & is widely known as an AND word 17:08:25 (yes, even the *) 17:08:47 so replacing the forth word "AND" wth & shouldnt pose that much of a problem to anyone IMHO 17:08:52 but they bitched so i reverted :) 17:09:21 I don't hate & for and. | doesn't say OR to me, though, never did. Nor are ^ or ! or ++ or -- intuitive. 17:09:41 And C pointer syntax was developed to confuse. 17:09:47 yes 17:09:53 ugh 17:10:10 ill go furthere 17:10:22 c was designed to encourage you to shoot yourself in the foot 17:10:28 forth was designed to ALLOW you to 17:10:40 It's painful in places. The operator precedence is borked, too, so you have to defensively parenthesize. 17:10:50 heh 17:11:06 there should be no precedence at all 17:11:14 operators should be first come first served 17:11:35 hey 17:11:37 well, there's always going to be precedence, in a Fortran/Algol-derived infix notation. 17:11:43 hey zpg 17:11:55 one of your fellow Britons was here earlier, Jenny Brian from FIG UK. 17:12:20 oh, neat. 17:12:36 Apparently the fig IRC channel is unavailable, so I invited them all here. Perhaps they'll come. 17:13:07 that'd be interesting. 17:13:26 they should hold their fig meeting here for sure 17:13:35 i just wish Chris Flynn was still with them 17:13:38 he is my old boss 17:13:57 incidentally, if i write "postpone :noname" in a function definition, is there anyway i can say "once the ;" has been compiled in this postponed definition" and have more words following :noname ...? 17:14:14 zpg, you lost me. 17:14:38 okay, i've defined a word ==> " : method: postpone :nomame ; " 17:14:45 noname, even 17:15:03 but what if want code >>here<< ==> " :method: postpone :noname >>here<< ; " 17:15:32 No mame? What, something against Al Jolson? 17:15:46 You'd postpone or evaluate that code3. 17:15:48 -3 17:16:44 yes but if write, say " : method: postpone :noname dup ; ", the dup would feature after the definition has been compiled when one writes " method: swap ; " ? 17:16:52 wouldnt that be "no mammy" ? 17:17:08 What the deuce are you trying to do? Can you back up a few feet and show me what you want to accomplish at the end of all this? 17:17:24 I440r, right. So this is an anti-game-emulation thing. 17:17:31 No MAME. 17:17:36 heh 17:18:08 okay, method pool stuff. so, this "method:" word will act as ":" does, but instead of creating a new word, it instead creates a nameless word and then places the word address into a list, for later access. 17:18:45 the list will be string-addressable (associative list in other words), hence the postponed word being nameless. 17:18:45 So you want to be able to write method: swap ; and have the xt of the noname word containing 'swap' magically inserted in a table somewhere? 17:19:08 yes 17:19:19 the rest of "method:" would do this. 17:19:43 The xt doesn't show up until the ; so you want this instead: :noname swap ;method where : ;method postpone ; ; 17:20:15 oh, nice. 17:20:29 And by the way, you do not need to postpone :noname. If you want an alias for :noname, do this: : method: :noname ; 17:20:35 Then you can type method: swap ;method 17:20:42 * zpg nods 17:20:48 or m: swap ;m or whatever syntax floats thine boat. 17:20:48 yes, this postpone stuff is still new to me. 17:21:20 * zpg reaches for his Palm... 17:21:49 In : ;method postpone ; ; you have to postpone ;, or it'll end the definition of ;method. You want to postpone that action. 17:22:09 And you have to make ;method an immediate word, sorry. My omission. 17:22:19 : ;method postpone ; ; immediate 17:22:40 alternatively, in Quartus Forth at least, ' ; alias ;method 17:23:44 why immediate? 17:24:06 quartus can you do ' foo alias bar immediate and make bar an immediate version of foo ? 17:24:09 so it works in new word definitions after ":" ? 17:24:19 Because when ;method is encountered, there's a definition being built via :noname. If it's not immediate, a call to ;method will be written into the new word, instead of being executed. 17:24:29 I440r, yes, new header, same xt. 17:24:35 ya 17:24:37 same same 17:24:46 ah ok, i see. 17:25:00 ; itself is immediate. 17:26:36 how many bytes in an unsigned short 17:26:36 2 ? 17:26:53 I think 16 bits minimum in a standard C, though I'd have to look that up. 17:27:03 ill assume 2 :P 17:27:27 2 only if each byte has 8, and the machine is byte-addressable. :) 17:27:40 heh 17:27:51 And then 'at least 2', would be correct. Standard C specifies all types as minimums. 17:28:04 So does Standard Forth, actually. 17:28:37 one day an unsigned short will be 64k in size 17:28:53 And that man's name was Burt Reynolds. Page 2. 17:29:04 ? 17:29:17 Paul Harvey. Don't tell me you don't listen to talk radio. 17:29:26 im at work. 17:29:31 was that the rest of the story ? 17:29:32 Not right this minute. 17:29:46 burts wife died of aids and they blacklisted him because of it 17:29:48 Yes, that's the 'rest of the story' guy. 17:29:51 thats why he was not in any movies for years 17:30:03 then they found out she got it in a transfusiohn 17:33:38 Where do you get this stuff? There was a rumour that Reynolds himself had AIDS for awhile, because he was losing weight, but he didn't. Which of his wives is it that you think died of AIDS? Judy Carne or Loni Anderson? Coz they're both still alive. 17:36:20 ok, maybe im wrong about that one, i heard it somewhere tho 17:36:26 Don't trust that source. 17:36:33 it stuck because burt was a noshow for a very long time 17:38:52 --- join: slava (n=slava@CPE0080ad77a020-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 17:38:52 --- mode: ChanServ set +o slava 17:39:06 http://factorcode.org/tetris.png 17:39:53 heh :) nice 17:41:08 what's that bash syntax to get a var value and if its not set, return a default? 17:41:22 ${FOO:blah} or something? (but that doesn't work) 17:41:44 ${FOO-blah} 17:41:53 * slava just tried random punctuation chars 17:43:54 six new werties, slava 17:44:02 i saw them 17:44:35 they're not new, though. More of a 'best of werty' repeat. 17:45:05 does anyone ever flame him on clf ? 17:45:09 No ! I dont want to hear it !! I use only CPUs that can access 32 megabytes of RAM !! and have more than 2 index registers ! 17:45:18 as far as I can see, nobody has ever replied to anything he wrote 17:45:32 Quartus_: I think starting every post with " The worlds greatest systems programmer wrote : " is new 17:45:39 that speaks very highly of the ppl on CLF :) 17:45:45 or DOESNT speak very highly of them :) 17:46:34 he used to end them that way. 17:47:32 some people have replied, not usefully. 17:48:32 slava: when he was talking about some ARM board, I suggested he consider the Linksys nslu-2 which is about 30% of the cost... 17:48:41 did he call you a LUDDITE? 17:48:44 or did he tell you to THINK!!! 17:49:46 ${FOO:=default} 17:49:58 slava: he thanked me sort-of, but he was completely obessed with its Linux, which wasn't my point: it was simply a cheap and well-documented way to work with an ARM chip 17:50:23 i wonder if he'll ever do anything 17:50:27 cheap isnt always good :) 17:50:35 slava: it convinced me he really doesn't think very well... 17:50:39 nothing is always good 17:50:42 i think that's clear 17:51:22 I440r: find something missing here? http://www.nslu2-linux.org/wiki/Main/HomePage 17:53:25 I440r: I've seen SLUGs for $23 at Wal-Mart... 17:54:33 whats a SLUG ? 17:55:12 aha ok 17:55:23 I440r: :-) 17:55:42 I440r: a SLUG is what i'ma bust in yo ass if you keep talkin' shit foo' 17:55:58 I think that's a 'cap'. 17:56:23 slava: that's a cap, son. I don't think Linksys makes caps. 17:56:53 here we call them "locution with an intent to belittle" 17:59:41 I thought British humour was all about bottoms? :) 18:00:36 Benny Hill lied to me. 18:00:37 we mix it up to confuse outsiders. 18:02:43 :) 18:14:25 http://www.meetyoulater.com/M_show_2462.cfm 18:15:02 night all 18:15:06 He claims to be swiss, but I'm suspicious. 18:15:08 cya zpg 18:15:29 --- part: zpg left #forth 18:20:02 I'll stop after this one: http://www.lawyerfreelegal.com/provisionalpatent/ReWhataboutaudiochips7310.php 18:20:27 That is him. 18:20:51 Check that one out, slava. 18:22:16 Quartus: pretty succinct statement of his beliefs, eh? 18:22:33 Well, only a partial statement. The Diatribe of Werty runs longer than that. 18:23:50 "The worlds top programmers can write a PDA OpSys in 1 day ." 18:24:02 he's been making similar claims for years 18:24:17 Jeepers. It took me two days to get my pattern-matching routine factored. I must rank pretty low. 18:27:28 Either that or a PDA OpSys is just 'WERTY IS THE GREATE5T SYSTEMZ PROGRAMMER IN DA WORLD! LUDDITES!!!!!!'. In which case I can write one pretty fast. 18:28:54 --- join: Anbidian (i=never@S0106000fb09cff56.ed.shawcable.net) joined #forth 18:36:24 hey Anbidian 18:36:50 Evening Quartus. What's new? 18:37:33 This 'n' that. How about with you? 18:38:40 Hmm, more of the same really. Added a "Forth Shirts" section to my site. 18:39:23 I was reading up on your site's forum recently. You really provide great support for Quartus. I don't know where you find the time. 18:40:18 I buy time in blocks from an outfit in Sheldon, Ohio. 18:41:02 Thanks, though P) 18:41:03 oops 18:41:04 :) 18:41:09 Heh, how much does that cost? ;) 18:41:20 Depends on the volumes. 18:44:20 No one has bought a Forth bear yet :| 18:44:29 heh 18:46:51 Perhaps : morning begin while repeat ; 18:48:43 forgive my ignorance of Forth, wouldn't that repeat "morning" as well? 18:48:50 no. 18:49:01 morning is the name of the definition. 18:49:02 Note the : 18:49:27 so... coffee puts you to sleep? 18:49:40 No. While still sleeping, drink coffee. 18:49:41 *nods* 18:49:49 --- quit: erider (Read error: 110 (Connection timed out)) 18:49:50 That... would be difficult. 18:49:54 Maybe for you. 18:50:05 Yes. 18:50:06 I did it for years. I'd wake up around 10:30, at my desk at the office. 18:50:23 Everything up till then was sleepwalking. :) 18:50:36 Ok, : morning begin fully-awake? while coffee drink repeat ; 18:50:39 Too long for a t-shirt, maybe. 18:50:43 oops 18:50:48 Maybe your alternate personality had the timeslice. 18:50:50 : morning begin fully-awake? not while coffee drink repeat ; 18:50:54 Secretly.... YOU ARE WERTY. 18:51:05 Aren't we all werty in some way? 18:51:29 I was going to "Yes, the same way we all have STDs." But that didn't sound quite right. 18:51:34 ew. 18:51:50 : werty 1 0 / ; 18:52:10 I figured it would be something that generated an irrational number. 18:52:31 hmm. : werty -1.e0 fsqrt ; 18:52:37 Anbidian, URL to your site with T-shirts? 18:53:01 No, that'd make werty NaN. 18:53:04 http://cafepress.com/forth 18:53:39 : werty 2e fsqrt ; That's irrational. 18:53:40 -1 sqrt . 18:53:40 C{ 0 1.0 } 18:53:58 What's the story with this werty chap? A misguided forth advocate? 18:54:05 he's insane. 18:54:06 A freaking lunatic with an internet connection. 18:54:12 http://www.cafepress.com/forth.81998807 18:54:17 Hey now... no props? 18:54:39 hahahha 18:54:48 thanks ;) 18:55:10 400$ for a forth bear? jesus 18:55:22 I know, it's a steal. But it wouldn't let me put it any higher 18:55:48 is the web site written in forth? 18:55:54 The bear should say "My name is Chuck". 18:56:00 no, I have no idea what it's written in 18:56:25 you can buy 20 Forth bears for only $8,000 18:56:51 * vatic thinks Werty lives in Thailand... 18:57:04 Switzerland, by his claim. 18:57:10 Greetings vatic. 18:57:25 I didn't know what organism to chose for the mock O'Reilly Book cover 18:57:55 Is the Duck-Billed Platypus taken? That'd be perfect. 18:58:10 Quartus: google "werty bangkok." The swissinfo.org address is a small free email service... 18:58:15 what about a werty? 18:58:21 Quartus 18:58:38 : actually I think it is (but don't quote me on that) 18:58:42 I went with a fly :| 18:59:35 Anbidian: hey... 19:00:00 --- quit: virl (Remote closed the connection) 19:00:09 How's everything vatic? 19:00:22 Anbidian: ok, and you? 19:00:36 Good enough here. 19:00:42 good luck with your web site stuff... 19:01:08 well maybe when i finish the factor web framework you can build your forth store using that ;) 19:02:25 what OS does factor run on? 19:03:00 that's cafepress, a 'put logos on junk' portal. 19:03:31 Anbidian: windows mac and linux 19:03:53 are you calling Forth bear junk Quartus?! ;) 19:04:00 I am. 19:04:22 and I will keep saying it until I receive a free forth bear. 19:04:39 lol. Give it some time. I'm weak. 19:06:22 Quartus, you use FreeBSD right? 19:06:34 my hosting service does. 19:07:04 so I work under it as needed. 19:07:17 I need to decide what OS to run for a server I am colocating, and I was reading up on FreeBSD and found that there were a lot of problems and unstability with 5.x, do you know if that is accurate? 19:07:26 i use linux and it works for me. 19:07:36 and afaik freebsd 5.0 is rock solid these days. 19:08:01 I know pair uses bsd 4.x, and stability is their #1 concern. 19:08:36 pair = your host? 19:08:46 right. Pair.com. 19:09:57 you on a dedicated server with them? 19:10:07 shared. 19:10:39 and they're not hassling you about using too much cpu resources? 19:10:51 nope. 19:11:02 why? 19:12:00 Just curious. Some hosts force upgrades if your shared account gets too much traffic and uses too much of the cpu 19:13:04 no, pair is good. Huge bandwidth, big storage allotments, no worries with cpu usage (not that I push it much). 19:13:14 "Fish sauce !! 5 years in Thailand . I know what fish sauce is . It will ruin taste of any food ." -werty 19:13:37 vatic, do you post on c.l.f.? 19:13:38 there you go. 19:13:57 Anbidian: not often... 19:19:08 --- join: erider (n=erider@unaffiliated/erider) joined #forth 19:23:27 So, Anbidian, what percentage of the gross do I get for the MILF shirt? 19:24:00 My calculator cannot display fractions that small :/ 19:24:33 Try the one on Quartus' site for the Palm. 19:25:36 it can only be solved as a limit approaching a horizon of virtually zero 19:25:56 Quartus_, which Palm emulator would you recommend for Windoze? 19:26:32 * Anbidian guesses POSE 19:26:53 that's the one. 5.4 simulator is good too. 19:44:53 --- quit: erider ("I don't sleep because sleep is the cousin of death!") 19:54:59 As far as I know there's only one Palm emulator. 19:55:17 --- quit: vatic ("*poof*") 20:03:09 --- quit: I440r__ (Client Quit) 20:12:39 Huh. So it looks like I can upgrade my Vx to 4.1.2 using the ROM_Transfer.prc thingie. At least, without an indepth reading, that's the impression I get. 20:12:52 I did that. 20:13:10 Though I'm not sure of the exact method, now; long time ago. 20:13:28 It looks like you do it from POSE, with the serial cradle. 20:13:54 Oh wait, it looks like it's Palm->POSE, not POSE->Palm. 20:13:55 Foo. 20:14:15 There's a path for upgrading the device ROM, arcane and hard-to-find though the knowledge may be at this late date. 20:14:37 You don't gain much by so doing. 20:14:53 There was an upgrade utility for the purpose; you fed it a .ROM file. 20:15:15 I'd like to have both devices at the same release level, if nothing else. 20:15:40 Always a risk, updating firmware. 20:17:13 So they made it possible to brick it? 20:17:23 Anything can be bricked. 20:17:53 I don't know how easy or hard it was, I succeeded in the upgrade. But I needed to do it, at the time, or I wouldn't have bothered, on general principle. 20:18:01 Not if it's done correctly. Many devices have a boot loader in ROM or an area of FLASH that can't be written without hardware jumpers being installed. 20:18:22 It'd be a neat trick to have hardware jumpers on a Palm Vx. :) Back doesn't come off. 20:18:27 Well, it's glued on. 20:18:40 So there you have it. A non-upgradable boot loader. 20:19:09 That's what the lock controller does. Has an XMODEM loader in ROM. Unless you fry the thing with ESD, even if you manage to erase the FLASH, it's recoverable. 20:19:34 While it was possible to re-flash the OS, it wasn't a supported feature, as such. OS patches took the form of loadable PRCs, nothing that flashed. 20:19:41 ah 20:20:00 That must be the Upgrade_3.1.1.prc file that's on the V. 20:20:09 Probably. 20:27:12 The Palm Desktop would automatically re-install it if it was missing. 20:34:18 --- quit: jcw ("Client exiting") 20:35:03 If you're wondering if the pm'ing on your mobile account works, it does. 20:36:31 ok good. I think it was k5* writing me today. Didn't parse it fully. 20:36:40 He wrote me and said that Forth didn't have a community. 20:36:54 I thought that'd be an odd thing for you to say, hence my followup. :) 20:37:08 It's an odd thing for anybody to say, in fact, but here we are. 20:37:28 I think he's sort of odd. 20:37:31 And arrogant. 20:37:33 And annoying. 20:37:39 I've noticed that. 20:38:44 kc5tja? 20:38:54 I think it stemmed from my visiting ##forth and asking why they'd started another channel, as it could only subdivide an already small community. 20:39:11 slava, yes 20:40:23 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 20:42:19 what is the focus of ##forth? 20:42:23 no clue. 20:42:40 the forth community is divided. i'm not sure it's a problem 20:42:49 It apparently has its origins in IRC politics relating to the # and ## prefixes. 20:43:33 I'm sure that's of importance to somebody, but I can't imagine a smaller issue. 20:52:11 ##forth is empty 20:52:24 oops i joined ##forth? 20:52:29 its not empty 20:52:40 . /names says ##forth slava timlarson madwork arke crc 20:55:16 --- join: madgarden (n=madgarde@London-HSE-ppp3546145.sympatico.ca) joined #forth 21:33:37 --- quit: Quartus_ (Read error: 60 (Operation timed out)) 21:51:01 --- join: I440r__ (n=mark4@65.244.197.34) joined #forth 23:01:37 --- join: alexshendi (n=alexshen@dslb-084-056-183-030.pools.arcor-ip.net) joined #forth 23:02:00 --- part: alexshendi left #forth 23:03:14 --- quit: slava () 23:21:21 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 23:59:59 --- log: ended forth/06.10.19