[00:03:14] LACampbell: hope i was clear enough, easiest way is to just put a breakpoint in some syntax words and single step through the execution [00:03:57] * ChanServ has set mode +o to erg [00:04:08] erg, that was kind of clear. I am just having a go at a concatenative language myself, and was thinking about "meta programming", and came across factors parsing words, then found out it had no interpreter state like forth did [00:04:21] I am not very familiar with factor, beyond the cool idea of quotations and stuff [00:05:00] LACampbell: i'm not sure that's accurate, it has tons of state, though i'm not sure how it compares to forth's state. [00:05:53] LACampbell: most words like : that define something don't output anything to the stack, but putting ``1 2 +`` outside of a definition is called a top-level form, and there's one per file that evaluates after the file loads [00:05:57] I more meant forths "outer interpreter" state [00:06:16] but the stack effect has to be ( -- ) or it's an error. so ``1 2 + .`` works [00:07:11] * erg has set the topic for #concatenative: "Concatenative Languages | paste.factorcode.org | irclogs.factorcode.org | bespin.org/~nef/logs/concatenative/?C=M;O=D" [00:07:30] but if executable words are executed immediately, what's even left on the accumulator vector? [00:07:31] evincar: thanks for the command [00:07:48] LACampbell: the intermediate state of the parse, until the define word is reached, for instance [00:07:54] LACampbell: and the top-level form [00:08:32] * ChanServ has set mode -o to erg [00:09:09] wait, as in - it's a stack of string tokens? [00:09:21] that just keeps building up until the end of the file? [00:10:06] there are various lexing words, like scan-new which makes a new word in a vocabulary and pushes that word onto the stack, or scan-class which does similar, scan-number, scan-object, etc [00:10:46] so (:) is basically ``scan-new-word scan-effect parse-definition define-declared`` [00:11:26] : add ( a b -- c ) + ; becomes ``\ add ( a b -- c ) [ + ] define-declared`` [00:12:01] before ``define-declared`` is called, the accumulator vector has { \ add ( a b -- c ) [ + ] } [00:12:41] ohh, hmm [00:12:59] so even colon definitions are made up of primitives [00:13:40] conceptually, yeah. technically, factor primitives are in the VM in C or in inline asm. but yes [00:16:02] LACampbell: http://docs.factorcode.org/content/article-defining-words.html [00:20:22] that's a really interesting approach. hmm [00:21:08] LACampbell: it sucks! i'm changing it so that there are no scan-foo words and everything is based on regular syntax, like : ... ; ( ... ) etc [00:21:30] LACampbell: it doesn't suck, but it's too do-anything-you-want-during-parsetime for my tastes [00:22:07] yeah I am programming definitions as inbuilt [00:22:28] not out of any good reason, except that it's simpler - do the simplest thing first that works [00:22:31] if you delay it til slightly after parse time, then you don't lose any expressiveness, metaprogramming, anything, you just dont end up with parsing words that do funky stuff, like wget things, etc [00:23:04] LACampbell: what's the concept for the language? [00:24:38] erg, I want to have a go at a statically typed high level language that I can easily embed in C or C++ apps [00:25:12] I feel like making something embeddable is really raises the odds that I will use it in anger [00:25:42] also that lets me be lazy and do a single pass compiler, and a simple loop and switch VM [00:25:44] I don't think Factor is that language right now. [00:25:45] haha. factor started as a scripting language for a java game [00:26:06] bmp: yeah, he wanted to write his own [00:26:11] Yeah, but we've drifted a lot. :) [00:26:49] haha yeah I originally read that's how it was done [00:27:45] going to get KEBABS brb [00:28:38] also - currently unemployed, I hope I can showcase my amazing C++ skills with this project (lots of sarcasm) [00:29:51] I've read through the koopman book, it's the main source of inspiration so far [00:30:11] that and "starting forth" [00:38:33] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has joined the channel. [00:59:48] * Arahael [Arahael!~arahael@DC-55-46.bpb.bigpond.com] has joined the channel. [01:00:52] * fuzzyhorns [fuzzyhorns!~fuzzyhorn@c-73-38-57-191.hsd1.ma.comcast.net] has joined the channel. [01:19:09] * evincar [evincar!~jonathanp@75-142-42-181.dhcp.reno.nv.charter.com] has quit (Ping timeout: 246 seconds). [01:58:31] * LACampbell [LACampbell!~lewis@122.58.183.197] has quit (Ping timeout: 272 seconds). [02:14:07] * FreeFull_ is now known as FreeFull [03:35:26] * fuzzyhorns [fuzzyhorns!~fuzzyhorn@c-73-38-57-191.hsd1.ma.comcast.net] has quit (Quit: Leaving.). [04:43:54] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has quit (Ping timeout: 246 seconds). [05:38:55] * so [so!~so@unaffiliated/so] has joined the channel. [05:54:02] * so [so!~so@unaffiliated/so] has quit (*.net *.split). [05:59:40] * so [so!~so@unaffiliated/so] has joined the channel. [08:48:33] * neptunepink [neptunepink!~root@2601:640:c300:1620:230:48ff:feb0:6d7e] has quit (Ping timeout: 250 seconds). [09:06:29] * NPException [NPException!~NPExcepti@bps-gw.hrz.tu-chemnitz.de] has joined the channel. [12:06:29] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has joined the channel. [12:09:17] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has quit (Client Quit). [12:09:37] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has joined the channel. [13:11:54] * delvinj [delvinj!~Miranda@173-160-116-46-Minnesota.hfc.comcastbusiness.net] has joined the channel. [13:50:09] * groovy2shoes [groovy2shoes!~groovy2sh@unaffiliated/groovebot] has quit (Ping timeout: 250 seconds). [14:50:23] * NPException [NPException!~NPExcepti@bps-gw.hrz.tu-chemnitz.de] has quit (Remote host closed the connection). [17:06:19] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has quit (Ping timeout: 276 seconds). [17:06:40] * jlewis [jlewis!~jlewis@unaffiliated/jordanlewis] has joined the channel. [17:06:47] * jlewis [jlewis!~jlewis@unaffiliated/jordanlewis] has quit (Client Quit). [17:10:50] * jlewis [jlewis!~jlewis@unaffiliated/jordanlewis] has joined the channel. [17:10:59] * jlewis [jlewis!~jlewis@unaffiliated/jordanlewis] has quit (Client Quit). [17:11:14] * jlewis [jlewis!~jlewis@unaffiliated/jordanlewis] has joined the channel. [17:11:29] * jlewis [jlewis!~jlewis@unaffiliated/jordanlewis] has quit (Client Quit). [17:12:45] * jlewis [jlewis!~jlewis@unaffiliated/jordanlewis] has joined the channel. [17:32:18] * rgrinberg [rgrinberg!~rgrinberg@cp209-202-78-3.cp.telus.net] has joined the channel. [17:46:26] * saml [saml!~saml@adfb12c6.cst.lightpath.net] has joined the channel. [17:46:38] is concatenative good? [17:47:11] or is it different way to express but does not add much value other than being different [17:54:31] * delvinj [delvinj!~Miranda@173-160-116-46-Minnesota.hfc.comcastbusiness.net] has quit (Quit: it's the end). [18:03:56] https://github.com/papers-we-love/papers-we-love/blob/master/functional_programming/concatenative-programming-an-overlooked-paradigm.pdf is there source code of this language Concat somewhere? [18:14:11] * neptunepink [neptunepink!~root@2601:640:c300:1620:230:48ff:feb0:6d7e] has joined the channel. [18:22:08] saml: it does add value [18:22:47] and subtract other values [18:22:57] making it less or equal overall? [18:26:54] Sonderblade, sorry to butt in, but what is your language of choice if I may ask? :) [18:27:13] factor [18:27:36] suppi: it's factor [18:27:49] alright :) [18:27:52] thanks [18:28:04] mine is javascript [18:28:48] saml: i dont think concatenative is "less or equal overall" but you have to try and judge for yourself [20:06:10] * fuzzyhorns [fuzzyhorns!~fuzzyhorn@c-73-38-57-191.hsd1.ma.comcast.net] has joined the channel. [20:57:21] * rgrinberg [rgrinberg!~rgrinberg@cp209-202-78-3.cp.telus.net] has quit (Quit: WeeChat 1.5). [20:57:47] * rgrinberg [rgrinberg!~rgrinberg@cp209-202-78-3.cp.telus.net] has joined the channel. [21:27:44] * rgrinberg [rgrinberg!~rgrinberg@cp209-202-78-3.cp.telus.net] has quit (Ping timeout: 252 seconds). [21:31:22] * jlewis [jlewis!~jlewis@unaffiliated/jordanlewis] has quit (Quit: Lost terminal). [21:38:05] * evincar [evincar!~jonathanp@75-142-42-181.dhcp.reno.nv.charter.com] has joined the channel. [21:42:46] * jlewis [jlewis!~jlewis@unaffiliated/jordanlewis] has joined the channel. [21:53:22] * fuzzyhorns [fuzzyhorns!~fuzzyhorn@c-73-38-57-191.hsd1.ma.comcast.net] has quit (Quit: Leaving.). [22:21:49] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has joined the channel. [22:25:14] * evincar [evincar!~jonathanp@75-142-42-181.dhcp.reno.nv.charter.com] has quit (Ping timeout: 260 seconds). [22:38:02] * fuzzyhorns [fuzzyhorns!~fuzzyhorn@c-73-38-57-191.hsd1.ma.comcast.net] has joined the channel. [23:08:20] * fuzzyhorns [fuzzyhorns!~fuzzyhorn@c-73-38-57-191.hsd1.ma.comcast.net] has quit (Quit: Leaving.). [23:45:23] * evincar [evincar!~jonathanp@75-142-42-181.dhcp.reno.nv.charter.com] has joined the channel. [23:56:55] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has quit (Ping timeout: 240 seconds).