00:00:00 --- log: started forth/05.08.24 00:04:01 --- quit: slava (Read error: 110 (Connection timed out)) 00:11:00 --- quit: JasonWoof ("off to bed") 00:40:30 --- nick: onetom_ -> onetom 00:41:03 --- join: slava (n=slava@CPE0080ad77a020-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 01:52:34 --- join: amca (n=plump@as-bri-3-157.ozonline.com.au) joined #forth 01:52:34 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 01:52:40 Hello 01:59:39 --- quit: amca ("d34d") 02:31:40 --- join: _I440r (n=foo@rrcs-24-242-160-169.sw.biz.rr.com) joined #forth 05:15:14 --- join: PoppaVic (n=pete@0-1pool75-64.nas24.chicago4.il.us.da.qwest.net) joined #forth 05:15:37 G'day 05:19:15 C++ sucks 05:19:30 hahaha 05:23:33 --- join: madgarden (n=madgarde@Kitchener-HSE-ppp3577151.sympatico.ca) joined #forth 06:54:57 --- quit: madwork ("*frotz*") 06:55:08 --- join: madwork (n=madgarde@derby.metrics.com) joined #forth 06:57:44 --- quit: madwork (Client Quit) 06:57:52 --- join: madwork (n=madgarde@derby.metrics.com) joined #forth 07:06:44 --- join: snoopy_16 (i=snoopy_1@dsl-084-058-150-155.arcor-ip.net) joined #forth 07:11:34 --- quit: madwork ("*frotz*") 07:11:49 --- join: madwork (n=madgarde@derby.metrics.com) joined #forth 07:12:22 --- join: sproingie (i=foobar@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 07:25:00 --- quit: Snoopy42 (Read error: 110 (Connection timed out)) 07:25:07 --- nick: snoopy_16 -> Snoopy42 08:26:48 --- join: madwork_ (n=madgarde@derby.metrics.com) joined #forth 08:41:18 --- quit: madwork (Read error: 110 (Connection timed out)) 08:41:54 --- nick: madwork_ -> madwork 08:42:18 lo, mad 08:45:43 --- nick: Raystm2 -> nastm 08:55:43 --- quit: PoppaVic ("Pulls the pin...") 09:10:34 --- join: virl (n=hmpf@chello062178085149.1.12.vie.surfer.at) joined #forth 09:18:06 --- quit: tattrdkat (Read error: 104 (Connection reset by peer)) 09:24:56 --- join: virsys (n=virsys@or-65-40-182-104.dyn.sprint-hsd.net) joined #forth 10:16:12 --- quit: Quartus (Remote closed the connection) 10:21:35 --- join: uMbala (n=csezol@81.180.159.223) joined #forth 10:22:58 could somebody give me a short sample code of forth ? 10:23:15 : hw ." Hello World!" cr ; 10:23:48 and a 10-line one ? 10:24:12 just a minute 10:24:43 oooooooook 10:24:43 kkkk 10:24:51 http://retro.tunes.org/rem.f 10:25:42 there's also a #retro chat room 10:27:31 rem.f is in the latest dev shapshot of rf. I don't know if that example would run in any other forth without some modification. 10:29:22 sorry.. i dont think thatll be ours.. 10:30:17 why not? 10:30:30 rem is a little complicated, even for me 10:31:38 tunes is a no-kernel os right ? i thought a lot about the kernel type of my OS, what i want to write... 10:31:42 it's an editor that uses a linux terminal. there's a less complex version named red that works anywhere, even in native mode 10:32:08 it's not really tunes any more, it's more of a stand-alone 10:32:40 you could make a kernel in it. and it wouldn't be a part of tunes 10:33:03 there's about 4 or 5 different forks of retro right now, and you could add yours to the list 10:34:18 (the author encourages forks and alternate versions, so feel free) 10:34:18 how fast forth is ? 10:34:38 extremely fast, faster than c 10:35:03 but slower than asm, right ? 10:35:11 and way easier to optimize and turn into asm 10:35:30 asm is the fastest you can go. it does this by being unportable and tough to read 10:36:17 how portable is forth? its for x86, aint it ? does it work for ppcs ? 10:36:49 there is forths on ppc 10:37:01 'forths' ? 10:37:10 yeah. there's hundreds of them 10:37:34 and whats different ? 10:38:20 the machine codes are completely differently structured. I was talking with PoppaVic about this problem earlier today on #asm 10:48:52 ehm, faster than C docl? that's not true... 10:49:23 depends what you're doing of course, but in general it is 10:49:52 docl, arrrrgh 10:50:04 ok, say I'm doing a simple Hello World program and it wouldn't be as fast as the C version. 10:50:12 sry, docl, but that is shit. 10:50:44 forth, only could be as fast as C in special cases, where we have big C apps... 10:51:00 I think the hello world would be faster in forth. 10:51:04 but in short apps forth loses... 10:51:24 so, a kernel in forth, apps in C.. 10:51:33 in retro it's not as fast.. you can try yourself and then you will see what I mean 10:51:52 what's the program to test the time they take? 10:52:22 I took 'time' simple 10:54:20 what's the code you are testing? and how big of a difference? 10:54:22 the problem is that a forth program needs before it prints 'helloworld' to startup(linking elf) then it reads the words from standard input, compiles some of them and finally it prints hello world, that can't never be as fast as C. 10:55:13 yeah but what about reading from a blockfile in native mode? 10:56:37 hmm... I don't know how retro do it so.. I don't know it ;-) 10:56:39 it's true that there's a startup cost, but I have to wait several minutes to boot linux anyway. 10:59:12 C helloworld: real 0m0.002s retro8 helloworld: real 0m0.010s 10:59:52 it's more than 50% of the startup speed of a C helloworld 11:00:16 the c is pre-compiled into machine code though 11:00:53 the forth has to start up, compile, then execute the machine code 11:01:05 yeah... I know 11:01:39 when you read your backlog, you will see, that I said that already. 11:01:55 yup 11:02:21 but the actual speed of forth-generated machine code is still faster 11:02:36 at least, that's what I've been lead to believe 11:03:33 pff... ehm, I don't know it, but I think C has faster machine code, when we compare retro to C. 11:04:33 are you on the latest development retro, or the stable? 11:04:49 the latest... 11:05:37 however retro is damn fast compared to java/perl/python and other scripting languages or OOP monsters... 11:07:29 but when we compare it to another forth which is written in C, I would say it could be more faster. 11:08:12 possible 11:08:24 we should bug crc about it when he gets on 11:09:44 for example gforth, which takes for HelloWorld: real 0m0.016s, the difference isn't much. 11:32:14 I see no reason the forth code couldn't be made into instantly loadable machine code analogous to what c does. 11:34:05 why are you measuring startup speed? 11:34:11 0.016s -vs- 0.002s is totally irrelevant 11:34:34 measure a numerical simulation that takes hours to run 11:35:21 good call 11:36:09 startup time and runtime performance are not usually related... 11:36:14 tcl starts fast but runs terribly slow 11:36:20 sbcl starts fast and runs fast 11:36:26 java starts really slow and runs fast (if you're not doing GUI) 11:37:45 well, they are related as productivity losses in the real world, but not in the technical sense of being related problems 11:39:59 * uMbala goes 11:40:02 --- quit: uMbala ("Leaving") 11:40:03 bye 12:02:09 I don't see your problem slava. 12:02:17 i don't have a problem 12:02:33 just pointing out that startup time and runtime performance are different things, and should not be correlated with each other 12:03:57 I know, but althought I like it to compare them ;-) 12:04:10 although 12:04:10 i agree that startup speed is important 12:04:17 i hate waiting for applications to load 12:05:11 me too 12:57:59 --- quit: _I440r () 13:04:59 --- join: amca (n=plump@as-bri-1-147.ozonline.com.au) joined #forth 13:06:40 Hello. 13:06:57 Would anyone like to talk to me about why they like Forth? 13:08:13 are you trying to argue the counter-point, or re-enforce your own beliefs? 13:08:20 I like it because it is simple and minimalistic 13:08:38 also it's powerful and close to the hardware 13:08:54 I like the fact that forths tend to be implemented in terms of themselves, which leads to cleaner, simpler design and less layers 13:09:04 No, Im just curious. 13:09:41 Previously Ive been suspicious of stack based languages, but lately Ive been readin g more about them and enjoying their simplicity and elegance. 13:11:50 What Ive seen about pre-fix languages like LISP I have t liked (particularly because of it's abstraction and recursive rather iterative qualities) but I like Forth much better because post-fix notation seems more natural than pre-fix, and it is more iterative, less abstract, and closer to h/w. 13:12:10 So I have been wondering why other ppl who have been using it for a while like it. 13:12:14 yeah, that's my feeling 13:12:23 well, i like lisp very much 13:12:30 I haven't really done much in it yet 13:13:00 slava: How do you compare Forth and LISP - what do you see as the advantages of each? 13:13:26 they're too different to compare 13:14:00 But they are both programmng languages. Wouldnt that itself be a point of comparison? 13:14:08 Or do I miss the point? 13:14:17 lisp is much more high level, and supports a lot of abstractions 13:14:29 well, forth is a completely different category from either compiled or interpreted languages 13:14:48 there are no compiled or interpreted languages, only compiled or interpreted language implementations 13:14:57 true 13:15:20 forth is seldom implemented as either completely 13:15:33 seems like 13:16:30 it is also neither high level nor low level, kinda any level you want 13:16:31 docl: From what Ive read it seems as if Forth is a dynamically self compiling language 13:16:49 yeah. interactively compiled 13:17:06 so is lisp, but lisp enforces pointer-safe abstractions 13:17:51 Whereas Forth trusts the programmer knows what he is doing, no matter what magic or foolishness it is. 13:18:11 I've seen crc do some amazingly twisted things in forth 13:18:26 its not a matter of trust, but certain features requiring protected abstractions 13:18:33 http://forthworks.com/blog/?p=154 13:18:48 docl: thanks 13:19:02 slava: Ah, I see. 13:19:26 lisp's macros and closures need automatic memory management, which requires no manual pointer manipulation to be visible 13:19:40 Any of you guys come across False? 13:19:40 since objects can move during collection 13:19:53 what's that? 13:20:07 slava: making it easier for the programmer so they dont have to worry about where in memory the data is 13:20:19 False is an esoteric programming language 13:20:31 It is post-fix and stack based 13:20:46 cool, found it in google 13:20:48 its not about making it easier per se, but reducing code duplication 13:21:01 http://wouter.fov120.com/false/ 13:21:09 docl: Yep 13:21:42 slava: I dont quite undestand. Could you please explain about that a little 13:22:21 amca, features like closures, macros and GC aim to reduce the amount of code you have to write, by consolidating certain functionality in one place, instead of scattering it throughout your program 13:22:52 lisp is intended for rapid prototyping 13:22:54 slave: Ah, I see 13:23:18 slava: So you dont have to constantly refer to new/malloc/free/delete etc? 13:24:38 with lisp, you don't pay attention to the irrelevant 13:25:28 * amca nods 13:27:48 if I ever get the skills to pull it off, I'm considering creating a scheme in retroforth 13:28:19 What implementations of Forth do you guys use? 13:28:26 Ive been playing with gForth 13:28:27 scheme is very easy to implement 13:28:54 I use retro 13:29:05 it's really small, and portable 13:29:13 i use factor, which is the complete opposite of retro in many ways 13:30:03 slava: Every feature inclusing a definition for KITCHEN_SINK? :) 13:30:42 no, the core is small and well-defined, but it enforces pointer safety, has objects, and an optimizing compiler 13:30:46 and there is a big library 13:31:03 Ive read that it easy to implement a forth implementation, but from what Ive seen of Forth's ANS compliant word list, there is a lot to implement in Forth. Are you guys able to explain to me how it is said to be so simple to implement when there is so much to implement? 13:31:46 ANS is a bit more than you really need 13:32:03 to me, ANS is less than I need :) no gui, etc. 13:33:06 but, to say that it is easy to do is not to say it's easy to do well 13:33:07 docl: Where could I find a list of a minimal Forth implementation? 13:33:18 docl: True. 13:33:50 foerthchen 13:34:02 in retro's lib folder 13:34:14 ok. 13:34:15 * amca looks 13:34:30 might not be in the stable 13:35:19 Il check anyway 13:35:31 actually, it's not readable there. there was a forum posting where he put an example in perl 13:36:01 the lib is apparently largely in machine code 13:36:09 ah 13:36:32 Ill google it in retroforth.org then 13:36:38 http://retroforth.org/board/index.php?topic=179.msg994 13:37:14 hehe thanks 13:37:20 --- join: skylan_ (n=sjh@dialup-216-211-4-47.tbaytel.net) joined #forth 13:43:16 --- quit: skylan (No route to host) 13:50:37 --- join: Quartus (n=trailer@ansuz.pair.com) joined #forth 13:50:46 Hey all. 13:50:51 * amca bows 13:51:12 hi quartus 13:51:38 What's the news? 13:52:18 Im a newbie 13:52:44 Good deal. 13:53:19 Looking to learn Forth? 13:53:42 Learning a bit of forth and trying to get my head around how to implement it 13:53:55 You want to implement a Forth? For what platform? 13:54:22 Well I want to implement a version of False first. Have you heard of False? 13:54:45 It's a toy language, isn't it? 13:55:30 yep. Esoteric language. Stack based and post-fix like Forth 13:55:39 And then Im thinking of implementing Forth 13:56:02 Im creating a minimalistic 8-bit stack based VM. 13:56:53 And I am gonna implement False on it, then Forth probably. 13:57:13 For what hardware? 13:57:26 I also am interested in Amstrad CPCs, and would like to imlement both languages in BASIC and z80 on an emu 13:57:44 Using x86 Python, then perhaps C. 13:57:48 Wow, Forth in BASIC? 13:57:51 Sounds painful. 13:58:29 Yeah. I might go strainght to z80 13:58:32 I'm thinking of doing a scheme in retro 14:00:05 I'd like to see a Scheme written in Forth. 14:00:38 Could you do a Forth in Scheme? :) 14:01:09 I imagine so. 14:01:36 I found one done in gforth 14:01:46 Do you have a link? 14:01:51 Interesting 14:02:03 --- join: JasonWoof (n=jason@pdpc/supporter/student/Herkamire) joined #forth 14:02:03 --- mode: ChanServ set +o JasonWoof 14:02:15 http://www.complang.tuwien.ac.at/~schani/oldstuff/index.html#schemeinforth 14:02:25 Thanks. 14:02:28 * amca looks 14:02:38 found the link on http://cliki.tunes.org/Scheme 14:03:07 cool 14:04:13 it's got lots of interesting scheme links. I first went there looking for a scheme mud. nothing usable on that front 14:04:36 can't find any muds in forth either, although muck has a forth in it 14:13:44 * docl should leave that ghastly waste of time known as multiuser dungeons alone, and work on programming 14:14:10 docl: As in programming a MUD? :P 14:14:50 well that's at least not as bad as playing them ;) 14:15:11 which I do lose entire days at sometimes 14:15:38 hehe 14:16:11 Yeah, I suppose playing MUD you are generally mainly destroying, where ascoding them is more creative 14:16:15 forth is my substitute addiction, to reduce the withdrawl symptoms 14:16:34 lol 14:16:49 hehe yeah. but possibly destroying the lives of the players 14:17:05 What have you been coding recently? Or just been doing design in your head for the Forth Scheme? 14:17:56 hmm well I haven't done much at all, I don't think 14:18:06 Ah 14:18:19 but I did make some aliases for the new retro editor, REM 14:19:17 http://retroforth.org/board/index.php?topic=197.msg1223#msg1223 14:20:01 I'm still a newbie, really 14:20:30 * amca looks 14:23:40 at first, I had those words as e.g. : $$ci $$cu ; 14:24:00 very simple redefines. but it turns out alias is faster 14:25:24 ' foo alias bar takes address of foo onto the stack, then creates bar in the dictionary pointing to the address on the TOS 14:26:05 I have alias in the new Quartus Forth, too. Handy. 14:26:14 cool 14:27:48 Takes no codespace. In combination with the module/end-module facility, you can do some neat things. The last thing I've done with it is to create a CORE-only private wordlist that lets me test code in an environment that only has CORE (or whatever wordsets I select) words available. 14:28:22 sounds neat 14:28:27 Convenient. 14:28:30 yeah 14:28:54 similar to the retro loc words? 14:29:00 That I don't know; I'm not up on retro. 14:29:37 loc: makes the words defined after it invisible after ;loc 14:29:46 module/end-module set up a private wordlist, and private: and public: switch back and forth between the two. private: definitions are visible only within the module, unless it is later exposed. The whole thing is a simple construct built on top of the Search-Order wordset. 14:30:14 * slava doesn't like private word-lists 14:30:18 what if you want to test a 'private' word later? 14:30:23 You can expose the module. 14:30:28 ah. 14:30:31 lol 14:30:32 so its not really 'private' in the java sense 14:30:36 No. 14:30:38 This is starting to sound smutty 14:30:42 Heh. 14:30:52 modules are nestable, and each is named. 14:32:19 It means also a significant reduction in naming conflicts between source files. 14:32:31 i need to do something like nestable modules. 14:32:42 I can show you what I built. 14:32:58 It's documented in the Quartus Forth manual pretty extensively, if you'd like to see the high-level view of it. 14:33:02 i'd just build it from nested hashtables 14:33:30 sure, I'd like to read it 14:34:10 http://quartus.net/products/forth/manual/manual.pdf, if I've got the link right. 14:35:12 cool 14:35:16 Page 52. 14:37:06 being able to switch scopes like that is neat 14:37:15 It can all be implemented in Standard Forth. 14:37:45 yeah, it would probably be easy in retro 14:39:14 --- join: crc (i=crc@pool-70-16-157-19.phil.east.verizon.net) joined #forth 14:39:21 hey crc 14:39:33 --- mode: ChanServ set +o crc 14:39:35 hi docl 14:40:08 Quartus was just telling me about his localization functions 14:40:52 http://quartus.net/products/forth/manual/manual.pdf, page 52. 14:41:09 it's got a way to switch between public and private, as well as what looks similar to loc: 14:43:25 amca is new to the forth community, and is familiar with lisp 14:43:45 and I'm considering writing a scheme in retro 14:43:54 cool 14:44:01 * crc welcomes amca to #forth 14:44:15 hi crc 14:44:49 docl: More of a passing aquaintance with lisp. Im more familiar with pascal, java, smalltalk, c and python 14:44:54 hi slava 14:44:55 Thanks crc 14:45:37 smalltalk rocks 14:45:39 yeah, I'm only passingly acquainted with lisp myself. more familiar with perl and python 14:45:56 gotta try smalltalk 14:46:50 try squeak 14:46:57 Like with Lisp, I dont like how Smalltalk is *too* abstact based and not pragmatic enough for my tastes 14:47:58 crc: Is that crc as in cyclic redundancy check? 14:48:36 Or class-responsibility-collaboration cards? 14:49:12 charles childers 14:50:21 As in RetroForth Charles Childers? 14:50:35 that's him 14:50:46 Surprisingly similar to him. Can be used as a direct replacement part. 14:50:47 Cool 14:50:50 lol 14:51:42 * crc is Charles R. Childers 14:51:52 the R is for RetroForth? 14:51:57 lol 14:51:58 R is for Robert 14:52:34 so your irc nick could be charlesrobertchilders 14:52:36 I thought it was "Rocketman". 14:53:49 ? 14:53:58 Just a guess. I'm bad with names. :) 14:54:04 heh 14:54:05 ok 15:01:55 I've used the module facility in Quartus Forth to do other tricky things, like loading two independent copies of a source file, each with different starting conditions. 15:04:02 For a five-word lexicon (module end-module private: public: expose-module) it's surprisingly useful. 15:05:53 sounds like it 15:06:22 Nothing you couldn't do with the search-order if you were sufficiently patient, of course, but making it trivial to use. 15:06:27 I wonder if loc: ;loc is just as good, or not as good. it doesn't seem as flexible 15:06:51 I'm not sure how loc: ;loc work. Sounds like it seals off part of the dictionary. 15:08:33 Does retro support wordlists? 15:08:42 yeah. it makes all the funcs between the tags anonymous 15:08:46 hmm 15:08:53 I don't think so 15:09:15 I see. Hashed dictionary implementation? 15:09:33 not sure 15:09:53 Wordlists are trivial to implement on top of a hashed (separate-chaining) dictionary implementation. 15:10:10 hmm. probably does 15:10:48 I haven't heard the term though, so maybe not 15:10:56 crc, you there? 15:11:58 yes 15:12:03 rf has no wordlists yet 15:12:26 ok 15:12:33 is the dictionary hashed? 15:12:42 * crc is working a little with Ron Aaron (Reva's developer) to see how to implement them on rf and reva 15:12:49 no, the dictionary is a linked list 15:13:26 If it's the direction you choose, you can switch to a hashed implementation very simply. WORDS (or whatever the rf equivalent is) becomes somewhat more complex, but it's not huge. 15:14:10 rf has "words" :) 15:14:29 Reva seems likely to switch to a hashed dictionary at some point 15:14:50 I assume rf "words" displays most-recently-defined first? 15:14:55 yup 15:15:05 That's slightly trickier with a hashed wordlist, but not hard./ 15:15:35 Huge speedup on searches. 15:15:54 that's why Ron wants to move Reva to a hashed dictionary 15:16:41 I did quite a lot of empirical research on hashed dictionaries when I implemented the one in Quartus Forth. 15:20:28 Above the speed increases, wordlists are basically free. 15:20:32 i implemented a general hashtable data type 15:20:50 of which wordlists (i call them vocabularies) are a speical case 15:20:59 where the keys are all strings, and the values are all words 15:21:14 Im gonna reboot into the native version of retroforth, so Ill catch you guys later. Thanks muchly for the chat 15:21:27 Later! 15:22:08 --- part: amca left #forth 15:25:29 slava, that's independent of the Forth dictionary, right? 15:26:09 my dictionary is a hashtable mapping vocabulary names to vocabularies 15:26:13 vocabularies are hashtables mapping word names to words 15:26:26 I see. 16:04:04 --- nick: skylan_ -> skylan 16:52:57 --- join: asymptote (n=weldon@220.muma.nsvl.chcgil24.dsl.att.net) joined #forth 17:23:58 .s 17:24:38 . 17:24:40 [.] 17:24:42 ? 17:29:57 ? 17:32:49 --- quit: asymptote ("Leaving") 18:00:34 what was that all about? 18:01:36 I have no idea 18:01:41 --- nick: nastm -> Raystm2 18:04:15 * Raystm2 = hi guys {~!'~} 18:05:15 Oh yeah! I wanted to check the Glypher... 18:09:22 okay, where as colorforth would return a lost cursor to the bottom of the block when defining a new work, Glypher _does_ append new words to the bottom of the block BUT does not replace the cursor to the position just after the word. Glyphers cursor remains deep below the viewable portion of the block. 18:09:42 right 18:11:08 hook to insert a "fixing" of the variable that handles cursor so that you just have to add a word to the block to see the cursor immediatly appear just behind the new word. 18:12:14 Prob'ly unnecessary. It would seem that colorForth gets this ability as a side effect. 18:13:28 or make insert use a "min/max" that uses the number of tokens on the screen be the limits? 18:14:09 --- join: kunphuzil (n=Jason@ip-69-10-118-110.cableaz.net) joined #forth 18:14:11 --- part: kunphuzil left #forth 18:15:26 in that case, the cursor would loose it's ability to keep it's place when you move into a new block just to remind yourself of what a thing does, then return to the editing block in the place where you left off. 18:16:34 Of course, spoiled with colorForth, I mearly live with it. If I need the cursor back from the deeps, I just define a new word. 18:25:45 3l 18:25:46 l 20:06:10 --- quit: madgarden ("?OUT OF DATA ERROR") 20:07:32 --- join: madgarden (n=madgarde@Kitchener-HSE-ppp3577151.sympatico.ca) joined #forth 20:53:27 --- join: paulha (n=paulha@216-99-211-49.dsl.aracnet.com) joined #forth 20:54:07 --- part: paulha left #forth 20:56:54 Has anyone got a BNF diagram for Forth? 21:10:58 Before you all nay-say, I do understand that it would be necessarily limited due to the nature of the language. But at least the accepted numeric formats should be able to be BNF'd. 21:48:17 --- quit: sproingie (Remote closed the connection) 22:05:53 --- quit: virl (Remote closed the connection) 22:14:32 --- join: snowrichard (n=richard@adsl-69-155-177-155.dsl.lgvwtx.swbell.net) joined #forth 22:15:28 Hi 22:16:40 --- quit: snowrichard (Client Quit) 22:34:36 Quartus: we like to cheat out of such things by saying "forth has no syntax" or the like 22:36:21 it's really treated as a string of characters 22:36:35 normally (but certainly not always) broken into words by whitespace 22:38:17 ::= [] 22:38:30 ::= * 22:39:34 ::= + 22:40:26 where a word stops reading in is totally dependant on what word it is 22:40:35 there's at least one that stops at whatever char you tell it to 22:41:05 I can't think how you'd do BNF for the forth word WORD 22:42:32 some forth code at least cannot be parsed, without running it 22:42:40 I'll make a good example 22:47:00 char : 2 * word dup swap rot count type 22:47:33 (also rather difficult for a human to parse, but maybe that just helps my point?) 23:10:38 --- quit: JasonWoof ("off to bed") 23:59:59 --- log: ended forth/05.08.24