00:00:00 --- log: started forth/17.05.11 00:16:21 --- quit: bavier (Ping timeout: 268 seconds) 00:21:54 --- quit: ACE_Recliner (Ping timeout: 268 seconds) 00:23:06 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 00:51:58 --- quit: pdewacht (Remote host closed the connection) 00:54:05 --- join: pdewacht (~pdewacht@elecran.2k38.be) joined #forth 01:42:25 John[Lisbeth]: Packages have that kind of info in the README usually 01:42:27 lol 01:55:29 --- quit: proteus-guy (Remote host closed the connection) 02:12:54 yunfan: there is eforth but i don't know how good it is for learning on a modern platform 02:14:36 koisoke: well i mean you just showing the mechanics, no need to implement many words 02:15:16 then it is worth looking at eforth 02:18:01 if you can get it to run on your machine. there are a a few different ports around. i haven't looked at them recently 02:26:33 --- join: poldy75 (~dbane@88.87.191.50) joined #forth 03:01:13 --- quit: nighty-- (Quit: Disappears in a puff of smoke) 03:13:35 --- join: true-grue (~true-grue@176.14.219.178) joined #forth 03:22:53 --- join: wa5qjh (~Thunderbi@121.54.90.145) joined #forth 03:31:08 --- quit: wa5qjh (Ping timeout: 240 seconds) 03:38:51 --- join: nighty-- (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 03:50:50 --- join: wa5qjh (~Thunderbi@121.54.90.145) joined #forth 03:52:27 --- quit: wa5qjh (Remote host closed the connection) 03:59:59 --- join: gravicappa (~gravicapp@ppp83-237-174-223.pppoe.mtu-net.ru) joined #forth 04:02:14 --- join: wa5qjh (~Thunderbi@121.54.90.145) joined #forth 04:18:01 --- quit: wa5qjh (Ping timeout: 240 seconds) 05:38:00 yunfan, there's jonesforth. it's a good introduction to how the forth vm works imo, but it's best if you go into it knowing that a lot of the high level behavior is broken and/or noncanonical 05:39:01 I think I lost a good amount of time being confused by the differences between some of jonesforth's words and descriptions I found on the internet 05:52:20 zy]x[yz: if jonesforth could reduce its size that would be the best fit 06:08:08 --- quit: Guest80543 (Ping timeout: 240 seconds) 06:08:16 --- join: rprimus (~micro@178.79.128.27) joined #forth 06:08:39 --- nick: rprimus -> Guest77346 06:46:16 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 07:05:00 reduce its size in what way? 07:05:16 if you remove the comments it's pretty damn small 07:05:32 the vast majority of it is explanation, which is what I thought you were interested in 07:07:13 don't worry about the forth part of jonesforth. it's mostly uninteresting and, like I said, wrong. the VM is implemented in the assembly file, and if you're looking to learn how forth works that's the place to go 07:39:32 --- quit: ACE_Recliner (Ping timeout: 258 seconds) 07:40:03 --- join: GeDaMo (~GeDaMo@212.225.127.213) joined #forth 07:42:47 --- join: vsg1990 (~vsg1990@static-72-88-80-103.bflony.fios.verizon.net) joined #forth 08:12:59 --- quit: Keshl__ (Quit: Konversation terminated!) 09:17:21 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 09:30:55 --- quit: poldy75 (Ping timeout: 246 seconds) 10:24:55 --- join: proteus-guy (~proteus-g@2405:9800:b408:bc31:baf6:b1ff:fee4:301c) joined #forth 10:56:51 --- quit: neceve (Quit: Konversation terminated!) 11:51:32 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 12:09:56 --- join: zincing (~zincing@2a03:1b20:4:f011::23de) joined #forth 12:43:26 --- join: MickyW (~MickyW@79.232.205.31) joined #forth 13:52:40 --- quit: gravicappa (Remote host closed the connection) 13:57:17 --- quit: GeDaMo (Remote host closed the connection) 14:09:35 --- join: wa5qjh (~Thunderbi@121.54.90.135) joined #forth 14:14:47 --- join: dbane (~dbane@78.19.180.202) joined #forth 14:51:39 --- part: dbane left #forth 15:01:12 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 15:05:32 --- quit: ACE_Recliner (Ping timeout: 240 seconds) 15:06:21 --- join: ACE_Recliner (~ACE_Recli@50.165.178.74) joined #forth 15:17:02 --- quit: ACE_Recliner (Ping timeout: 240 seconds) 15:44:32 --- quit: true-grue (Read error: Connection reset by peer) 16:13:24 --- quit: nighty-- (Quit: Disappears in a puff of smoke) 16:15:40 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 16:37:02 --- quit: proteus-guy (Ping timeout: 272 seconds) 16:42:59 --- quit: ACE_Recliner (Remote host closed the connection) 17:01:40 --- quit: wa5qjh (Remote host closed the connection) 17:38:12 --- join: nighty-- (~nighty@d246113.ppp.asahi-net.or.jp) joined #forth 18:11:08 --- quit: Zarutian (Quit: Zarutian) 19:15:52 --- quit: MickyW (Quit: Leaving. Have a nice day.) 20:11:00 --- join: jiasdjasidj (~oaijsdioa@175.20.93.48) joined #forth 20:11:13 --- nick: jiasdjasidj -> smokeink 20:16:50 zy]x[yz: no not the comments, but the words 20:17:22 zy]x[yz: like only reserve those core words for building other words, 20:53:34 --- join: MickyW (~MickyW@p4FE8CD1F.dip0.t-ipconnect.de) joined #forth 21:30:31 --- quit: vsg1990 (Quit: Leaving) 22:45:22 --- quit: zincing (Quit: Leaving) 23:09:48 been playing with forth for a couple of days now 23:10:43 forth has variables, constants, arrays, and most forths have other data structures as well 23:11:13 i still don't get the point of having a stack 23:12:03 nearly every programming language uses a stack. it just isn't directly accessible to the programmer 23:12:29 so e.g. in C when you use function arguments or local variables those go onto the stack 23:12:40 yes so when is it useful to the programmer? 23:13:51 just different styles. in algol-derived languages you use the stack through named variables. in forth you use it implicitly through words that consume and return values and through stack operations 23:14:27 also with locals which are named parameters, but those are somewhat less traditional forth 23:19:00 it's somewhat useful because (with a few exceptions and caveats) expanding a definition inline and calling it are trivially equivalent 23:20:10 so in a subroutine-threaded forth you effectively have a macro assembler that enforces certain register allocation conventions 23:23:44 one important difference between forth and most other languages, is that most other languages use a single framed stack and forth uses separate return and data stacks, both unframed 23:25:02 which is necessary for free consumption and regurn of values 23:25:33 not sure what other languages you are familiar with 23:25:41 s/regurn/return/ 23:33:20 --- join: proteus-guy (~proteus-g@180.183.250.20) joined #forth 23:33:30 can you show an example where having a stack is actually useful? 23:33:48 but not something that would require a stack in other languages as well 23:34:43 like, some problem that in other languages you'd solve totally differently than in forth, and in forth you have a simpler/faster/cleaner/in some way better solution 23:35:12 matter of taste. forth favors smaller definitions than many other languages 23:35:40 --- quit: proteus-guy (Max SendQ exceeded) 23:35:57 smaller definitions? 23:36:01 --- join: proteus-guy (~proteus-g@180.183.250.20) joined #forth 23:38:17 so forth is a codegolf exercise 23:41:19 no 23:41:33 i mean it is more idiomatic in forth to write many small definitions than one big one 23:45:32 i was pleasantly surprised with forth in a live coding environment 23:46:14 if you have a forth that can recover from runtime errors easily, yes 23:47:39 i get it, a repl is cool 23:47:48 but why >the stack< 23:47:51 i use amforth with the supplied multitasker, and the recovery mode is, well, good enough 23:48:00 i find (or found when i was writing enough forth for certain things to be a matter of muscle memory) it useful in that environment that it encourages definitions of a length that fit in working meory 23:48:04 *memory 23:48:04 the task usually just dies but i can fix and restart it 23:48:33 koisoke: what do you mean? 23:48:39 izabera: for the same reason other languages use a stack. forth just exposes it to the programmer 23:49:01 look at some C compiler output and you will see what i mean 23:49:12 i know that 23:53:11 so are you asking for a case where it is better to have tacit parameters and direct manipulation of the stack than named ones like in C? 23:53:16 yes 23:53:28 they are mostly equivalent and it is a matter of preference 23:54:58 but e.g. in C where you would have to return a struct, or pass a pointer to a struct to be filled in, you can just return multiple values on the stack 23:55:10 of course you can do that in many other langages without directly manipulating the stack e.g. lisp 23:59:59 --- log: ended forth/17.05.11