00:00:00 --- log: started forth/04.02.23 02:43:10 --- nick: chandler_ -> chandler` 04:58:46 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 05:05:26 --- quit: hovil ("Leaving") 05:05:50 --- quit: Herkamire (Read error: 60 (Operation timed out)) 05:06:27 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 05:48:31 --- quit: chandler ("KAPOW!") 05:48:36 --- nick: chandler` -> chandler 06:08:01 --- quit: Robert ("brb") 06:13:07 --- join: Robert (~snofs@c-8f5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 06:16:45 --- join: fridge (~fridge@dsl-203-33-164-223.NSW.netspace.net.au) joined #forth 06:18:24 Dobryjj vecher! 06:20:20 Privet, ASau :) 06:21:39 --- quit: ree (Read error: 60 (Operation timed out)) 06:23:10 --- join: ree (~jwm@ns.fasthost.net) joined #forth 06:25:37 Privet! 06:31:56 away baking now 06:31:57 bbl 07:25:28 --- join: I440r (~mark4@65.42.232.20) joined #forth 07:28:03 --- quit: mur (Read error: 60 (Operation timed out)) 07:29:48 --- join: mur (~mur@uiah.fi) joined #forth 07:31:33 --- join: networm (~networm@L0649P10.dipool.highway.telekom.at) joined #forth 07:47:48 --- nick: kc-sleep -> kc5tja 07:58:12 --- join: Nutssh (~Foo@gh-1063.gh.rice.edu) joined #forth 08:05:42 --- quit: ree (Read error: 60 (Operation timed out)) 08:06:30 --- join: ree (~jwm@ns.fasthost.net) joined #forth 08:49:16 --- quit: ree (Read error: 110 (Connection timed out)) 08:50:46 --- join: ree (~jwm@ns.fasthost.net) joined #forth 09:01:10 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 09:38:58 --- quit: Nutssh ("Client exiting") 09:39:57 --- quit: Robert ("brb") 09:44:16 --- join: Robert (~snofs@c-8f5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 09:56:45 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 10:01:51 --- quit: Nutssh ("Client exiting") 10:04:33 --- quit: qFox ("if at first you dont succeed, quit again") 10:13:19 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 10:19:32 --- quit: proteusguy ("Leaving") 11:07:07 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 11:57:37 --- join: proteusguy (proteusguy@36.sub-166-153-167.myvzw.com) joined #forth 12:00:53 hi 12:01:11 hola 12:12:13 slave, yo mang, got some $30 crack for me? 12:12:21 slava rather 12:13:16 nope, ask in #java :) 12:13:20 full of crackheads :) 12:14:08 Heh. 12:14:23 I'm arguing er, discussing with Networm how to implement DOES> 12:14:36 in privmsg? bring it here :) 12:14:42 i'm still not sure if i need CREATE/DOES> in factor. 12:14:49 And that involves $30 crack? 12:15:03 No, slava's game does. 12:15:03 Robert, smoke this, maaaaan, it will all, like, make sense :) 12:15:21 slava: Whatever you say, sir. 12:15:27 Robert, its a crime RPG 12:15:43 Heh. Dopewars II? 12:15:55 Robert, dopewars with graphics, and shoot-em-up :) 12:17:05 If you need pixel artists, you might want to go to http://pixelation.swoo.net 12:17:15 You've got working code, so chances are good you'd get someone. 12:17:45 no 12:17:52 just wait the graphics will get better 12:18:09 there is an artist, he's just never done game art before ;) 12:18:21 Ahh. 12:18:30 and i don't want some pimply-faced geek from pixelation.swoo.net doing graphics for a gangster game ;) 12:18:40 where is CREATE/DOES> usually used? 12:19:22 heh, why not? There are some very good artists there. 12:19:36 slava, for defining words 12:20:13 madgarden, like i wrote a word FOO and I call FOO BAR and it creates a word BAR based on some characteristics? 12:20:19 or "BAR" FOO or whatever 12:20:33 Yep. 12:20:49 And when you call BAR, it executes some code declared in FOO. 12:20:52 in my language you can just construct a linked list and use the DEFINE primitive to add it to the dictionary. 12:21:10 the use WORD COMPILE to compile the last defined word 12:26:58 --- quit: proteusguy ("Leaving") 12:28:39 That's how you add high-level words to the dictionary? 12:28:50 the need hasn't come up yet 12:35:00 i have words that take code from the stack instead 12:36:54 --- join: wossname (wossname@HSE-Sherbrooke-ppp80022.qc.sympatico.ca) joined #forth 12:37:25 slava: So, every mission goes something like "shoot the potheads"? 12:39:40 lol 12:40:25 the missions are not done yet but it will be stuff like smuggling, taking out rival gangs, fighting cops, raising money to get buddies out on bail, and so on. 12:41:12 Hehe, okay. 12:41:26 So you're not a heroic DEA agent after all. 12:41:31 no way 12:42:22 * chandler would rather enjoy a shoot-the-potheads game 12:42:48 you can do that too 12:42:59 So would the government, but they can't always have everything their way. 12:43:01 except if you only obtain legal guns, you're limited to pistols and shotguns 12:44:20 --- join: bfulgham (~chatzilla@63.192.83.15) joined #forth 12:44:30 that's enough to shoot druggies 12:44:55 chandler, they'll fight back with machine guns :) 12:45:09 er, how much fighting can stoned people do? 12:45:11 they can't control the recoil because of drugs 12:46:19 and they get hungry halfway through a firefight 12:46:24 lol 12:52:11 madgarden, whats a typical use of create/does>? 12:52:20 madgarden, i understand what it does but i can't think of anything 12:53:41 i could implement a CONSTANT word like this: : constant unit define ; 12:53:54 "pi" 3.14 constant 12:53:59 would define a word 'pi' that pushes 3.14 12:54:19 but this is trivial -- what else is done with create/does> in forth? 12:55:21 OK, let's redefine CONSTANT using CREATE/DOES> 12:55:30 : constant create , does> @ ; 12:55:45 madgarden: But if you actually did that you would be a bit stupid. 12:55:53 I'm a bit stupid. 12:55:55 :) 12:55:59 :P 12:56:07 Well, you do hang in #forth... 12:56:53 So how does Robert redefine CONSTANT using CREATE/DOES> ? 12:57:23 I don't. 12:57:34 --- quit: Nutssh ("Client exiting") 12:57:38 Yea, but it makes a good example of CREATE/DOES> 12:57:40 "constant" is supposed to be a bit more optimized than that. 12:57:45 Yep. 12:57:57 For example, it should compile a literal in compilation mode. 12:58:32 Here's from my AVR Forth system: 12:58:33 label doconstant ( b1 -- [b1] ) 12:58:33 mode mode-compile = if \ In compilation mode? 12:58:33 $3e c, c, \ Compile lit. 12:58:33 then ; \ Otherwise, just leave b1. 12:59:11 And the "constant" word: 12:59:12 : kernel-constant ( b1 -- ) 12:59:12 (create) kernel-immediate \ Create the word. 12:59:12 $3e c, c, \ lit b1 12:59:12 $36 c, doconstant 4lit , ; \ jump doconstant 12:59:32 Ugly, I know. :) 12:59:44 Heh. 12:59:45 or : constant unit define word inline ; 13:00:18 Or : constant my quirky forth-version wordset ; 13:00:22 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 13:00:23 :) 13:00:24 --- quit: I440r ("Leaving") 13:00:25 ;) 13:00:26 --- mode: ChanServ set +o kc5tja 13:00:45 slava, anyway, does CREATE/DOES> make sense then with that CONSTANT example? 13:01:00 it makes sense, i'm just trying to figure out if i need something similar in my language. 13:01:26 It lets you define stuff like arrays that execute when called. 13:01:45 Or, specialized vocabulary words. 13:01:49 ANything, really. 13:02:08 Sort of a mini word-level OO. Right kc5tja? 13:02:39 Creates a one-method 'class', yes. 13:02:47 --- join: scope_ (~junk@njd.paradise.net.nz) joined #forth 13:03:08 Sorry, if I go AFK for a bit, it's because I'll be vomiting in the bathroom. I have a horrifyingly upset stomach right now. 13:03:18 * kc5tja suspects food poisoning. 13:03:50 I took 25mg of phenergan to mitigate the upset stomach. So in a bit I expect to be rather buzzed, if not outright high. 13:03:58 hehehe 13:04:19 *Somebody's* been out boozing again... ;) 13:07:13 I wish. 13:07:25 Booze would make me so drunk I wouldn't even care. 13:07:40 Man, it almost came out in math class. 13:07:43 I had to leave early. 13:07:52 I called in sick to work today already too. 13:07:55 Won't go in today. 13:08:34 Well, you better recover by tomorrow! 13:09:18 We'll see. 13:09:21 I have no idea. 13:09:39 The phenergan is starting to take some effect, I think. 13:09:44 I'm starting to get a bit light-headed. 13:09:47 Birthday boys need to be able to keep their cake and beer down! ;P 13:10:03 Finding it difficult to type -- little muscular lack of coordination setting in. :) 13:10:14 Yeah, no shit! WHAT THE #*(* kind of present is this? 13:10:19 Heh. See... NOW is the perfect time to design a new Forth system. 13:10:28 * kc5tja has to get coding for his client. 13:10:43 I'll do that later today, I think. 13:10:48 For now, I'm vegging out totally. 13:11:11 I'm putting the final touches on my resume. 13:11:23 madgarden, is it written in rpn? :) 13:11:27 Ooo..hands going numb now. Starting to, at least. 13:11:31 Heh, the resume? 13:11:38 Yea, THAT would get me hired... 13:11:47 madgarden, "mad garden" CONSTANT NAME 13:11:58 : skills CREATE forth implementations DOES> programming ; 13:12:13 all those are parsing words though not rpn :) 13:12:35 Actually, if you say: 13:12:41 kc5tja, hands going numb... was that peyote or phenergan you took? 13:12:43 : skills CREATE , forth implementations DOES> programming ; 13:12:50 you can legally write 1337 skills. :) 13:13:01 kc5tja, hehehe :) 13:13:01 Hehe. 13:13:03 phenergan. 13:13:14 ;) 13:13:15 It's an intestinal muscle relaxant and anti-nausea medication. 13:13:21 E.g., it's a narcotic. 13:13:26 (well, close to one at least) 13:13:50 So, stops it from coming out one end, redirects to other end. Nice! 13:13:54 Yes. 13:14:18 It causes whatever is in the tummy to NOT want to vomit, it just sits there until the bowels have caught up and ejected the detritus. 13:14:21 Did I tell you about the time I ate some really really hot thai soup while I had a cold and couldn't taste anything... 13:14:41 No. 13:14:44 --- quit: scope (Connection timed out) 13:14:53 kc5tja, that's the first time I've seen tummy and detritus used in the same sentence. 13:15:16 I may be getting high, but my powers of vocabulary are still sharp as a tack. 13:15:23 Yes, don't eat untested soup from an Asian market while tastebuds are on the fritz. 13:15:48 Heheh 13:15:57 I probably consumed 1/6 of the soup, but I've never had my bowels cleaned out faster. 13:16:03 It felt like death. 13:16:04 Thai food is like that. 13:16:08 (I imagine) 13:16:23 That's why there are no fat Thailanders. :) 13:16:43 I like Thai food! But this was like... concentrated Thai soup for die-hard maniacs or something. 13:17:22 Hehehe :) 13:17:38 kc5tja, hallucinating yet? 13:18:03 25mg isn't enough to hallucinate with. 13:18:10 Well, better pop a few more! 13:18:10 But I HAVE hallucinated on Phenergan before. 13:18:45 I was given an IV of phenergan when I last went to the hospital for stomach flu. 13:19:06 The shot they gave wasn't enough to stop the constant vomiting, so they gave me the IV instead. 13:19:15 I swear, the ceiling was crawling. 13:19:27 Not stuff ON the ceiling, but the ceiling itself was crawling. 13:19:35 madgarden, regarding recursive stack effect deduction, you mentioned there are ambiguous cases. well of course... but if the recursive case and the base case have the same effect, it is not ambiguous 13:19:46 * Robert reports kc5tja to the authorities. 13:20:03 madgarden, so a loop whose body consumes as much as it produces is not ambiguous 13:20:25 Yep. 13:20:33 an in my language, a loop is just a recursive word ;) 13:20:38 --- part: bfulgham left #forth 13:20:39 Such loops are called 'balanced loops,' btw. 13:20:41 horray for tail call optimization 13:20:52 kc5tja, do you know if any work has been done on stack effect checking? 13:20:56 Yea, need to add tail call to Forthy. 13:21:16 slava: Stack effect *checking*, yes. Stack effect *inferencing*, no. 13:21:24 kc5tja, what's the diff? 13:21:33 Checking is just a type check. 13:21:42 The effect is given explicitly by the programmer. 13:21:50 See StrongForth for more details. 13:22:22 oh yes i know strongforth 13:22:23 Stack effect inferencing, however, infers the stack effect from the body of the code; the need to specify a type signature explicitly is rarely done (e.g., only for primitives). 13:22:48 brb -- bathroom 13:22:51 i plan on doing inferencing, and checking the result agaist the comment given by the programmer; if they don't match, a warning is raised 13:26:28 * kc5tja nods 13:28:51 --- join: networm_ (~networm@L0635P26.dipool.highway.telekom.at) joined #forth 13:34:43 --- join: Nutssh (~Foo@dunwlessnat.rice.edu) joined #forth 13:39:57 --- quit: networm (Read error: 113 (No route to host)) 13:43:20 There, just applied online at RIM for a couple job openings. 13:44:31 Embedded Systems Software Developer 13:44:40 Radio Protocol Firmware Developer 13:45:11 RIM? 13:45:22 www.rim.com 13:45:26 Research In Motion 13:45:30 Ahh 13:45:33 Heard of the Blackberry? 13:45:39 No. 13:46:03 They're mainly into wireless technology. 13:46:18 Ahh 13:46:57 http://www.rim.net/products/index.shtml 13:50:04 Plain text resumes... newlines between bullet items? 13:53:06 --- quit: slava (kornbluth.freenode.net irc.freenode.net) 13:53:59 --- join: slava (~slava@CPE0080ad77a020-CM.cpe.net.cable.rogers.com) joined #forth 13:56:32 I prefer it, personally. 14:01:15 --- quit: Robert (kornbluth.freenode.net irc.freenode.net) 14:01:16 --- quit: madgarden (kornbluth.freenode.net irc.freenode.net) 14:01:33 --- join: Robert (~snofs@c-8f5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 14:01:33 --- join: madgarden (~madgarden@Kitchener-HSE-ppp3576218.sympatico.ca) joined #forth 14:01:49 --- quit: chandler (Remote closed the connection) 14:03:17 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 14:05:39 --- join: madgarden (~madgarden@Kitchener-HSE-ppp3576218.sympatico.ca) joined #forth 14:06:28 --- join: chandler (~chandler@64-145-60-36.client.dsl.net) joined #forth 14:09:18 * warp0b00 is back (gone 31:00:29) 14:19:21 The Phenergan failed. :/ 14:19:51 the what 14:20:11 kc5tja, trip's over? 14:20:20 --- quit: chandler (Remote closed the connection) 14:20:22 No. 14:20:28 But it didn't stop the inevitable, I guess. 14:20:33 Maybe reduced the intensity of it though. 14:20:48 oh my what are you talking about 14:21:05 * kc5tja is sure he weighs 5 pounds lighter though. 14:21:10 warp0b00: I'm very sick. 14:22:01 kc5tja: :( don't be sick 14:22:11 Easy for you to say. 14:22:19 in and out burger needs you! 14:22:26 Fuck INO. 14:22:33 hehehehe 14:22:43 i worked graves at a gas station once 14:22:50 i feel your pain there at least 14:23:23 err 14:23:30 it has been so long since I touched C 14:23:45 * means dereference when used as a prefix operator 14:24:11 thats all you need to know 14:24:15 + is for binary division when used as infix 14:24:26 &, on the other hand, performs trinary division 14:24:29 kc5tja, :( 14:24:56 kc5tja: get someone to make you chicken soup 14:26:20 it wouldn't stay down. 14:26:31 oh that sucks 14:27:55 kc5tja: im probably allergic to phenergan 14:28:19 if its in the class of drugs i think it probably is 14:28:31 --- join: chandler (~chandler@64-145-60-36.client.dsl.net) joined #forth 14:29:42 !calc (256 - 16) / 6 14:29:49 oops, wrong channel again 14:29:50 Has anyone tried making a Forth inside of 256 bytes? 14:29:57 yes :( 14:30:09 How'd that turn out? 14:30:10 smallest i got to was 384 bytes. you wouldn't call it forth, either 14:30:15 Hmm. 14:30:31 Probably need very specialized opcodes. 14:30:56 hm.. so even with only average of 6 bytes/entry and 16 bytes stack there'd be only room for 40 words.. 14:30:58 even bf wasn't that smal iirc 14:31:43 what is the b in bf? 14:31:45 That't not even counting word data. 14:31:46 --- nick: networm_ -> networm 14:31:48 Brain 14:32:03 ah, good. was afraid my name is already taken :) 14:32:12 *name for my forth 14:32:30 No, warp0b00 is talking about Brainfuck. :) 14:32:50 if by forth you're willing to accept `vaguely-forth like rpn interpreted language' you might be able to get into 256 14:33:28 networm, what is yours called? 14:33:40 B4 = block forth 14:33:52 what is it about a forth that lets you say X is a forth, while Y is not a forth? 14:33:59 is joy a forth? 14:34:02 is gforth? 14:34:10 is urmom? 14:34:19 sorry i couln't resist 14:34:40 urmom is not postfix 14:34:45 I'm not sure. I'm afraid to call mine a Forth. But, I tend to think there are just a few minimal requirements for something to be a Forth. 14:34:45 i was thinking it's ANS compatibility.. although i heared you people are not fond of that :) 14:34:57 madgarden, what makes yours not a forth? 14:35:14 networm, then colorforth is not forth :) 14:35:34 Well, it doesn't allow full access to the "hardware". I don't give direct access to the return stack, for instance. Lots of stuff is tucked away in primitives. 14:36:04 yes.. and every virtual machine Forth which puts a cell after CREATE :) 14:36:18 I must say Joy is an interesting Forth variant. 14:36:25 i spent like hours today figuring out a way to implement CREATE without that 14:36:25 i have direct access to the return stack, but pushing and popping return addresses has undefined behavior. it works in the interpreter, but not in compiled code 14:36:40 The simplicity of stack-based languages mixed with a dose of functional programming. 14:36:40 networm, but in the end, you're doing it anyway? 14:36:42 actually they're not return addresses 14:36:56 Robert, my language has some joy-like elements. 14:37:02 slava: Such as? 14:37:07 Robert, here is how i implement joy's dip: : dip swap >r call r> ; 14:37:14 Yea, I disallow return stack access for safety. Forth-in-C scripting system. 14:37:23 then 5 2 [ dup * ] dip gives 25 2 14:37:50 i have a bunch of joy-like words, like cleave, apply2, ifte, linrec, binrec 14:37:51 madgarden: oh are you serious 14:37:56 Interesting. 14:38:06 madgarden: link to forth-in-C scripting system plz 14:38:29 --- join: proteusguy (~proteusgu@216.27.161.121) joined #forth 14:38:42 warp0b00, http://sourceforge.net/projects/forthy/ 14:38:49 warp0b00, you'll hve to use CVS to get the code. 14:39:03 hi proteusguy 14:39:06 madgarden: no, i get around it now by making the whole forth executed on top of the VM.. so the codefield can actually point to the DOES> code 14:39:22 howdy 14:39:33 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 14:39:47 --- join: _proteus (~proteusgu@216.27.161.121) joined #forth 14:39:55 networm, so you've added some opcodes then? 14:40:13 networm, a VM forth? 14:40:35 yeah, quite a lot of opcodes for now, but most will be upgraded to forth words soon 14:40:42 the rain exploded in a mighty crash a we fell into the sun 14:40:49 networm, my language compiles to the java virtual machine :) 14:40:59 its incredibly tricky 14:41:00 slace: yes.. just for playing around mostly 14:41:05 sorry, slava 14:41:21 the compiler analyzes if a linked list of code ends up as the param to the CALL primitive; if so, the linked list is compiled in place 14:41:38 so control structures' generated code doesn't actually involve linked lists of code being passed around 14:41:43 so I should whoop joy's ass performance wise 14:41:49 brb 14:41:52 madgarden: actually, i didn't really change much. it's just ITC now instead of TTC 14:43:30 networm, so how does your CREATE impl look like? 14:44:27 well, it's rather simple now. 14:44:56 the problem before was, in something like: : CONSTANT CREATE , DOES @ ; 14:45:55 the DOES> compiled to (DOES).. which then defined another word, which had DODOES in its code field 14:46:20 er, (DOES) made the just CREATE word have DODOES in its code field 14:46:51 but since DODOES was just an id for my DODOES opcode, there was no way to find the code after DOES (@ in the example) 14:52:02 hm, anyway, i completely fail at explaining this in more detail now 14:52:48 so in the end, i could either always reserve one CELL for a word defined with CREATE, or have a way to determine where DODOES got called from 14:53:20 but the Forth 83 and ANS standards say that CREATE should not allocate any data space.. 14:53:35 * slava is glad that a GC makes all this stuff so much easier :) 14:53:47 horray for cons cells :) 14:53:58 hm, yeah, i want to look at GC's source 14:54:07 it claims to be ANS compatible :) 14:54:36 so if it uses a cell in the data area after CREATE, it's not.. at least does not conform to the description of CREATE as i read it 14:55:06 ah forget what i said 14:55:12 i read GForth for GC 14:56:03 haha 14:56:05 gc = garbage collector 14:56:23 gc in forth? 14:57:32 in my language since its hosted on the JVM :) 14:57:35 oh oh 14:57:52 i found a bug -- DEFINE's compile semantics don't actually work 14:58:30 what does DEFINE do? 14:58:41 "sq" [ dup * ] define 14:59:00 the parser supports the syntax sugar : sq dup * ; 14:59:08 ah, heh 14:59:16 you also have defining words? 14:59:54 yes but they're not used much 15:00:00 in fact i just added the first one now 15:00:07 [ sq * ] noname 15:00:21 pushes an uninternalized symbol (lisp-ism!) that evaluates to [ sq * ] 15:01:09 hm, uninternalized 15:01:17 define uninternalized symbol 15:02:03 well suppose you have a definition : cube dup dup * * ; 15:02:19 each word that appears in this: :, cube, dup, *, ; is added to the dictionary 15:02:48 a "word" in my language is a pair: a string and a definition (possibly missing) 15:02:54 an uninternalized word is also a pair but not in the dictionary 15:03:49 your language sounds kinda like mine 15:04:18 i'll give an example in a sec 15:04:29 mine is very lispy 15:06:21 my language is really prefix, but it ends up looking postfix 15:07:46 =($(1 2) add) 15:13:15 wtf? :) 15:13:33 = and $ are unary prefix operators 15:13:43 ()lists lol 15:13:55 add isn't -really- an operator at all 15:17:59 its a three character string 15:19:56 ok, so here is how 'eval' is now defined 15:20:02 (eval takes a string, executes it...) 15:20:04 : no-name [ gensym dup dup ] dip define ; 15:20:04 : compile-call no-name dup compile execute ; 15:20:04 : eval parse $compile-toplevel [ compile-call ] [ call ] ifte ; 15:20:24 if compile-toplevel is true, then the expression is compiled first, otherwise it is interpreted. 15:20:34 what does [ ] do 15:20:40 list literal 15:20:52 aha 15:20:55 [ compile-call ] is the list with 1 element, the internalized word 'compile-call' 15:23:33 in my language everything that isnt an unquoted keyboard symbol is a literal 15:26:56 * warp0b00 is away: Don't you know its dark outside? 15:37:36 --- quit: scope_ ("Leaving") 15:48:39 --- quit: wossname ("dluxe") 15:51:36 --- join: Sonarman (~matt@adsl-64-171-255-181.dsl.snfc21.pacbell.net) joined #forth 15:55:31 --- quit: networm ("Client exiting") 15:58:03 --- quit: Nutssh ("Client exiting") 17:05:10 --- join: blockhead (default@dialin-779-tnt.nyc.bestweb.net) joined #forth 17:08:00 success!!! 17:08:01 ok> : fib dup 0 <= [ drop 1 ] [ 1 - dup fib swap 1 - fib + ] ifte ; 17:08:01 ok> [ fib ] balance . 17:08:01 ( I -- O ) 17:08:22 except it doesn't work in many cases where it should 17:08:35 Hehe. 17:08:39 Neat. :) 17:08:54 here is a more complex one: 17:08:55 ok> "contains" see 17:08:55 : contains 17:08:55 dup [ 2dup car = [ 2drop t ] [ cdr contains ] ifte ] [ 2drop f ] ifte ; 17:08:55 ok> [ contains ] balance . 17:08:55 ( I I -- O ) 17:12:54 --- quit: Sonarman (kornbluth.freenode.net irc.freenode.net) 17:12:56 --- quit: Robert (kornbluth.freenode.net irc.freenode.net) 17:12:57 --- quit: kc5tja (kornbluth.freenode.net irc.freenode.net) 17:12:57 --- quit: ASau (kornbluth.freenode.net irc.freenode.net) 17:12:57 --- quit: chandler (kornbluth.freenode.net irc.freenode.net) 17:12:58 --- quit: Herkamire (kornbluth.freenode.net irc.freenode.net) 17:12:58 --- quit: skylan (kornbluth.freenode.net irc.freenode.net) 17:12:58 --- quit: warp0b00 (kornbluth.freenode.net irc.freenode.net) 17:12:58 --- quit: cmeme (kornbluth.freenode.net irc.freenode.net) 17:12:58 --- quit: arke (kornbluth.freenode.net irc.freenode.net) 17:12:58 --- quit: blockhead (kornbluth.freenode.net irc.freenode.net) 17:12:58 --- quit: _proteus (kornbluth.freenode.net irc.freenode.net) 17:12:58 --- quit: fridge (kornbluth.freenode.net irc.freenode.net) 17:12:59 --- quit: slava (kornbluth.freenode.net irc.freenode.net) 17:12:59 --- quit: ChanServ (kornbluth.freenode.net irc.freenode.net) 17:12:59 --- quit: ree (kornbluth.freenode.net irc.freenode.net) 17:12:59 --- quit: TreyB (kornbluth.freenode.net irc.freenode.net) 17:12:59 --- quit: OrngeTide (kornbluth.freenode.net irc.freenode.net) 17:12:59 --- quit: ianp (kornbluth.freenode.net irc.freenode.net) 17:13:00 --- quit: madgarden (kornbluth.freenode.net irc.freenode.net) 17:13:00 --- quit: qFox (kornbluth.freenode.net irc.freenode.net) 17:13:00 --- quit: mur (kornbluth.freenode.net irc.freenode.net) 17:20:06 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 17:20:06 --- join: slava (~slava@CPE0080ad77a020-CM.cpe.net.cable.rogers.com) joined #forth 17:20:06 --- join: Robert (~snofs@c-8f5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 17:20:06 --- join: Sonarman (~matt@adsl-64-171-255-181.dsl.snfc21.pacbell.net) joined #forth 17:20:06 --- join: mur (~mur@uiah.fi) joined #forth 17:20:06 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 17:20:06 --- join: madgarden (~madgarden@Kitchener-HSE-ppp3576218.sympatico.ca) joined #forth 17:20:06 --- join: skylan (sjh@nwc57-188.nwconx.net) joined #forth 17:20:06 --- join: warp0b00 (~warpzero@dsl.142.mt.onewest.net) joined #forth 17:20:06 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 17:20:06 --- join: arke (~Chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 17:20:06 --- join: ASau (~asau@158.250.48.196) joined #forth 17:20:06 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 17:20:06 --- join: fridge (~fridge@dsl-203-33-164-223.NSW.netspace.net.au) joined #forth 17:20:06 --- join: chandler (~chandler@chandler.registered.freenode) joined #forth 17:20:06 --- join: _proteus (~proteusgu@216.27.161.121) joined #forth 17:20:06 --- join: blockhead (default@dialin-779-tnt.nyc.bestweb.net) joined #forth 17:20:06 --- join: ianp (ian@inpuj.net) joined #forth 17:20:06 --- join: OrngeTide (orange@rm-f.net) joined #forth 17:20:06 --- join: TreyB (~trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 17:20:06 --- join: ree (~jwm@ns.fasthost.net) joined #forth 17:20:06 --- mode: irc.freenode.net set +o kc5tja 17:24:34 warp0b00, did you look at forthy? 17:38:50 --- nick: _proteus -> proteusguy 17:43:00 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 17:47:14 not forth, but interesting anyway: http://www.eetimes.com/printableArticle?doc_id=OEG20040220S0046 17:48:13 ok, now that compiler can compile (some) recursive words, I see a 200x performance improvement 17:48:27 eg, for the naive (binary recursive) fibonacci algorithm 17:54:57 Nice! 17:55:20 blockhead: thanks, that was an interesting read 17:55:38 * blockhead blinks. 200%?!! 17:55:41 How is it compiling? 17:55:52 Sonarman: np :) 17:56:52 blockhead, not 200%, 200 *times* faster than the interpreter 17:57:00 Nutssh, it compiles to java bytecode 17:57:13 Ah. Ok. 17:57:34 when this is finished i should be faster than gforth 17:57:38 wow 17:57:38 or same speed at least 18:11:23 JIT compiler really helps out eh? 18:11:36 yes 18:12:22 Is it DTC? 18:13:21 no, it generates actual native code 18:13:27 well depends on the VM 18:13:36 the open source ones are not too sophisticated 18:20:52 Like mine. ;) 18:24:48 --- join: ChanServ (ChanServ@services.) joined #forth 18:24:48 --- mode: irc.freenode.net set +o ChanServ 18:31:31 why is chanserv in this channel? 18:31:52 madgarden, well yours is probably a very simple design VM. the JVM needs a JIT to get good performance, it has too many odd aspects 18:32:34 Who is chanserv? 18:32:46 And yea, mine's a pretty simple ITC design. 18:32:52 why itc? 18:32:55 It runs about the same speed as Lua. 18:33:14 isn't dtc faster? 18:33:15 Well, I didn't know any Forth when I started it. 18:34:18 And, I'm not sure how I'd go about doing DTC in a C-Forth. 18:34:47 TTC, ITC, STC, sure. 18:36:19 --- quit: ChanServ (Shutting Down) 18:36:29 with gcc, you can use the address of a label syntax 18:36:33 then goto that label 18:36:42 see gforth 18:36:45 gforth does DTC in a C-Forth 18:36:54 ah he beat me 18:37:01 or just generate little bits of asm 18:37:08 --- quit: blockhead ("Client Exiting") 18:37:19 Well, I use MSVC. :P 18:37:29 ANd I can't use &&LABEL 18:37:34 hehe 18:37:38 actually i lied -- my language is DTC. 18:37:44 since everything is a function call 18:37:50 even arithmetic 18:37:53 Sounds like STC. 18:37:57 what is STC? 18:38:01 Subroutine Threaded 18:38:27 i guess -- so the output generated by the JVM is probably a whole lot of subroutine jumps; except some JVMs (eg, sun's) do a lot of inlining. 18:38:40 so lets say STC + some simple words inlined :) 18:38:49 --- join: blockhead (default@dialin-779-tnt.nyc.bestweb.net) joined #forth 18:39:08 The other thing is, my system doesn't have any language to it. 18:39:54 You register only which primitives you want to use, either parts of the API or your own functions that may call API and anything else. 18:40:27 You can end up making a scripting language that looks nothing like Forth. 18:40:44 JRE: The new universal backend. 18:40:59 Too bad the Java bytecode isn't more general. 18:41:30 There's Parrotcode, looks neat. 18:42:08 Nutssh, yeah, its not universal at all 18:42:26 Nutssh, my language supports continuations, and the JVM doesn't; so any code that uses any words that capture continuations has to be interpreted 18:42:40 the eventual goal is to have around 75% of all words compiled. 18:42:42 right now, its 50%. 18:42:50 continuations? 18:42:51 *nods* Semi-universal backend. Good luck. 18:43:21 who knows, i might write a parrot backend compiler in factor, then bootstrap it from the JVM :) 18:43:22 blockhead, basically functions/words that can be paused and continued later. 18:43:50 like multitasking? or interrupts? 18:43:59 maybe I shoudl just google it :/ 18:44:01 blockhead, a continuation can be thought of as taking the entire data stack and return stack, and creating an XT that when executed, restores the data stack and return stack. 18:44:21 with minor variations, such as the XT passing a value back to the restored data stack, etc. 18:45:13 www.foldoc.org is a good resource for looking up that kind of stuff. 18:45:41 * blockhead follows the link 18:45:50 i think factor will be the first lang with stack effect inference, for recursive words no less 18:46:10 madgarden, and to think, the only reason it exists is that very offensive and immoral game :) 18:46:23 although i plan on doing more with it 18:46:27 Heh, yep. Kinda funny. 18:46:52 slavea: the game you showed screenshots of yesterday! 18:46:56 My system was initially just going to be a simple RPN interpretive console interface. 18:46:57 yes 18:46:57 ? 18:47:27 blockhead, http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?continuation+passing+style 18:47:51 if you have programmic access to the call stack, you don't actually need to do CPS. 18:47:57 that is an interesting site! 18:48:01 and CPS in a language without tail call optimization is useless 18:48:54 slava, do you know what trampolining is? 18:53:05 chandler, no 18:54:09 slava: in trampolining, each CPS'ed function returns a thunk representing the continuation, instead of calling its continuation 18:54:19 a "trampoline" procedure calls those thunks in a loop 18:54:31 and the initial continuation supplied is a "dismount" procedure which throws out of the loop 18:54:49 so you don't accumulate anything on the stack 18:55:21 chandler, and how is the continuation restored? 18:55:27 once captured in this manner 18:55:34 er, it's a CPS continuation... 18:55:37 I don't understand what you're asking 18:55:44 n/m 18:55:47 imagine you have a typical CPS program 18:56:02 and you wrap every function that has been CPS'ed with a lambda nil 18:56:12 then your functions will always immediately return a lambda nil 18:56:36 except when they call your initial continuation, which throws out of the loop 18:57:49 i think i understand 18:57:59 i'll search on foldoc and citeceer 18:58:40 oh, foldoc is not what i thought it was :) 18:58:44 its like general knowledge :) 19:02:02 http://www.cs.indiana.edu/hyplan/sganz/publications/icfp99/paper.pdf 19:02:03 try that one 19:02:07 it's by a friend of mine 19:03:39 chandler, this is the one i just found on citeseer! :) 19:03:53 your friend seems pretty clever :) 19:05:43 well he's a student of Friedman's... it's a requirement :-) 19:06:04 * chandler is a student at IU, though not of Friedman 19:07:51 you're in CS? 19:11:43 yeah 19:11:52 http://cs.indiana.edu/~bmastenb/ 19:12:07 i'm in math, undergrad 19:12:57 oh. I did math and CS in my undergrad 19:13:01 why isn't stackling scriptable in an rpn language? :) 19:13:20 because I was playing around and at the time I didn't have any good RPN for OS X? :-) 19:13:38 Scheme is actually not a bad language for that :-) 19:14:32 --- join: ChanServ (ChanServ@services.) joined #forth 19:14:32 --- mode: irc.freenode.net set +o ChanServ 19:16:32 those global notices are annoying, cant they just stick to wallops for this :\ 19:17:19 gFox: agreed. :/ 19:21:53 --- quit: qFox ("if at first you dont succeed, quit again") 19:22:14 --- quit: Nutssh ("Client exiting") 19:29:17 madgarden: i looked at its sf page 19:54:08 warp0b00, yep, there's not much there yet. Haven't released files, but you can get it from CVS. I should do some more work on it soon, since it will be going into my games. 20:26:18 nn all 20:26:20 --- quit: blockhead ("Client Exiting") 20:41:27 kc5tja: hey 20:41:34 kc5tja: I think I got a solution for your problem. 20:41:44 kc5tja: I have two questions though. 20:41:59 kc5tja: (1) does the 6502 have inp/outp instrucitons? (i would think so...) 20:48:51 hi arke 20:49:03 arke, did you see my notes above about recursive stack effect deduction? 20:49:09 slava: no.. 20:49:17 arke, it works in most cases now 20:49:25 cool 20:53:31 arke, IIRC, 6502 has memory mapped IO. 20:53:44 ugh, that might be bad. 20:53:58 Why? 20:54:14 You can use memory access to perfom IO 20:54:15 arke, consider this word that appends two linked lists: 20:54:21 : append 20:54:21 over [ [ uncons ] dip append cons ] [ nip ] ifte ; 20:54:21 because simultaneous writes and reads to a certain spot in memory will cause one hell of a memory block 20:54:46 arke, [ append ] balance . 20:54:46 ( I I -- O ) 20:58:21 cool. 21:00:52 arke, also i added an inspector 21:01:01 inspect ( object -- ) 21:01:11 prints the object's type, and all instance variables & values 21:01:18 cool 21:01:24 typed forth ... what a contradiction lo 21:01:25 lol 21:01:29 can i paste 6 lines? 21:02:19 yep :) 21:02:20 ok> [ 1 2 ] inspect 21:02:20 OBJECT: [ 1 2 ] 21:02:20 CLASS : class factor.Cons 21:02:20 -------- 21:02:20 car: 1 21:02:20 cdr: [ 2 ] 21:02:51 :) 21:04:57 --- join: hovil (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 21:11:21 ok, if you have a word where all the factors have a constant stack effect, you can visualize this word as a directed graph, right? where each node is a word, and it has a specific in-degree and out-degree 21:15:01 yea 21:17:43 eventually i'll try hacking this up 21:21:04 :) 22:21:39 --- quit: Sonarman ("leaving") 22:25:47 http://store.yahoo.com/pckeyboards/adcolkey.html whoa 22:35:32 --- quit: slava (Read error: 110 (Connection timed out)) 23:20:47 --- quit: warp0b00 (Remote closed the connection) 23:25:31 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 23:33:58 hey what is forth for exchange top-two 23:46:39 --- quit: warpzero (Remote closed the connection) 23:47:49 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 23:49:33 * warpzero is away: Where do you think you're going? 23:59:59 --- log: ended forth/04.02.23