00:00:00 --- log: started forth/06.12.12 00:11:55 --- join: ecraven (n=nex@eutyche.swe.uni-linz.ac.at) joined #forth 00:28:06 --- quit: JasonWoof ("off to bed") 01:24:13 --- join: Cheery (n=Cheery@a81-197-54-146.elisa-laajakaista.fi) joined #forth 01:59:37 --- join: Amanita_Virosa (n=jenni@adsl-70-248-239-251.dsl.hstntx.sbcglobal.net) joined #forth 03:39:11 --- join: Mitja (n=mitja@unaffiliated/mitja) joined #forth 03:51:00 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 04:06:20 --- quit: Amanita_Virosa ("Wewps!") 04:13:32 --- quit: nighty (Read error: 113 (No route to host)) 04:17:09 --- join: nighty (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 04:41:33 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 04:42:51 --- join: madgarden (n=madgarde@bas2-kitchener06-1096751791.dsl.bell.ca) joined #forth 05:02:30 : [[ :noname ; : ]] postpone ; immediate : ifthen ( tf xt xt ) rot if drop else then execute ; 05:06:23 --- quit: madgarden (Read error: 131 (Connection reset by peer)) 05:11:44 --- join: madgarden (n=madgarde@bas2-kitchener06-1096751791.dsl.bell.ca) joined #forth 05:15:07 --- quit: neceve (Remote closed the connection) 05:28:40 --- nick: Raystm2 -> nanstm 06:16:12 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 06:19:21 Good Morning. 06:21:17 that might work with a COPY that creates a new identical XT, allocated XTs, and auto-self-destruction. 06:21:39 hello, Ray. 06:22:08 What's the topic today? 06:22:31 a topic doesn't exist, yet. 06:22:38 Cool. 06:22:49 * Ray_work doesn't have one either. 06:25:28 thinking I might have to join the ranks of people-who-have-implemented-a-forth, but we'll see. 06:25:49 :0 06:25:50 :) 06:26:42 * Ray_work noticed last night in my web travels this ---> http://colorforth.sourceforge.net/ 06:32:00 --- join: absentia (n=scott@ns6.lobodirect.com) joined #forth 06:32:05 hi everyone. 06:32:15 hi absentia. 06:32:24 are you speaking for your self in absentia? 06:32:32 * absentia nods. 06:32:33 for now. 06:32:45 Excellent. Well done. :) 06:33:04 I'm looking for source code for implementeations of forth (written in c++?) ... 06:33:34 --- join: Raystm2 (n=NanRay@adsl-69-149-37-190.dsl.rcsntx.swbell.net) joined #forth 06:33:36 I'm interested in comparisons between forth and lisp -- or lisp implemented on a stack machine. 06:33:51 in the topic there is a search that is taylored to Forth results. 06:34:06 also there is... /me gets link... 06:34:07 nI was wondering if any human had already cached the results of such a search :-) 06:34:15 k/whois gets/topic 06:36:31 http://forthlinks.com/ <--- a directory specific to forth, should help. 06:36:38 thanks 06:37:59 My great presure to serve. 06:39:06 :) 06:39:15 I've only used forth briefly in sun openboot -- but I'v run across references to it for some 20 years... I'm not interested in lisp -- and I'm seeing references to forth -- I'm trying to figure out which is easier to implement. 06:39:32 hmmm. 06:40:05 I've never implemented either, I can't weight the results for you. :( 06:42:10 I know that lisp can be implemented in forth, that i've seen. 06:42:17 Don't know about the inverse. 06:42:50 any turing complete can do any other turing complete.. the issue is how much effort 06:43:11 lisp and lisp-like lancuages (scheme, etc) ... are perfect for implementing (other) languages. 06:43:58 Yes. Sorry, I meant that I had not seen it the other way. 06:43:58 so I'm trying to decide whether to implement a stack machne and forth or a register machine and lisp -- and now I'm seeing references to stack machines being closely related to lisp ... so I'm seeing what that means. 06:44:13 ya. 06:45:06 seems to me (just because I'm not use to forth) -- and implementing a lisp machine (simulated hardware, whatever) .. would be the easiest -- and then the best position to implement other languages. 06:45:35 We have reached consensus. :) 06:47:10 have you seen this -- http://lib.store.yahoo.net/lib/paulgraham/jmc.lisp 06:47:47 --- quit: nanstm (Read error: 110 (Connection timed out)) 06:48:12 entire language -- with defs... based on only *7* opcodes(commands) 06:48:45 I'm not even a little interested in that. 06:48:47 No I had not, Thank you for that! :) 06:48:50 --- nick: Raystm2 -> nanstm 06:49:45 you do the lisp-forth, I'll do the inverse. Challenge? 06:49:58 you're not? you're on lisp, perl, erlan and c (and forth) .. .seems you're interested in languages :-> 06:50:12 does lisp-forth mean 'lisp on forth', or the other way around? 06:50:35 lisp-forth is a forth based in lisp, in my understanding of the phrase. 06:50:56 absentia - I'm not interested in exercises at a mininal number of opcodes 06:51:01 I'm looking to implement a low level machine -- wiether it's a stack machine simulator and then also forth, or a stack machine and then lisp (which means and then forth) ... or, a low level register machine and lisp (which means forth). 06:51:17 ayrnieu: oh. ok. 06:51:46 I do not (really) know lisp (yet) ... I am learning scheme, though. have you seen SICP ? 06:51:56 I have. 06:52:16 yes, I very much liked that SICP. 06:52:29 I did the Dr.Scheme years ago. 06:52:31 ya, I'm on chap 6. 06:52:35 loads of fun. 06:52:47 ok, so you guys have already been where I'm going :-) 06:53:25 Some, sure. It's a journey with many stops, and many directions that tend to hit many of the same points in weird paths. 06:53:35 what is your reason for using / sticking with forth? 06:54:09 I'm really a colorForth enthusiast. Forth is obviously a requirment. 06:54:43 Once I found Forth, I've not gone back to another language, but then i'm not a pro, i'm a hobbiest. 06:55:03 Frankly, I think it's the best language to think in. 06:55:09 ok 06:55:13 I've heard the same 'bout lisp 06:55:16 I could be wrong I've been wrong before. 06:55:39 lisp with out those crazy parens, some might compare. 06:55:42 I like Forth and Erlang and Perl, mainly. 06:55:59 erlang shows promise to gain my attention. 06:56:52 ayrnieu: I'm surprised you are using perl vs python.... considering the others in your gourp. 06:57:12 nice, corewars in forth. 06:57:12 but I enjoy different things, and focus on different things at different times. IAC, if you haven't learned Forth, try starting with it. 06:58:40 Perl does do somethings better then Python. But the every language has it's reason for being. 06:58:47 the+n 06:58:48 I saved all the urls inthe topic here and will start... right after finishing sicp. 06:58:55 :) 06:59:01 well, people say that python is lisp without parenthesis 06:59:27 the wikipedia description it good, but 'Starting Forth' is better if you don't already have a familiarity. 06:59:28 absentia - those people stupidly repeat a blatant falsehood because it makes them feel warm inside. 06:59:39 heheh 06:59:42 hehe 06:59:50 ya, I am reading starting forth now... just to get a quick feel. 07:00:30 You should also enjoy Thinking Forth. I started with gforth's crash course, and recommend that to jump in. 07:00:37 ducking out for a minute, I owe two reports to accounting... 07:00:52 my real goal is to work on AI -- so I want to implement a machine at a hardware level -- simulated, of course... and then the first thing I want to do is a have a language for that hardware. I just came across the discussion that stack machine architecture is simple, small -- so I thought it might be a place to start. 07:01:00 ok 07:02:05 There ought to be a 'trainingWheels' Forth. gforth is just too huge for a beginner in my opinion. Gives one the impression that they could never possibley use that many functional words. 07:02:36 well, CL seems like is has some 900 symbols 07:02:46 s/is/it/ 07:03:00 --- join: Zarutian (n=Zarutian@194-144-84-110.du.xdsl.is) joined #forth 07:03:35 I don't see such a need for a minimal Forth, but OK: you can turn any Forth into a 'training wheels Forth' by creating a vocabulary, inserting those words you want, and then making that the only vocabulary in the search order. 07:03:39 true. 07:05:17 in fact, why don't try write an ANS Forth that does this? I wonder what you'd leave in. 07:05:31 an ANS Forth program, rather. 07:07:01 Glenn B Haydon has done that already with the Levels of Forth and his MVP forth, I believe. 07:09:25 I don't know about MVP Forth, but I don't see Levels of Forth as having anything to do with learning the language. It's been a while, but it seemed like a part-historical, part-'exercise in minimal opcodes', part-nonsense effort. 07:10:04 Opinion noted. 07:10:27 but OK, you could have a simple program with a LEVEL command that switched vocabularies around. 07:11:40 It's funny, when I hear forthers speak about no interest in minimalism, when 99% of all forth running machines are embeded systems. 07:12:28 I've no interest in minimalism for minimalism's sake. Writing a forth for a machine is something different. 07:15:04 or rather, I despise brainfuck. Everything else, such as my unconcern for the 7-opcode language, descends from this distaste. Now, if people could get interested in wanking analogous to befunge... :-) 07:16:25 Well said. :) 07:18:15 well, my goal is AI -- for this, I am looking at low level language implementations... 07:18:36 the issue is not minimal opcodes (RISC?) -- but minimal architecture. 07:18:46 a stack machine appears pretty minimal. 07:19:39 absentia - www.ultratechnology.com talks about interesting more-minimal-than-RISC machines 07:19:43 absolutely. 07:20:07 --- quit: nanstm ("Should have paid the bill.") 07:20:14 * absentia scurries. 07:20:16 absentia - what sort of AI do you mean? 07:21:10 --- join: Raystm2 (n=NanRay@adsl-69-149-37-190.dsl.rcsntx.swbell.net) joined #forth 07:21:31 this may sound crazy,but that's ok. 07:21:51 I wonder what's going on at my house, the computer keeps going on and off line. :( 07:22:04 --- quit: Raystm2 (Remote closed the connection) 07:22:35 there it goes again. :( 07:23:04 I'm interested in implementing a system that basically programs itself... if you will. so, the idea in forth of defining new words is an exact hit. then the RPN, is also exact... simple parsing... etc. the reason I was looking into lisp is that the implementation of it is fairly simple with 16bit cons cells as a single structure... but, I could switch to any "stack" ... 07:23:58 I've been thinking of what I want to do for a long time -- and I've come up with a structure somewhere in between a stack machine and a register machine -- implementing something in between lisp and forth -- so I'm just investigating each to see if there is already some implementaiton of a simulator in this area. 07:24:03 that sounds like a bit of work; you should hurry quickly through this bootstrapping part of it. 07:24:50 I've found lisp implemented in awk -- which I could write in c++ (for speed) ... I have found lisp in c (1985??) ... which I could probably figure out and convert to c++ -- ... but the lisp is lisp from p. graham is a decent, but somewhat higher, level of definition. 07:25:13 so, I want to implement a "machine" -- and then modify it with the ideas I have that I feel will allow me to research the AI that I have been designing for so long. 07:25:44 If you want to implement a lisp, read 'Lisp in Small Pieces' 07:25:49 so far, implementing lisp in c++ is my best plan... but I've been seeing references to forth as a minimal and simple language to implement -- and can run on minimal and simple architecture. 07:26:05 ya, that's p. graham. 07:28:04 let me throw something at you for a sec -- what would you think of a machine with many stacks -- and many (trying to use forth defs -- dictionaries? and environments -- where env and dict aren't tied) ... 07:28:34 where there are "threads" running (basically multiple pc values....) 07:28:36 I've no idea what you mean by 'environments', sorry. 07:29:03 or 'pc value' 07:29:27 ok, if you have $x ... $x is bound to some scope ... just meaning that there are multiple "scopes" that could be bound to x 07:29:38 pc = program counter ... basically, where to get the next instruction. 07:29:57 but multitasking Forth systems generally give each task its own stacks. Also, many stacks and many wordlists are fine and easy. 07:30:46 I'm interested in getting something that can be reduced down and put on, say, a flash gate architure... yet, I want the system to be able to modify itself.... so, even with the stack machine, the hardware can't modify itself (the hardware) ... 07:30:55 --- join: Raystm2 (n=NanRay@adsl-69-149-37-190.dsl.rcsntx.swbell.net) joined #forth 07:31:07 ayr: yes.... that's what I mean -- but let them also have the ability to "cross stacks" 07:31:24 mostly by dropping a "word" into another thread's environment. 07:31:35 --- quit: Raystm2 (Remote closed the connection) 07:32:31 absentia - I still don't know what you mean by environment, but you can easily add communication between tasks to traditional Forth multitasking. 07:33:51 --- join: Raystm2 (n=NanRay@adsl-69-149-37-190.dsl.rcsntx.swbell.net) joined #forth 07:33:53 --- join: Raystm2- (n=NanRay@adsl-69-149-37-190.dsl.rcsntx.swbell.net) joined #forth 07:34:25 ayrnieu: well, what's ironic here is that if you knew what I meant, your environment would be at least somewhat related to mine. the issue we're having is that I am trying to pass some of my environment to you. when you conclude that you understand, you're really saying that your environment appears to not have issues -- when comparing with inputs as received from me. 07:34:46 this is especially interesting over this medium -- as we can only use words (no pictures [here] -- no pointing, hand waving) 07:36:17 so, comparing my AI idea to forth, by existing and receiving input (streams) ... a system is defining new "words" ... but these words really are very closely related to their environment (ie: context) 07:38:39 --- join: crest_ (n=crest@p54896252.dip.t-dialin.net) joined #forth 07:40:41 Any clues why compilation of bigForth hangs here: http://rafb.net/paste/results/RLPvgD25.html ? I'm on Debian Etch 07:42:16 --- quit: ecraven ("bbl") 07:45:28 --- quit: Raystm2 ("Should have paid the bill.") 07:47:07 --- quit: Crest (Read error: 110 (Connection timed out)) 07:51:59 --- join: JasonWoof (n=jason@c-71-192-26-248.hsd1.ma.comcast.net) joined #forth 07:51:59 --- mode: ChanServ set +o JasonWoof 07:55:42 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 07:55:42 --- mode: ChanServ set +o tathi 08:12:13 --- join: virl (n=virl@62.178.85.149) joined #forth 08:12:50 --- join: Shine (n=Frank_Bu@xdsl-84-44-234-143.netcologne.de) joined #forth 08:50:39 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 08:53:46 Sorry Mitja: i've never done the bigForth yet. Please be patient and ask the question again when more Forthers are around, okay? :) 09:26:15 --- join: jackokring (n=jackokri@static-195-248-105-144.adsl.hotchilli.net) joined #forth 09:45:37 --- join: zpg (n=user@user-54446524.lns4-c10.dsl.pol.co.uk) joined #forth 09:45:54 Shalom. 09:48:02 --- quit: jackokring (Read error: 54 (Connection reset by peer)) 09:50:26 --- join: jackokring (n=jackokri@static-195-248-105-144.adsl.hotchilli.net) joined #forth 09:55:49 bueno 09:56:07 Hi Jason, how're you doing? 09:57:30 quite well 09:58:04 good stuff. 09:59:30 bienvenue 10:00:44 Prashom 10:01:17 not terribly grounded atm 10:01:24 don't really feel like focusing on anything 10:02:03 Selamat Datang 10:02:14 MABUHEY 10:02:50 Croeso 10:02:55 I feel like I could have a good day just flitting about 10:02:59 and not going much of anything 10:03:10 Bonvenon. 10:03:23 wish I could remember how many hours firefox takes to compile 10:03:33 Welcome, good friends. 10:03:51 Jambo 10:05:46 --- quit: segher (Nick collision from services.) 10:06:16 --- join: segher (n=segher@dslb-084-057-213-111.pools.arcor-ip.net) joined #forth 10:09:37 --- quit: neceve (Remote closed the connection) 10:17:43 does Ray have some sort of textual tourettes today? 10:17:45 ;) 10:21:03 Which free Forth would be good for a beginner under linux? 10:21:11 gforth 10:22:10 see http://www.jwdt.com/~paysan/gforth.html 10:23:27 cheers 10:26:39 np 10:45:39 Is Forth fully-fledged? Meaning does it have, for instance, database drivers and gui libraries to produce complete desktop application? 10:47:11 I don't think any of the free Forth systems are. 10:47:30 gforth has an FFI interface, so you can call out to the system libraries 10:50:25 yeah, gforth's ffi is pretty easy to use 10:50:46 I've done mysql through it 10:51:29 you just have to type in the library name and function prototypes for the functions you want to use 10:53:20 zpg: I've noticed that you use several greetings. My "textual tourettes" are all greetings for your collection. I have more, beware. :) 10:57:13 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-151-129.pools.arcor-ip.net) joined #forth 11:05:28 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 11:05:31 --- nick: snoopy_1711 -> Snoopy42 11:05:36 --- join: earth| (n=sqrt@82-35-248-212.cable.ubr06.dals.blueyonder.co.uk) joined #forth 11:09:21 --- quit: I440r ("Reality Strikes Again") 12:02:01 --- part: Mitja left #forth 12:27:30 --- quit: Shine (Nick collision from services.) 12:27:34 --- join: Shine_ (n=Frank_Bu@xdsl-84-44-233-113.netcologne.de) joined #forth 12:27:46 --- nick: Shine_ -> Shine 13:52:52 --- join: zpg` (n=user@user-514fca8b.l3.c4.dsl.pol.co.uk) joined #forth 13:56:37 Hey. 13:56:47 hey. 13:56:54 i write > 100kb of docs in the last two days. BLOAT!!! 13:57:35 BLOTTITES! 14:10:11 --- quit: zpg (Read error: 110 (Connection timed out)) 14:10:47 --- join: sardella (n=user@200-181-92-147.bsace705.dsl.brasiltelecom.net.br) joined #forth 14:14:49 Quartus: newforth doesn't need documentation, right? 14:16:11 only if you write BLOATWARE. Which is unpossible in NewForth. 14:16:23 NewForth? 14:16:28 oh, is that werty? 14:16:38 oh yes. 14:16:47 the wertiest. 14:18:19 just finished some renovations. Tiring! What's up out in the world? 14:19:27 i'm about 1/3rd of the way through documenting my ui gadgets 14:20:38 --- part: sardella left #forth 14:25:31 will your great work ever be finished? :) do you have a final goal in mind for factor? 14:26:29 well, documentation is one thing that needs to be complete before a 1.0 release 14:27:32 --- quit: Ray_work ("User pushed the X - because it's Xtra, baby") 14:29:43 lol unpossible. :D:D 14:30:37 quite possible. the docs already total over 600kb of text, and the only major areas which are undocumented are the ui and compiler internals. 14:31:02 I think he was laughing at my use of the word 'unpossible' 14:31:11 ah 14:33:16 Do you plan to go on to factor 2.0? 14:35:16 assuming i'm still interested, my plan for 2.0 is to support native threading and SMP. 14:35:16 --- quit: jackokring (Read error: 60 (Operation timed out)) 14:35:16 and redesign stuff i can see is broken in highsight/make it faster/make it smaller/etc 14:35:17 hindsight* 14:36:34 right. And through feedback, I suppose. 14:36:34 yup 14:36:34 but 1.0 is still at least a year off. 14:36:34 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 14:36:34 the core needs an editor, better performance and more documentation, and the libraries need improved web frameworks and database connectivity 14:37:05 there's no real distinction between the core and libraries, except code in the core is loaded by default in the image. 14:54:45 --- log: started forth/06.12.12 14:54:45 --- join: clog (n=nef@bespin.org) joined #forth 14:54:45 --- topic: 'Welcome to #forth. We discuss the Forth programming language and a variety of technical subjects. Introduction: http://tinyurl.com/kvawv | Starting Forth: http://tinyurl.com/rm7pq | Thinking Forth: http://tinyurl.com/nsy4j | Gforth compiler: http://tinyurl.com/s8uho | ANS/ISO Forth Standard doc: http://tinyurl.com/nx7dx | http://quartus.net/search | Paste: http://forth.pastebin.ca' 14:54:45 --- topic: set by Quartus on [Sat Nov 25 22:45:21 2006] 14:54:45 --- names: list (clog Razor-X` TreyB Raystm2 snowrichard zpg` Shine Snoopy42 segher virl @tathi @JasonWoof crest_ Zarutian absentia madgarden nighty Cheery @slava timlarson crc warpzero madwork @Quartus_ ayrnieu @Quartus ccfg cmeme) 14:55:05 slava: can your parser parse any xml document? or just a subset? 14:55:12 do you parse the CDATA thing? 14:55:15 yes 14:55:20 comments? 14:55:24 all of xml 14:55:25 including namespaces 14:55:45 and documents containing unicode text 14:56:02 and you thank that's not complex? 14:56:07 have you ever used something else? 14:56:19 the factor parser is much simpler, so is json 14:56:30 but i don't think xml is complex enough to warrant complaining about it 14:56:44 I do 14:57:02 you just can't write an xml parser easily in forth because of a lack of good string/array/tree management facilities 14:57:20 so there's more work upfront 14:57:23 I don't think you should need that crap 14:57:26 oh, I don't know. I don't have the time to undertake this challenge, but I think it might not be all that hard. 14:57:41 JasonWoof: you shouldn't need strings and arrays and trees? 14:57:44 --- join: sardella (n=user@200-181-92-147.bsace705.dsl.brasiltelecom.net.br) joined #forth 14:57:56 slava: why would you. they should be in the file already? 14:58:10 when the xml (or json or whatever) has been parsed, you now have a tree in memory 14:58:15 I don't get the point of taking a simple tree and turning it into this complex markup language that requires a huge parser 14:58:16 the leaves of the tree are strings 14:58:29 the data should be layed out in a convenient format that doesn't hardly require parsing at all 14:58:44 json is easier to parse than xml 14:59:14 parsing a tree file should be a matter of converting offsets to pointers and doing endian swapping 14:59:31 sure, if you don't want a plain text format 14:59:36 which can be edited in a text editor 14:59:38 shouldn't have to deal with all this crap like having 4 different encodings and 8 different terminators 14:59:59 i don't like having lots of character encodings either, but you need to at least support ascii and unicode 15:00:03 editing xml with a text editor causes endless havoc 15:00:16 i write my html in a text editor, what else would you use? 15:00:18 dreamweaver? 15:00:20 not character encodings 15:00:30 ah, dream weaver, I believe you can get me thorugh the night 15:00:33 how would you represent text without encoding characters in some form? 15:00:40 I mean like having to escape some charachters because they are "special" 15:00:51 < > and & ? 15:00:56 like 15:01:08 well the way around that is to have a binary format where every piece of text is prefixed by length 15:01:11 so any character can appear there 15:01:21 the characters you have to encode are different in different parts of the document. that's retarted. 15:01:49 in xml? no, you can get away with escaping < > & ' and " everywhere, no special cases 15:01:51 length counters make it so you don't have to change the data to make it "fit" in your document 15:01:57 right 15:02:00 cheery: what is your goal, again... sorry... just got back to the screen 15:02:01 but they make it so you have to write a custom editor 15:02:13 look, i'm not defending xml, as much as i'm defending plain text file formats 15:02:29 the xml grammar could be cosiderably simplified without making it a binary format 15:02:44 the trouble with plain text formats is that when people edit them, they brake them 15:03:15 so? your parser reports a parse error, the user can fix it 15:03:24 a custom editor might have bugs 15:03:28 I might be ok with HTML if it worked that way 15:03:37 which corrupt your binary file and may render it unusable 15:03:39 but unfortunately, browsers put up with it 15:03:44 use an html validator 15:03:45 and now 2% of the web is valid html 15:03:55 yes that sucks 15:04:08 which puts an incredible barrier in teh way of writing another browser 15:04:13 but that's not an inherent problem of plain text formats 15:04:14 werty would say it's LUDDITE %. THINK !!! 15:04:24 yes it is 15:04:36 it is not a problem with binary formats 15:04:44 so what if html was a binary format? some binary html editors could still output slightly broken html 15:05:00 if they did, it wouldn't work 15:05:11 if html parsers were strict, bad html wouldn't work either 15:05:26 browsers only support that crap because they're trying to make stuff that people write work. It's an effort to make html user friendly 15:05:40 that's because idiots write html in notepad etc 15:05:45 yep 15:05:46 and not editors that can validate html on the fly 15:05:49 because it's a plaintext format 15:05:53 if it were binary, people wouldn't do that 15:06:56 I think plaintext can be useful for simple things with limited character sets, like config files 15:07:21 who's purpose is to convey information from a person to a computer 15:07:21 plain text formats don't have to hard to parse 15:07:42 I think plaintext is totally stupid and a total waste of resorces as a communication medium from computer to computer 15:07:49 factor has a parser combinators library which allows you to input your grammar in something that's almost like BNF 15:08:28 I tooled up a BNF parser into Standard Forth; top-down recursive descent, but it works quite well for my purposes thus far. 15:08:51 this one works some what differently. its a port of a haskell parser generator 15:09:45 --- join: virsys (n=virsys@or-71-53-65-55.dhcp.embarqhsd.net) joined #forth 15:10:03 factor's binary serialization is only slightly smaller than the json code 15:10:14 but it supports loops in the object graph, not just plain trees 15:10:27 I'd also like to point out that (in case it's not obvious) that if you have a nice, standard, binary format for a tree (like xml, except with references and with a simple file format) you wouldn't have to have more than one special editor 15:10:29 and a few factor data types that json has equivalent for 15:10:32 just one more 15:10:39 sure 15:10:40 one that can edit that kind of tree 15:10:48 just like you need a special editor to edit png files 15:10:58 you could use this editor to edit source as well, if you store it in this tree format 15:11:42 xml is a decidedly inconvenient format for accessing data 15:11:53 because you have to scan through the entire document and "parse" it first 15:11:57 it does need parsing first, yes. 15:12:04 that's why you don't use xml for a database 15:12:04 imagine if the data on your harddrive was stored this way 15:12:15 why would you store all your data as one big xml file? 15:12:26 why would you store anything in an xml file? 15:12:39 because you might need to communicate data with code you did not write 15:12:51 that's probably the only reason 15:12:56 yep 15:13:11 i wouldn't want to use a binary format for factor source code though 15:13:11 nobody in their right might would put something in that format if they could use a different one instead 15:13:23 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 15:13:26 werty probably would. 15:13:27 sorry to leave with a zinger, but I gotta make dinner. bbl 15:15:13 I don't know if werty is in his right might though :) 15:15:21 haha 15:17:27 eh, screw dinner 15:17:34 I don't think anybody'll be here 15:18:36 anyway, why don't you design a binary tree format and an editor for editing it, in forth? :) 15:18:59 I am 15:19:02 it's called fronds 15:19:16 here's the format: type, count, data 15:19:44 in fronds type and count are 16 bits 15:19:55 it's 32-bit aligned 15:19:57 what if i want a datum greater than 64kb? 15:20:00 data is count bytes long 15:20:36 data can refer to more data 15:20:46 --- quit: virl ("Verlassend") 15:20:51 a single piece of data, for instance a bitmap, can be greater than 64kb 15:21:30 either you can use 32 bits instead of 16 (which might be more appropriate for something world-wide) 15:21:37 is the set of types fixed or can user code add new types? if the latter, what happens when two libraries add two types with the same number? 15:22:07 or you can have one type, where the data is a list of references to other nodes that hold data, and you're to understand that the data from these nodes concatenated is the data 15:23:19 hopefully there'd be some sort of public registry where you could register a type number (apple used to have one of these) 15:25:08 how is fronds coming along? 15:25:14 would be nice to have some numbers that are reserved for testing 15:25:18 I hardly ever work on it 15:25:37 I've been spending all my time trying to get myself to work 15:25:56 crap, I missed a class today 15:26:01 i have no problem motivating myself to work on factor when i find free time to do it 15:26:06 finding free time can be a problem 15:26:33 heh 15:26:35 yeah 15:26:44 well, I'm self employed, so it's hard to define what's free 15:27:15 lately I've been writing some other fun stuff 15:27:34 I'm trying to build up a body of GPL php code 15:27:50 I wrote some cool stuff for a previous employer 15:28:00 but I presume that they own the copyrights, so I'm not using it now 15:28:31 for some things it's nice to rewrite because I've learned from doing it before 15:28:46 but I think my database api will probably be exactly the same 15:29:10 or maybe I'll actually get myself to look into pear_db and just use that 15:29:42 on Sunday and Monday I wrote a php page that writes web forms for you 15:29:54 i dislike php 15:30:10 you just type in the field names and field types in two columns, and it spits out php code, sql code (to create the table), an html template and a template for an email 15:30:15 I dislike php too 15:30:29 but I know how to get around the quirks, and for web scripting, it's the langauge that just works 15:30:46 I learned ruby recently. and the language is way better 15:31:03 much more productive, more readable, and much easier to type (not so verbose) 15:31:04 rails is ok 15:31:10 i like squeak's seaside framework 15:31:17 hey chaps 15:31:20 but i'd sooner use java for building web apps than php 15:31:28 eg you can access globals like $this instead of like $GLOBALS['this'] 15:31:47 although... I can type $GLOBALS[''] fairly fast now with all this practice... 15:32:09 if i had to do that i'd define an abbreviation in jedit 15:32:13 I've rarely had luck in getting java to work 15:32:20 heh 15:32:56 I haven't played with rails yet 15:33:07 just ruby, and a couple plugins 15:33:13 its not bad, but it has a number of problems that come into play with very large web sites 15:33:15 mongrel and sqlite 15:33:31 yeah? 15:33:41 the trouble I had was I couldn't find a good beginer's tutorial 15:33:52 if you're talking about millions of hits a day and thousands of web pages and db tables 15:34:02 it's somewhat ironic that global variables don't actually have global scope. 15:34:12 zpg`: in what language? 15:34:21 There's this one street in Zimbabwe that can't see any global variables. 15:34:22 this $GLOBALS[''] business. 15:34:37 doesn't seem to be a syntactic quirk really. 15:34:46 slava: well, basically my problem with ruby is that it takes too long to parse files. statup times are horrendus on my home computer 15:35:05 well people don't use ruby with cgi 15:35:15 they use fastcgi which keeps a ruby process running 15:35:24 basically nobody uses cgi though 15:35:31 perhaps old-school perl people? 15:35:43 I do. :) 15:35:53 does your web app get a lot of hits? 15:35:55 zpg`: well, essentially the biggest problem (in my mind) with PHP is that you can't define globals. You can use the ones it gives you ($GLOBALS $_SERVER $_REQUEST etc) but you can't make more 15:36:09 slava, no heavy load. 15:36:10 I use cgi 15:36:11 with cgi you not only have interpreter startup overhead, but you cannot do db connection pooling, caching and so on 15:36:20 so its ok if you get a few hits a minute 15:36:25 and no heavy db activity 15:36:33 yeah, I get a few hits a day 15:37:50 JasonWoof: ah, i see. never used PHP, just making banal comments from the wings :) 15:43:19 --- quit: tathi ("leaving") 16:09:15 --- quit: snowrichard ("Leaving") 16:10:04 --- quit: Raystm2 ("Should have paid the bill.") 16:10:24 --- join: Raystm2 (n=NanRay@adsl-68-93-42-143.dsl.rcsntx.swbell.net) joined #forth 16:12:09 okay, i'm clearly missing something here. example of broken code: 16:12:10 : foo 2 4 :noname postpone literal postpone literal postpone within postpone ; ; 16:12:57 the idea being that when foo is called, an XT is returned. the XT when called will check the TOS to see whether it's within the parameters present in foo (here: 2 and 4) 16:14:19 (also, if this looks like a stupid example -- the idea is that part of FOO will return a range of two values, which will then be fed into :noname -- i've just simplified the scenario with explicit values) 16:22:00 I hadn't used WITHIN yet. I'm guessing here that it takes a test value then a low limit then a high limit. 16:22:21 why :noname tho? 16:22:40 is this supposed to be a definition 'within' a definition? 16:22:45 3 2 4 within . 16:22:47 try that 16:22:50 sure. 16:23:21 no, it takes two singles inside a definition, and places an XT on the stack. when called, that XT will check the top of the stack to see whether it is within the compiled-in range. 16:23:50 singles? 16:23:54 single cells. 16:24:00 ah :) 16:24:01 thanks 16:24:27 i've tried variations of literal, but i'm stabbing in the dark. missing the obvious. 16:24:41 * Raystm2 tries you def in gforth 16:25:25 okay, : foo :noname 2 4 postpone 2literal postpone within postpone ; ; works 16:25:47 so the question is how to get "2 4" inside :noname programmatically :) 16:28:10 I wonder if literal is treating 2 and 4 like one dword. 16:28:27 shouldn't, right? 16:28:39 literal takes a single, 2literal a double. 16:28:45 ya. 16:28:46 okay. 16:30:44 hmm the first def looks like it's leaveing an address on the stack which I take to be your explained above XT. 16:31:46 btw : foo 2 4 within ; works 16:31:56 of course 16:31:57 you prob'ly know that ;) 16:32:04 that's a simple definition 16:32:19 but that's not returning an executable address. 16:32:54 the idea is, call FOO, which then return a word that will equate to "2 4 within" 16:32:59 the first one is not returning an executable address, I mean that address I see on the stack is not executable? 16:33:05 ya. 16:33:06 which 'first one'? 16:33:13 first definition I saw. 16:33:22 all the postpones, :noname 16:33:30 yes, that doesn't work. 16:33:51 so the address it leaves on the stack is not the noname def then? 16:34:07 well, the first one i pasted throws an error. 16:34:18 mine doesn't. 16:34:24 same def as yours 16:34:36 are you referring to this ==> okay, : foo :noname 2 4 postpone 2literal postpone within postpone ; ; works 16:34:43 Mine leaves the 3 and the address on the stack. 16:34:54 3 was what i was testing obviously. 16:36:17 now, this works: 16:36:19 : foo 2 4 2>r :noname 2r> postpone 2literal postpone .s postpone within postpone ; ; 16:36:33 so i guess i can use the return stack (which i was considering, but trying to do without) 16:36:47 the question is, are there any alternatives to the use of the return stack? 16:36:59 variables? 16:37:19 temporary local storage? 16:37:39 create this 2 , 4 , 16:38:25 i'm reasonably happy with this ==> 16:38:29 : gen-within ( min max -- xt ) 16:38:29 2>r :noname 2r> postpone 2literal postpone within postpone ; ; 16:39:04 I got it. 16:39:17 put your 2 and 4 on the other side of :noname. 16:39:23 huh? 16:39:56 : foo :noname 2 4 postpone literal postpone literal postpone within postpone ; ; 16:40:05 i've already done that. scroll up. 16:40:10 oh :) 16:40:13 mine works 16:40:14 it doesn't solve the problem. 2 and 4 are stuck inside :noname 16:40:29 the whole point is that 2 and 4 are already on the stack just before :noname is executed. 16:40:38 AH ok 16:41:24 and you want to be left with the 3 test lits and the new address of this noname xt? 16:41:31 on the stack? 16:41:40 my 'gen-within' works fine. now i'm wondering whether there's another way to do the same thing without resorting to the return stack. as i said before, i have other :noname tests floating around that used ">r" quite a lot; while using the return stack is fine, i was attempting to see whether it's possible to write this "gen-within" without resorting to it. 16:41:51 try the code i just pasted 16:41:58 do 16:42:00 2 4 gen-within 16:42:04 then 3 over gen-within 16:42:07 pasted? 16:42:09 sorry 16:42:11 3 over execute 16:42:19 O see 16:42:20 (that just keeps the XT nice and safe when you're done testing) 16:42:24 oh i see it now. 16:43:08 like i said, the code works fine, but the POSTPONE/LITERAL stuff is still a little confusing. so it'd be nice to know whether there are alternatives to using "2>r :noname 2r> postpone 2literal" 16:43:27 I see. okay. 16:44:07 here ya go... 16:44:21 3 2 4 ' within execute 16:44:36 * zpg` grumbles 16:44:44 i don't want the XT of within, i want an XT for "2 4 within" 16:44:51 :) 16:44:55 basically, we're generating a new (nameless) word that contains the range as well as the check. 16:45:24 use variables then and throw them over the :noname wall. 16:45:30 that's ugly. 16:45:41 or use the push pops, just as bad. :) 16:45:47 OR 16:46:13 testing... 16:46:39 2>r is a more elegant solution than that. 16:47:33 "push and pops" what're those? 16:48:45 my test didn't work 16:48:46 --- quit: zpg` (Read error: 104 (Connection reset by peer)) 16:49:14 --- join: zpg` (n=user@user-514fca8b.l3.c4.dsl.pol.co.uk) joined #forth 16:49:29 from what i gather Raystm2, your use of 'push' just means to-r 16:49:32 which is what i'm using. 16:49:37 sorry I came up using colorForth first. >r equ push. r> equ pop ( these might be the asm instructions. 16:49:41 ) 16:50:24 push and pop are the same as >r r> but in assembler is what I'm trying to say. Sorry for mixing terms. 16:50:40 My test didn't function. :( 16:51:35 variables is ugly and I'm starting to think that >r and r> is less ugly. 16:52:33 zpg`: what are you trying to do? 16:52:37 * Raystm2 tries constants next. 16:53:01 Hi slava. 16:53:29 It looks like zpg` would like to create something allong the lines of ... 16:53:49 slava: i have a word for processing strings, which returns a range. i want to take this range and automatically generate an XT that will test to see whether the TOS is in the range. 16:54:04 ok 16:54:05 fixed range. 16:54:11 so you want to compile code at runtime? 16:54:14 pre-programmed range. 16:54:15 exactly. 16:54:18 and it works so far. 16:54:20 why do you need an XT? 16:54:26 well, i really want a named definition. 16:54:37 why don't you just pass the range around? 16:54:39 for example, "add-xyz" will be called, which in turn calls "gen-within" after its processing. 16:54:45 why do you need an XT which tests for membership in the range? 16:54:55 so add-xyz returns the XT, which i really would prefer to be named. 16:55:06 i have a lookup table. 16:55:33 on word will add "bl" delimited tokens to the table (associative array that is). another will check whether a word is of this particular category by checking whether the key's value is in the given range. 16:55:39 so "add-xyzs", and "is-xyz?" 16:58:03 zpg` : i've become confused. if this new word is a fixed range you can have the limits to the right of :noname. But if you want it adjustable, then you most likely will need the 2>r :noname 2r>, i'm thinking. 16:58:25 exactly. 16:58:50 but the limits are fixed only in so much as they're calculated just before 'gen-within' is called. 16:58:53 do you want to reuse the same XT or generate a new one every time? 16:59:01 new one. 16:59:05 I get it. 16:59:11 so for four categories, we'll have four XTs which represent range-tests. 16:59:20 in factor within is called between, and you'd just write : gen-between [ between ] curry curry ; 16:59:24 but this is forth not factor :) 16:59:32 :) 16:59:32 :) 17:00:00 okay, different question 17:00:02 slava [ ] still turns compiler on and off? 17:00:11 if we have : foo 2 4 gen-within ; 17:00:19 how can i take the XT returned by this such that we can write: 17:00:30 : blah gen-within @ execute ; <== needs additional syntax, obviously 17:00:46 i've tried postpones and immediacy, but in vain. 17:01:30 then try another approach taht doesn't require runtime compilation. 17:01:34 hmm. 17:01:36 i don't usually generate code at runtime in factor either. 17:02:10 i was aiming for flexibility. if i can get this working, it's pretty nice and concise 17:02:17 not gen-within @ cuz gen-within is not an address with a fetchable value. But ' gen-within will return gen-within's xt. 17:02:30 i don't want gen-within's xt. 17:02:34 oh. 17:02:43 try this Raystm2 ==> : foo 2 4 gen-within ; 17:03:05 then 2 swap execute 17:03:10 we're dealing directly with the new XT 17:03:46 i'm assuming gen-within is written as : gen-within 2>r :noname postpone literal postpone literal postpone within postpone ; ; 17:05:32 this works ==> 17:05:33 : foo 2 4 postpone 2literal postpone gen-within ; immediate 17:05:33 : blah foo execute ; 17:05:49 such that "3 blah" now conducts the test generated in foo 17:05:54 what are you coding zpg` ? 17:06:13 oh, i'm just tinkering with some data structures. 17:11:17 Neal not here today? 17:19:09 okay, one last thing to try. 17:20:37 hmm, can one compiles the TOS into a definition? 17:21:15 s/compiles/compile 17:21:23 yes, that's what literal does 17:22:07 so how would one make this work ==> 17:22:11 5 : foo literal . ; 17:22:16 such that calling foo prints 5 17:22:30 [ literal ] 17:22:55 nope 17:23:12 *the terminal*:3: Interpreting a compile-only word 17:23:13 5 : foo [ literal ] . ; 17:23:13 ^^^^^^^ 17:24:29 5 : foo postpone literal . ; 17:24:30 works 17:25:25 no wait, it doesn't :) 17:26:04 god know how i get these odd instances of working code from incorrect input. 17:26:08 *knows 17:26:47 hehe 17:26:59 if i can get this working, all will be well. 17:27:14 i'll just call my "add-xyz" words, then directly after define the test code from the value they return (xt) 17:27:15 --- nick: Razor-X` -> Razor-X 17:29:04 break-time (tea) 17:29:28 * Raystm2 eating gumbo. 17:50:07 eh? Use CURRY2 , by analogy of my earlier CURRY1 : : curry2 ( x x xt1 -- xt2 ) >r >r >r :noname r> postpone literal r> postpone literal r> compile, postpone ; ; 17:50:24 : gen-xy ( x y -- xt ) ['] within curry2 ; 17:51:37 and 5 : foo postpone literal doesn't work because : may (and probably does, for you) place cells on the stack. 17:51:47 --- join: earth| (n=sqrt@82-35-248-212.cable.ubr06.dals.blueyonder.co.uk) joined #forth 17:56:27 where can i find the POSTPONE word? 17:57:05 the return stack is the best way to do this, but you can calculate the number of cells : places in one instance, assume that : always places that many, and write a word that picks arguments out from under : -- and you can make this calculation and this word both mechanically. 17:57:22 sardella - in any Forth. What do you mean? 17:58:20 ... i will find 18:03:43 http://www.delorie.com/gnu/docs/gforth/gfoth_49.html 18:05:12 sorry http://www.delorie.com/gnu/docs/gforth/gforth_49.html 18:06:20 OK, you want documentation on POSTPONE ; see the Forth ANS standard. 18:08:37 actually, I suppose that you can't use my method of mechanically determining the number of cells : places on the stack; PFE doesn't place anything on the stack, but fails if the stack depth changes between : and ; 18:11:37 you can write a n:noname that moves N cells around :noname , and thus not always have to see yourself using the return stack. And once you have this you can, IFYRWT, implement n:noname in some way that doesn't use the return stack. (It could use... another stack of your own creation!) 18:18:58 is IFYRWT an ANS standard word? 18:23:08 so, is there no way of sensibly taking data from the stack and embedding it in a : definition? 18:23:19 it's a typo for 'if you really want to' 18:23:46 no, there are sensible ways; you've just decided that you don't like them. 18:24:17 cute. 18:26:08 *shrug*, don't ask cute questions like 'so, there is no sensible way ...?' then. 18:27:06 it seems like a perfectly reasonable question. your answer, on the other hand, seems pretty smarmy. 18:27:28 "is x possible" can be answered pretty directly, you don't need to insult an attempt at learning one approach. 18:27:32 'smarmy'? Fuck you. 18:27:46 * zpg` sighs 18:28:07 You didn't ask 'is x possible?' ; IAC, it is. 18:29:15 [20:18] so, is there no way of sensibly taking data froj the stack and embedding it in a definition? 18:29:23 reads to me like "How do?" 18:31:57 raystm - that's very generous of you. 18:32:27 calm down. 18:33:24 So, no Neal tonight then? :) 18:33:29 it would seem not. 18:33:34 --- part: sardella left #forth 18:33:48 zpg - don't tell people to 'calm down' after you've insulted them, or otherwise perceive yourself as making them uncalm. This only over antagonizes anyone. 18:34:08 ridiculously, : n:noname dup 0 ?do S" >R" evaluate loop S" :NONAME" evaluate 0 ?do S" R>" evaluate loop ; works fine. The same with POSTPONE corrupts PFE, which may be a bug. 18:35:04 actually, no, 'calm down' is always antagonistic 18:37:20 neat, the gforth manual has, oddly, the same example as i was inquiring after: http://www.ugcs.caltech.edu/manuals/lang/gforth-0.6.2/Literals.html#Literals 18:44:47 So it was the variable solution after all. I'm amazed. 18:45:04 Thanks for the link, zpg`. 18:46:06 raystm - that is *a* solution, just one that gforth used to exemplify a problem, and one gforth didn't even think up an interesting name for. 18:46:42 Yes, indeed. I've seen several solutions over the course of the night. 18:46:45 Raystm2: yeah, using a variable for temporarily storing the XT is a pretty workable solution i guess. we were discussing variables in the context of 'gen-within' before, though. 18:47:13 a counted array of cells and two words is a simpler, more flexible variant. 18:48:23 which cells are you proposing to count? 18:48:55 zpg - the number of 'live' cells in the array. 18:49:08 which array? and what are live cells? 18:49:50 --- nick: zpg` -> zpg 18:54:24 create cellbuf 0 , 10 cells allot : n>cellbuf ( x0 x1 ... xn n -- ) dup cellbuf ! cells [ cellbuf cell+ dup ] literal + literal ?do i ! cell +loop ; : cellbuf> ( -- x0 x1 ... xn ) cellbuf ccount cells + begin cell- dup cellbuf <> while dup @ swap repeat drop ; -- or somesuch, untested. 18:55:46 with ccount as : ccount ( a -- a' x ) dup cell+ swap @ ; 19:01:55 or if you've a stack type, you can just create one of those and : n>cellbuf dup >r 0 ?do mystack >stack loop r> >stack ; : cellbuf> mystack stack> 0 ?do mystack stack> loop ; 19:02:27 cool. 19:02:29 rather, : n>cellbuf dup >r 0 ?do mystack >stack loop r> mystack >stack ; 19:02:34 re 19:57:57 --- quit: Razor-X (Remote closed the connection) 20:06:04 --- join: Razor-X (n=user@user-11faadf.dsl.mindspring.com) joined #forth 20:07:34 --- quit: earth| ("\") 20:17:14 Hi. 20:17:55 hey Quartus 20:18:09 So I see your code above, but I'm not understanding your intent yet. 20:20:06 :noname (and : ) can put unknown quantities on the data stack, so you do need to dodge that when you're writing that sort of code. The return stack is the usual method. 20:21:40 * zpg nods 20:22:20 It's a pretty odd way to write code at any rate. What's the purpose of it? 20:23:59 or did I miss that in the scrollback? 20:26:26 If you want the resulting word to be named, CREATE/DOES> might be better. 20:26:43 If it has to be unnamed, then you do need :noname. 20:29:14 create/does> would look like : limit-test: create , , does> 2@ within ; 2 4 limit-test: moo 20:34:03 yeah, i pondered the create/does solution, but couldn't figure out how to get it working properly. 20:34:06 that might be far better. 20:34:27 Simpler, at any rate. 20:34:53 no immediacy, no postpones, no literals. 20:35:31 very true. 20:40:19 Symmetry would suggest a CREATE that made nameless CREATE words, but I've never had call for such an animal. 20:45:17 : create-noname S" CREATE (create-noname) ' (create-noname)" evaluate ; : limit-test create-noname -rot , , does> 2@ within ; 20:46:39 yes, you can fake it. 20:47:20 I really don't like EVALUATE for the purpose, as it's late-binding. 20:54:17 is there anything like [create]? as ['] is to ' 20:54:49 there isn't. 20:55:42 well, : [create] create ; immediate , or ... [ create foo ] 20:55:55 zpg, what semantics are you looking for in a [create] ? 20:56:07 well, i have that limit-test: inside a word definition. 20:56:15 so i can't say "limit-test: foo?" as such 20:56:37 You can if you follow the invocation of the word definition with foo. 20:56:46 why do you want to say that within a word definition? 20:56:48 yes, i'm thinking of renaming the word. 20:57:05 : blah 2 4 limit-test: ; blah foo 20:57:30 ayrnieu: there's no reason to, but if the word is "generate-xyz" and "is-xyz?" is created inside it, it'd be fine by me. as it stands, i'll just do as Quartus suggests. 20:57:50 with a stack comment of ( "name" -- ) 20:58:16 or, perhaps : blah 2dup 2constant limit-test: ; blah xyz is-zyx? 20:58:25 er, s/zyx/xyz/ 20:59:13 zpg - yes, but [create] is-xyz always creates the same word. It's strange to consider. 20:59:21 if my word is "add-xyz", and we have limit-test: inside the definition, what do you reckon a good name word be to imply that the input buffer will be read to generate a new word? 20:59:56 a colon at the end of the name does well as a notation. 21:00:02 "add-xyz:" is what i have so far 21:00:24 but that implies "add xyz to ..." 21:00:43 yes, add is a curious verb to use. What are the new words for? 21:00:47 it doesn't at all imply that to me. 21:00:55 ayrnieu: well, it does to me. 21:01:02 Quartus: adding groups of letters to an associative array 21:01:06 yes, you just said so. 21:01:08 the letters have numerical values which classify them. 21:01:30 so, the word that isn't the limit-test, what does it do? 21:01:33 i say letters, they're really counted strings. variable length, though this example is with single character counted strings. 21:01:47 --- join: nighty_ (n=nighty@sushi.rural-networks.com) joined #forth 21:01:51 quite simply, given a character the test compares the value of the key given with the range of that class 21:02:19 so if a-c are one class (1, 2, 3), is-a-c? will simply check the TOS inside the valid range. 21:02:31 So a-c is a word that does what? 21:02:45 well, this is a crude example really. 21:02:59 but in blah: abc is-abc? what does abc do? 21:03:08 will it be a defined word? Or are you just scanning it for info? 21:03:16 i have add-*** words, with is-***? comparisons. 21:03:32 the add word is simply there to simplify the bulk adding of each category (i'm working with abstractions at the moment, not final data) 21:03:38 so blah: add-abc is-abc? is the idea? 21:03:50 fax - stop that. 21:03:58 mischan. 21:04:29 or, char a char c blah: add-abc is-abc? something like that? 21:04:40 well, add-abc in fact returns the relevant range (a string is parsed, split into tokens, each token is added with a numerical key ) 21:04:59 : add-xyz 100 s" a b c" add-entries ; 21:05:11 and blah: defines this word along with is-abc? 21:05:17 which splits the string into tokens, and adds them such that a is 100 b 101 c 102 21:06:05 ok, but I'm trying to name blah: properly. What will an invocation of blah: look like? 21:06:08 well, i'm a little lost re: blah. but add-entries returns the range. so placing "limit-test:" directly after "add-entries" will allow us to create a range-test for this category. 21:06:16 okay 21:06:34 so c" a" pchar is-xyz? 21:06:43 pchar is badly named, can't recall where the name came from 21:06:53 better: 21:07:07 c" a" value is-xyz? 21:07:17 value is a forth word already. 21:07:32 oops, okay. well, replace 'value' with something else; it's fetching from the default associative array. let's pretend that naming makes sense. 21:07:47 c" a" aa-val is-xyz? 21:08:05 Ok, so that's how you'll invoke is-xyz?. But you asked about a better name for "add-xyz:". 21:08:14 indeed. 21:08:24 so "add-xyz" is both generating entries and returning a range. 21:08:40 the "add-xyz" name made sense before i started tinkering with the range tests. 21:08:43 What is confusing me -- what the deuce is 'xyz' and why is it part of the name of the word? Is it the character range? 21:09:05 yes. 21:09:30 So in a general-purpose defining word that takes a range as input, why would you want the input in the name itself? 21:09:59 you know, that's a fine point :) just looking over the code, when i rewrote it this format no longer makes sense at all. 21:10:13 s" a b c" add-entries limit-test: is-abc? 21:10:18 would be far better. 21:10:26 Right. 21:10:37 nice, thanks for letting me air that. 21:11:16 In fact add-entries could be tucked away inside limit-test: so: 100 s" a b c" limit-test: is-abc? 21:11:54 would that read nicely 21:12:03 best result so far. 21:12:04 i means, this model allows us to see we're adding and constructing a test. 21:12:10 *mean 21:12:21 sure, but if it's always add-entries limit-test: you're just repeating yourself. 21:12:36 If by rolling the two together you feel a better name can be found, that's the next task. 21:12:44 neat, okay. 21:12:47 thanks for the help. 21:12:49 (as usual!) 21:13:03 :) Sure. I was asleep earlier -- did some renovation today, very tiring. 21:13:17 neat, what in particular? 21:14:57 plumbing, shower/tub re-fit. 21:15:29 flat? house? 21:15:48 condo. 21:15:58 good schtuff. 21:16:22 Difficult. The pipes run above the ceiling, instead of along the floor, so gravity draws down standing water. 21:16:44 In a house you could open a pipe in the basement and drain it, but no chance of that here. 21:16:58 And water and solder are not friends. 21:18:47 I used a couple of old tricks to keep the water at bay, and all the joints are in fine shape, so I'm happy. Too much like 'real work' for me, though. :) 21:21:34 heheh 21:23:26 time for tea! 21:24:10 Zhivago - I rather like POE, for concurrent programming in Perl. 21:24:18 mischan again. 21:33:25 --- quit: nighty_ (Remote closed the connection) 21:47:09 night all 21:47:09 --- quit: zpg ("ERC Version 5.1.3 (IRC client for Emacs)") 22:58:20 --- nick: Razor-X -> Sukoshi 23:15:56 --- join: Amanita_Virosa (n=jenni@adsl-70-248-239-251.dsl.hstntx.sbcglobal.net) joined #forth 23:47:29 --- quit: Quartus_ ("used jmIrc") 23:59:59 --- log: ended forth/06.12.12