00:00:00 --- log: started forth/06.11.13 00:09:04 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 00:13:03 --- quit: snowrichard (Client Quit) 00:21:21 --- quit: madwork (Read error: 110 (Connection timed out)) 01:18:52 --- join: Cheery (n=Cheery@a81-197-54-146.elisa-laajakaista.fi) joined #forth 01:33:17 --- join: arke (i=Chris@x248.vpn.hrz.tu-darmstadt.de) joined #forth 01:33:17 --- mode: ChanServ set +o arke 02:41:07 --- quit: arke (Read error: 145 (Connection timed out)) 02:46:07 --- quit: virsys (Read error: 54 (Connection reset by peer)) 02:48:56 --- join: zpg (n=user@user-514d7663.l2.c2.dsl.pol.co.uk) joined #forth 03:08:30 --- join: arke (i=Chris@x161.vpn.hrz.tu-darmstadt.de) joined #forth 03:08:30 --- mode: ChanServ set +o arke 03:19:09 --- quit: arke (Read error: 145 (Connection timed out)) 04:18:23 --- join: arke (n=Chris@pD9E04D1A.dip.t-dialin.net) joined #forth 04:18:23 --- mode: ChanServ set +o arke 05:01:56 --- join: virsys (n=virsys@or-71-53-68-118.dhcp.embarqhsd.net) joined #forth 05:51:12 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #forth 06:04:47 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 06:05:51 Good morning. 06:26:39 --- nick: Raystm2 -> NANSTM 06:29:29 --- nick: NANSTM -> nanstm 06:33:52 --- quit: erider (Read error: 60 (Operation timed out)) 06:43:18 --- join: erider (n=erider@unaffiliated/erider) joined #forth 06:51:16 --- join: vatic (n=chatzill@pool-162-84-178-20.ny5030.east.verizon.net) joined #forth 06:52:30 vatic! :) 06:53:02 Ray_work: howse it going? forthing? 06:54:07 Ya. I spent my lunch money for this week on another Palm. I have to get a battery for the one you gave me. It died Friday night, but then it was old and I was using it constantly. :) 06:54:11 You got me hooked. 06:55:05 I found another on ebay and "won" the bid at $25.00 shipping included. Not bad, really. 06:55:49 Ray_work: sorry to hear that. I haven't used it for long periods recently, mostly sat in the cradle... 06:56:08 It's so fun coding forth on the palm that I'm glad you got me started! 06:56:18 Ray_work: it won't recharge? 06:56:41 Ray_work: yeah, forth on the Palm is pretty cool... ANYWHERE! 06:57:22 Doesn't seem to recharge anymore. Funny, cuz the battery never got down hardly at all. I always put it back on the dock when idle. 06:57:50 But I think that old lithium battery just stopped being useful. 06:58:26 I saw some batteries on ebay for it, learned how to take of the back, and I did take off the back yesterday after purchasing the "new" one. 06:58:32 Ray_work: That happened to my old Mac Pismo. Battery life kept getting shorter until it hit Zeero. 06:59:03 Ray_work: cool! I should do that for a minidisc recorder I have... 07:00:05 When the "new" one arrives and when I get another battery... I'll code a chess game in them cuz then i'll have two to use the IR to play the game! :) 07:00:36 Your's will still be put to good use, if just for parts! :) 07:10:19 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 07:15:11 Ray_work: I have an extra cradle and a couple of other things I should send. Did you get another Vx? 07:20:34 I did. It's comming with cradle and keyboard. 07:21:05 I sniped it last second. (first time I ever tried that tactic on E-bay) 07:22:01 I found that there are maybe 20 or 30 of them for sale currently. All the models are. But I wanted to get the Vx cuz thats the keyboard I bought for it last week. 07:22:29 Ray_work: ah, OK. I have a keyboard for an m130 I believe... 07:22:39 that I don't use. 07:37:19 Cool Cool. 07:37:58 Have you coded any forth on your Palms? 07:42:47 I've been wanting to ask Quartus if the QF works on the Palm phones, like treo or Blackberry. 07:46:34 Ray_work: yup. I love mine although the digitizer is a bit cranky... :-( 07:47:09 Ray_work: doesn't it work wherever OS5 is supported? 07:58:19 Palm yes; Blackberry no. 08:01:43 --- quit: Quartus_ ("used jmIrc") 08:04:21 --- join: Quartus_ (n=Quartus_@209.167.5.2) joined #forth 08:04:21 --- mode: ChanServ set +o Quartus_ 08:06:31 --- quit: arke (Read error: 104 (Connection reset by peer)) 08:06:38 --- join: arke (n=Chris@pD9E04D1A.dip.t-dialin.net) joined #forth 08:06:38 --- mode: ChanServ set +o arke 08:06:53 --- quit: snowrichard ("Leaving") 08:11:49 ray ive run the demo version of qf on my treo so yes it does 08:11:59 oh he answered hehe 08:12:20 Blackberry's not a Palm phone. 08:12:31 yup it sure isnt :) 08:17:31 Thanks for clarity. :) 08:31:50 --- quit: erider (Read error: 110 (Connection timed out)) 08:32:21 --- join: erider (n=erider@unaffiliated/erider) joined #forth 08:36:53 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 09:17:03 --- quit: zpg (Read error: 60 (Operation timed out)) 09:25:57 --- quit: vatic ("*poof*") 09:29:15 --- quit: erider (Read error: 110 (Connection timed out)) 09:30:04 --- join: erider (n=erider@unaffiliated/erider) joined #forth 09:35:07 --- join: rabbitwhite (n=Miranda@136.160.196.114) joined #forth 09:43:24 --- join: crest_ (n=crest@p54894692.dip.t-dialin.net) joined #forth 09:52:33 --- quit: Crest (Read error: 110 (Connection timed out)) 10:01:41 --- join: madwork (n=foo@204.138.110.15) joined #forth 10:36:41 Quartus, can you answer this from your experiance? If i'm coding for Palm, shouldn't I be coding on one that has color and sound so that the program works on all Palms? If so, what would you consider the earliest Palm I should use for such a task, as I'd like to purchase one on E-bay as inexpensive as possible? 10:38:51 One that runs the 5 series of OS, I suppose. 10:40:40 yes, os5 would be a good choice. You can always add color etc. on the simulator. 10:44:06 --- join: Snoopy42_ (i=snoopy_1@dslb-084-058-161-216.pools.arcor-ip.net) joined #forth 10:44:45 The simulator, of course! Thanks :) 10:52:10 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 10:52:10 --- join: forther (n=forther@h-66-166-144-210.snvacaid.covad.net) joined #forth 10:52:23 --- nick: Snoopy42_ -> Snoopy42 11:06:29 --- join: zpg (n=user@user-514d7663.l2.c2.dsl.pol.co.uk) joined #forth 11:07:56 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 11:08:26 --- join: jackokring (n=jackokri@static-195-248-105-144.adsl.hotchilli.net) joined #forth 11:28:05 --- quit: Quartus_ (Read error: 104 (Connection reset by peer)) 11:28:35 --- quit: segher (Nick collision from services.) 11:28:45 --- join: segher (n=segher@dslb-084-057-213-141.pools.arcor-ip.net) joined #forth 11:39:38 --- join: Quartus_ (n=Quartus_@209.167.5.1) joined #forth 11:39:39 --- mode: ChanServ set +o Quartus_ 11:42:43 Hey. 11:58:44 hi 12:01:01 what's up? 12:05:08 very little. the video passivity continued, and little else. a wasted weekend. 12:06:21 zpg /me concurs. Wasted weekend. 12:06:30 For shame! 12:06:43 'cept I got a great deal on an ol' Vx. 12:07:13 I got the back off the old one and now I think I just need a battery for it. 12:07:22 Should be one on E-bay. 12:08:19 Quartus, I did watch much of that StarWars marathon. If I hear another beeping robot, i'm gonna have a kaniption(sp?) 12:09:45 Oy, another Palm addict it seems. 12:11:13 connpition. Beep beep! 12:12:33 connipition 12:12:38 yikes 12:12:43 conniption 12:13:31 zpg, yes I'm addicted. Tho I wish now that I saved that money for a more modern Palm version, something running 5.4 maybe. 12:14:32 yeah, I got a good deal it seems. I found my model (m130) for 40GBP (that's before postage). Mine was 30GBP inclusive, about a year or two ago. 12:16:29 I think that's about 80-90U$ . not bad. 12:18:04 30 is at most $60 i think 12:18:27 it used to float around 1GBP:1.6USD, haven't looked recently. 12:18:44 i think 1:2 has been a good round way to calculate it recently. 12:19:07 I think that as well. 12:19:41 ok ==> 12:19:50 1.00 GBP United Kingdom Pounds = 1.90080 USD United States Dollars 12:19:58 according to www.xe.com 12:20:17 Thanks. :) 12:20:27 the war has done wonders for the strength of the dollar, it seems. 12:20:43 Was it much lower? 12:21:09 well as I say, we used to work with 1.6/1.7 a while back. nearer to 1.5 than 2, though. 12:21:21 I see. 12:21:56 i don't have an archive of Economists to hand, unfortunately, otherwise i could draw you a graph :) i'm sure there's a tonne of data online though. 12:22:00 the US dollar fell because of non-war related happenings. 12:22:02 but i better hang up the laundry. 12:22:11 'happenings'? 12:22:14 zpg: how's that string handling comming? 12:23:19 yes, foreign currencies altering their valuation relative to certain indices. 12:24:48 "It's all in the mind" -- G.Harrison. 12:25:48 he also lacked any need for wah wah. 12:27:16 "All you need is cash" -- E. Idle -- The Ruttles. 12:27:18 Ray_work: oh, it's functional. i have associative arrays with string comparison words defined. i'm just using the words now. 12:27:36 * Ray_work = jealous now, thanks. :) 12:27:44 Sounds great. 12:29:11 jealous of...? 12:30:31 I havn't had need of string handling. Now you have a personal library to handle strings... 12:31:00 a tiny an inefficient one, probably 12:31:04 yes, but his are all tea-based strings, the little ones on the bags. 12:31:22 i take issue with that, Quartus_ 12:31:40 my tea collection is clearly demarcated: strings, non-strings 12:31:44 i often opt for the latter. 12:31:52 so consider carefully before you throw about wild accusations! 12:32:11 lol. 12:33:20 (and for the record, no the war's not responsible for the weak dollar, but petulant politics is often a weakness of mine) 12:33:31 weak = war = bush = oil 12:33:37 isn't the world so nice and unitary 12:36:48 it really is. 12:37:01 heh 12:38:47 My only contribution to that is... So long as our leaders keep telling us that there are differences between us, that "They" are evil, we will always have these problems. 12:39:07 Some of "them" are pretty unpleasant. 12:39:25 yeah. 12:39:36 there are differences between us. 12:40:04 on a small scale, there's the teabag provocation. that can usually be settled with international consensus. 12:40:04 not many. 12:40:11 true. 12:40:14 NEVER!! 12:40:17 hehe. 12:40:24 * zpg fires a nuke at Canada 12:40:38 god bless general purpose computing. 12:40:38 Aw, you fired England's only nuke. 12:40:49 * Ray_work raises No.AmShielding. 12:40:56 i'd tell you to take cover, but we're pretty effete over here 12:41:07 haha 12:41:21 "I say, would you mind terribly if I exploded over your country? I'll keep it small and up in the northern latitudes, shouldn't be much of a bother really." 12:41:43 Quite, Quite! 12:41:58 No worries Neal old boy, go ahead. Actually, I'm rather busy at the moment, could we reschedule for Tuesday next? 12:42:05 Awfully sorry. 12:42:25 (I believe Rabbi Allen would call this self-deprecation) 12:42:38 My goodness, but that's terribly considerate of you, old bean. 12:43:01 Being American means never having to say you're sorry about not being polite. 12:43:17 I think you mean "never being aware that you're astonishingly rude". 12:43:18 I must make this up to you? Tell you what, come over this weekend, I'll take you to my country club, we'll play some Polo then have a few G&Ts in the bar. 12:43:31 It's fantastically chauvinist in there, you'll love it. Spiffingly nice chaps. 12:43:40 --- join: vatic (n=chatzill@pool-162-84-178-20.ny5030.east.verizon.net) joined #forth 12:43:58 "Spiffingly"lol 12:44:21 (it's always amusing to indulge in cultural stereotypes. i guess in cambridge, we get more of this antiquated etiquette than most places) 12:44:38 as i said before, more tweed per capita than anywhere else in the UK 12:44:54 Quartus, you ass, I never new I was rude why didn't you say something! 12:45:09 heh 12:45:30 hehe. 12:45:31 "on behalf of Canada, Bridges laughes in your face" 12:45:49 laughs, even. blasted copyeditors aren't what they used to be. 12:46:35 vatic: welcome to the realm of international diplomacy 12:46:47 no one ever pays us any mind, mind. 12:47:14 i best head downstairs for a bit, and chat to a Winnipegian 12:47:15 Ya vatic, Pick a side already! Rude or brood? 12:47:35 localised internationism you see. 12:49:21 Ray_work: better rude than dude! 12:49:46 hehe. 12:51:31 --- quit: rabbitwhite (Read error: 104 (Connection reset by peer)) 12:51:39 last chance to smoke before work begins again. I know I know I'm supposed to be quiting. /me down to 10 a day. It's a start. 12:54:59 What's "laughes"? Chaucer? :) 12:55:51 Quartus: how do you like to name structure fields in Forth? 12:56:10 I like it very much. 12:56:32 Damned good times. 12:56:48 Chaucer's a good read... 12:57:26 duration :max duration :min etc.? 12:57:46 chaucer :chapterone? 12:59:42 I would never start a word name with a : 13:00:05 Conventionally a defining word. 13:01:27 I rarely define structures, and commonly when I do they're for FFI, so I use whatever names they have in their respective .h files. 13:01:42 Make sense. 13:01:46 +s 13:02:15 Quartus: do you use "names" to access elements of arrays? 13:02:20 No. 13:02:24 offsets? 13:02:29 Not the elements, at any rate. What do you mean, exactly? 13:03:20 Quartus: just calling array offset 5 "max" for example... 13:03:39 I've never done that. 13:03:53 instead of (in C) array[5], array[max] 13:04:17 That's just a relatively insane alternative to a struct. 13:04:39 1 constant nameField 2 constant sirNameField struct sirNameField cells + @ ? 13:05:55 I use a struct{ 1 cells field: foo }struct bar syntax for structs. 13:07:02 Quartus: how then do you refer to the foo element of bar? bar field: foo ? 13:07:34 Bar is a struct definition, not an instance of a struct. Bar returns the size of the struct. So create my-bar bar allot and then my-bar foo returns the address of the foo element. 13:07:54 neat. 13:10:45 * Ray_work didn't know about struct{ , field: , and }struct . 13:12:16 They're fairly common. I think this covers it: : struct{ 0 ; : }struct constant ; : field: over constant + ; 13:12:44 Ray_work: look in the QForth library files under misc... :-) 13:12:58 I don't have a way... 13:13:05 till I get home. 13:13:22 I forgot no juego... :-( 13:13:23 The Quartus Forth version is a bit different from the one I use nowadays. 13:13:42 yeah, struct, end-struct at least... 13:13:42 In fact the field: I just posted isn't right. 13:13:54 Wait I do.. 13:14:05 Maybe..... : struct{ 0 ; : }struct constant ; : field: over create , does> @ + ; 13:14:21 there is a memo \ struck 99.1.11 NAB 13:14:22 I'm doing this off the top of my head and today isn't my best day. 13:14:31 not 'struck' 13:14:49 ya not struck sorry struct 13:16:33 The Quartus one defines a defining word. 13:16:45 I've come to prefer the simpler variety. 13:18:51 --- nick: crest_ -> Crest 13:19:13 is their a multithreaded or multitasked forth system for mac os x? 13:19:24 re ^^ 13:19:59 Carbon MacForth, I believe. 13:21:06 ... foss? 13:21:12 no 13:21:26 no, supported. ;) 13:21:46 :( 13:22:09 Nothing stops you from writing a free one, of course. 13:23:18 oh, but I see you're on "#piratenparte", which I'm guessing isn't a channel for people who dress up like pirates. 13:23:33 no it's not 13:24:40 it's the channel of the german pirateparty 13:25:49 https://www.piratenpartei.de 13:26:41 forget about the https 13:26:52 its used for web mail access :/ 13:27:16 Quartus: the QForth "struck" file defines : field over create , + does> @ + ; 13:27:16 --- quit: timlarson_ ("Leaving") 13:27:37 vatic, sure, so the field is similar. 13:28:28 Quartus: it's end-struct you've changed so it doesn't allot, just declares? 13:28:43 Right. }struct is just an alias for constant. 13:32:45 Quartus: so struct{ 1 cells field: foo }struct bar is 0 1 cells over create , foo constant bar ? 13:33:02 although with different execution behavior... 13:33:23 yeeeeah, sort of. 13:33:46 OK, I just fiddle... 13:33:54 I'll just fiddle... 13:34:59 well, 'create , foo' would create a word named , and then fail to find foo. 13:37:48 0 1 cells over create foo , constant bar is closer, but leaves out the action of foo. 13:39:08 Quartus: yes, I see this now that I look at the definition of create . The action of foo would be @ + ... 13:39:34 Right. A kind of auto-incrementing constant. 13:40:17 And you could say 1 chars field: zot or 1 floats field: real and use ALIGN or FALIGN as required to align the fields. 13:42:46 Quartus: is : struct{ 0 ; correct? Why the zero? 13:42:54 Or, if you like, define one struct as part of another: struct{ bar field: sub-bar }struct pow 13:43:13 As in 0 1 cells over create foo , constant bar -- the 0 at the beginning. 13:44:02 Quartus: I just executed the above and the zero was left on the stack... 13:44:45 There's a + missing. 13:44:49 As in 0 1 cells over create foo , + constant bar -- the 0 at the beginning. 13:46:04 Quartus: OK, so I was missing a + ? 13:46:55 That breaks down into struct{ ( 0 ) 1 cells field: foo ( over create foo , + does> @ + ) }struct bar ( constant bar ) 13:47:31 Yes, I left the + out of my ad-hoc definition above, sorry. 13:48:21 It's really a very simple process. You start with a zero, increment it by the width of each successive field, defining names along the way. And when I said you can use ALIGN and FALIGN -- make that ALIGNED and FALIGNED, and I guess I need coffee. :) 13:48:25 Quartus: hey, that's OK... Just being a pest ;-) 13:48:51 Quartus: I'm seeing how it works. Very elegant! 13:49:58 It's neat. Doesn't have anything like C's bitfields, but then they're awful anyway. 13:51:12 Quartus: it's very lightweight, perfect! :-) 13:51:33 I find it entirely adequate. 13:53:05 Quartus: so it goes struct{ 1 cells field: foo1 1cells field: foo2 }struct bar and so forth? 13:53:52 Right . Or struct{ 2 cells field: foo 20 chars field: bar faligned 1 floats field: zot }struct pow etc. 13:55:10 Quartus: very nice... Thanks!! 13:55:42 Another thing it doesn't do is let you interrogate a field name to get its size, but although that seems like it'd be handy, it's never come up. 13:55:50 Not for me, anyway. :) 14:01:26 And you can always 20 constant /bar ... /bar chars field: bar 14:01:44 or, better: 20 chars constant /bar /bar field: bar 14:02:18 You can do up an even simpler enum facility with the same technique as in struct{ }struct. 14:38:18 --- quit: neceve (Remote closed the connection) 15:06:37 --- quit: Ray_work (Read error: 104 (Connection reset by peer)) 15:18:15 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 15:36:26 --- join: crest_ (n=crest@p54895D98.dip.t-dialin.net) joined #forth 15:36:39 Quartus: here's a question I know you'll love :-) if a word is passed a variable which it changes, should that word store the new value of the variable, or place in on the stack for the calling word to store? 15:37:47 If you expect the word to be able to accept values from somewhere other than that variable, it shouldn't update that variable. 15:37:57 Otherwise, you're already in variable-coupled hell, so go nuts. 15:46:36 --- quit: Crest (Read error: 110 (Connection timed out)) 15:52:13 --- quit: I440r (Read error: 60 (Operation timed out)) 15:53:54 --- quit: timlarson (Read error: 110 (Connection timed out)) 16:15:55 --- nick: nanstm -> Raystm2 17:08:11 --- quit: zpg (Read error: 110 (Connection timed out)) 17:16:02 --- join: timlarson (n=timlarso@user-12l325b.cable.mindspring.com) joined #forth 17:42:10 --- part: forther left #forth 17:58:48 --- join: Zarutian (n=Zarutian@194-144-84-110.du.xdsl.is) joined #forth 18:13:04 Forth Recipe. 18:13:04 Start with a problem. A problem is necessary because the only thing to code besides a problem is a new forth system, and there is no new forth system. It's all the same system, in variations of ommission and unfortunate inclusion, meaning there was an answer already and you just re-created the wheel. 18:13:04 From the top down, break the problem into it's constituent parts. Use descriptive words to describe the parts individually. The words become the language of the problem domain. Using the actual words of the problem domain, code them in Forth. Problem solved. 18:13:47 --- join: tathi (n=Joshua@pdpc/supporter/bronze/tathi) joined #forth 18:13:47 --- mode: ChanServ set +o tathi 18:13:57 tathi :) 18:14:05 hey 18:14:28 Hey tathi 18:14:30 Did you get the folEndar yet? 18:14:35 I did 18:14:40 hi Quartus 18:15:10 Okay. is it still together? 18:15:11 :) 18:15:28 Sam hasn't got his yet and arke, I've not seen arke yet. 18:15:40 it's still together 18:16:01 :) 18:16:17 can you "unfold it indefinately"? 18:16:45 no, at some point it definitely stops unfolding :) 18:17:15 hi tathi! 18:17:20 Hehe, I get it. 18:17:32 hey vatic 18:17:56 good to see you around tathi! 18:21:27 --- quit: vatic ("*poof*") 18:56:33 --- join: JasonWoo1 (n=jason@71.192.26.248) joined #forth 19:13:16 --- quit: JasonWoof (Read error: 110 (Connection timed out)) 19:17:10 --- quit: jackokring (Read error: 104 (Connection reset by peer)) 19:20:26 --- join: jackokring (n=jackokri@static-195-248-105-144.adsl.hotchilli.net) joined #forth 19:24:00 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 19:40:33 --- quit: erider ("I don't sleep because sleep is the cousin of death!") 19:42:43 --- quit: tathi ("Leaving") 19:46:06 --- quit: Raystm2 (Read error: 104 (Connection reset by peer)) 19:51:29 --- join: Raystm2 (n=NanRay@adsl-68-95-251-145.dsl.rcsntx.swbell.net) joined #forth 19:54:43 --- join: forther (n=forther@c-67-180-209-27.hsd1.ca.comcast.net) joined #forth 19:55:10 --- quit: jackokring ("Bersirc 2.2: All the original sexiness of Bersirc, open to the world. [ http://www.bersirc.org/ - Open Source IRC ]") 19:57:09 --- quit: virl (Remote closed the connection) 20:12:33 --- join: madgarden (n=madgarde@bas2-kitchener06-1096620860.dsl.bell.ca) joined #forth 20:29:02 Hey. 20:34:24 --- quit: Raystm2 ("Should have paid the bill.") 20:57:24 --- nick: JasonWoo1 -> JasonWoof 20:57:30 --- mode: ChanServ set +o JasonWoof 21:00:31 Hey JasonWoof. 21:01:00 hi :) 21:01:25 What's the buzz? 21:01:27 I actually did a couple hours of programming in forth recently :) 21:01:53 Good deal. What was it? 21:01:59 date parsing 21:02:01 mostly 21:02:12 nasty stuff 21:02:43 I have a BNF routine I'm working on, it's already handy for stuff like that. 21:02:53 coon 21:03:02 cool 21:03:29 in bnf you can tell it how to parse something like YYYY-MM-DD and it'll give you 3 ints or a failure flag? 21:04:02 Yes, you can mix code in with the parse. 21:04:20 Really it's a translation from one representation to another, you can do as you like with it. 21:05:37 If I set up to parse YYYY-MM-DD, I'd have it turn it into a string of yyyy mm dd, or report failure, and then just evaluate that string. 21:06:19 That'd be bnf: '-' '-' ;bnf 21:07:27 Then, for instance, : test 0 parse bnf> ." Parsed: " type cr ." Unparsed: " type cr ; When unparsed is non-zero in length, the parse didn't completely succeed. 21:07:45 Of course you could branch out, allow optional space, different separators. 21:09:53 huh. hadn't thought of using evaluate 21:09:55 neat stuff 21:10:59 very interesting indeed 21:11:05 I haven't thought much about parsing 21:11:13 You could just as easily produce s" yyyy" >year s" mm" >month s" dd" >day if you wanted, then evaluate that (why you would I don't know, but you could). 21:11:48 I'm parsing a date from the URL 21:12:05 so it may be badly formed or otherwise invalid 21:12:15 Sure. What are the valid forms? 21:12:31 YYYY, YYYY-MM and YYYY-MM-DD 21:13:18 I need to know which form it was, and how many days after my epoch that date starts 21:14:24 what I have works, but it's ugly 21:14:46 if the date is invalid it doesn't return. It just spits out an http redirect and exits 21:14:47 Piece of cake. bnf: <2digit> ;bnf bnf: <2digit> <2digit> ;bnf bnf: <2digit> ;bnf bnf: <2digit> ;bnf bnf: '-' '-' | '-' | ;bnf 21:15:26 sweet 21:15:27 The epoch differential you'd have to calculate. Quartus Forth has source for the calendaring functions, dmy>date and date>dmy. 21:15:53 You'd want to instrument to indicate which format was returned, either that or just evaluate the string and see how many numbers come out. 21:15:56 yeah, I have day->dmy 21:16:22 Quartus: I currently just check the length of the string to see which one it is 21:16:30 Sure. 21:16:38 Quartus: that BNF stuff looks cool, but what does it return? 21:17:05 does it just check that it's valid? or actually parse it into something else? 21:17:14 A string. : test 0 parse bnf> ; test 1968-10-16 type -> 1968 10 16 type -> (no output) 21:17:30 Date validity checking is easy. dmy>date date>dmy, compare. 21:18:29 mmm 21:18:34 I actually have both of those now :) 21:18:43 before my coding yesterday I only had day->dmy 21:18:44 The bnf stuff determines that a string matches a specific pattern or patterns. You can instrument it to produce any particular output for any particular match. 21:19:08 ("day" in my lingo is the number of days after my epoch) 21:19:22 I validate dates that way all the time. Works very well. 21:19:45 It can't tell if 1996/5/6 is May or June, of course, but that's a separate issue. 21:19:49 so the reason it produces the string with the spaces is that automatically copies into the output, whereas '-' leaves a space? 21:20:06 '-' would be another bnf word designed to do the match and leave a space, yes. 21:20:21 gotcha 21:20:23 very cool 21:20:31 I didn't list all the trivial bits, but that'd be one. 21:21:02 I hadn't considered writing a parser that would go from one string format to another 21:21:09 I always figured on going straight to binary 21:21:24 That's all a lexical analyzer really ever does. 21:22:43 I'm liking this idea of doing it in two passes 21:22:46 first check that it's valid 21:22:49 then convert it 21:23:05 time for a shower and some food. bbl 21:25:16 cya 21:26:44 --- join: arke_ (n=Chris@pD9E0609C.dip.t-dialin.net) joined #forth 21:42:02 course, there's sometimes ways it can be invalid that you don't find out about until later 21:42:06 like if the month > 12 21:42:21 That's what the dmy>date date>dmy does. 21:42:34 --- join: AI_coder (n=AI@ip-209-124-242-76.dynamic.eatel.net) joined #forth 21:42:37 yeah 21:42:38 how goes it all? 21:42:44 excelently 21:43:00 sweet 21:44:35 JasonWoof, that's a clean way to validate that automatically handles leap years, etc. 21:44:50 yeah 21:45:05 assuming your date stuff is clean, which you need it to be anyway. 21:45:08 I have some code in there just for febuary 21:45:32 --- quit: arke (Read error: 110 (Connection timed out)) 21:46:02 That, and the leap year thing -- 2000 was, 1900 wasn't, stuff like that. 21:46:20 yeah, I didn't bother with that yet 21:46:30 my dates run from 2004 to the present 21:46:39 '04 was. 21:46:44 but I'll put that in when I factor it out into my library of code 21:47:38 There's some very simple code that lets you say "second sunday after 25 December 1996", or similar. 21:47:49 I just did: : feb-size 4 mod 0if 29 exit then 28 ; 21:47:58 yeah, that's missing two conditions. 21:48:01 but I can easily code in the 400 year thing and the century thing 21:48:18 : year-size feb-size 337 + ; 21:48:52 Sure. There's another way to approach that. The stuff in the Quartus Forth library is 16-bit, but it shows the outline. 21:49:30 --- part: forther left #forth 21:49:42 thing is I wasn't writing a general purpose date library 21:49:46 was writing it for that project 21:50:03 Sure, but why not write the real mccoy; you only need to do it once. :) 21:50:29 I like to just code what I need, and then after look to see what's useful for other things, and what could be easily made useful for other things 21:50:50 With something like date conversion, or a shuffle algorithm, etc. I like to use code I know is tested a lot. 21:50:55 Tricky bits. 21:50:57 I figure I'll write the real thing when I need it 21:51:30 when I try to solve the general problem I never finish anything 21:51:42 food. bbiab 21:51:45 k 22:21:57 ahh 22:22:06 all is bright and beautiful 22:22:09 :) 22:23:26 I worked through EWD28 today, distilled it down to Forth. He was almost on the mark, he failed to see some simple reductins. 22:24:08 hey dickweed 22:24:12 wtf is your problem? 22:24:17 --- mode: Quartus set +b *!*@ip-209-124-242-76.dynamic.eatel.net 22:24:21 --- kick: AI_coder was kicked by Quartus (Quartus) 22:24:25 He was. Problem solved. 22:32:10 hehe 22:32:19 what's EWD28? 22:32:33 Dijkstra's 0028 document 22:32:54 "Substitution Processes", 1962. Pretty much nails Forth. 22:33:52 He works it as a symbol-substitution problem, and doesn't come up with the idea of state, but there's a lot of Forthiness in there. 22:34:15 what's he trying to do? 22:34:28 http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD28.html 22:34:36 Just talking about this idea he had for an approach to programming. 22:42:26 cool 22:42:39 after reading the first page I assumed it was going to be pretty long 22:42:50 He gets right down to it. 22:42:56 that's cool 22:43:06 I don't have the patience to finish it 22:43:11 cool to see people working that out 22:43:20 He was 32 at the time. 22:43:51 Moore claims to not have seen this paper, but cross-pollination is still likely. 22:44:08 The computing community wasn't all that large back in the day. 22:44:44 Correction, Fox says Moore says he hadn't seen the paper. 22:47:24 --- join: forther (n=forther@c-67-180-209-27.hsd1.ca.comcast.net) joined #forth 22:48:05 Further down he outlines a two-stack machine, one for parameters, one for return addresses and locals. 22:48:16 Identifies the need for 'immediate' words. 22:48:23 And postponed words. 22:49:57 heh 22:49:58 cool 22:50:31 I think the concept is pretty discoverable 22:50:33 And outlines the equivalence of : x 3 ; and 3 constant x (in other terms, but still) 22:51:37 tathi says his thoughts about designing a language were starting to head that way before he got online and started reading about different languages 22:51:39 Yes, but hitting on the right combination -- two stacks used in a certain way, assigning sequences dynamically to names, etc. -- not that easy to discover. Looks obvious looking back, of course. 22:52:51 sure 22:53:06 but there's millions of us 22:53:15 I expect a few at least to come up with that 22:53:38 I don't know. The "Hey I Wrote My Own Computer Language" crowd produces some pretty awful crap. 22:54:04 Even with good examples to draw on. :) In isolation, I shudder to think what might emerge. 22:54:04 yep 22:54:10 heh 22:54:51 I'm watching Knuth give a lecture on really early computer languages and how all the different concepts were discovered; they were completely non-obvious, had to be slowly found. 22:55:03 Lots of very smart people all stomping around the general territory. 22:55:12 heh 22:55:13 cool 22:56:05 can I see? 22:56:48 I have it on a disc from a friend;perhaps it's on the web. It's in conjunction with one of his fairly recent books, 'selected papers on computer languages' I think. 22:57:15 ok 22:57:53 Think this is it: http://video.google.com/videoplay?docid=7840080989212237550 23:05:53 --- join: Cheery (n=Cheery@a81-197-54-146.elisa-laajakaista.fi) joined #forth 23:23:51 --- quit: madgarden (Read error: 110 (Connection timed out)) 23:33:24 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 23:37:42 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 23:37:42 --- mode: ChanServ set +o Quartus 23:55:15 --- quit: arke_ (Read error: 110 (Connection timed out)) 23:59:59 --- log: ended forth/06.11.13