00:00:00 --- log: started forth/17.01.07 00:00:42 --- join: neceve (~ncv@79.115.225.255) joined #forth 00:00:42 --- quit: neceve (Changing host) 00:00:42 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 00:19:43 --- quit: Vendan (Ping timeout: 244 seconds) 00:20:16 --- join: Vendan (~Vendan@li469-176.members.linode.com) joined #forth 02:09:13 --- quit: mnemnia (Remote host closed the connection) 03:09:43 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:b41f:8c38:87eb:7fb9) joined #forth 03:16:05 --- quit: mnemnion (Ping timeout: 255 seconds) 03:55:50 --- join: mat4 (~Claude@ip5b4115b1.dynamic.kabel-deutschland.de) joined #forth 04:14:37 --- quit: zincing (Quit: Leaving) 04:15:20 --- quit: impomatic (Quit: http://corewar.co.uk) 05:29:25 --- quit: mat4 (Quit: Verlassend) 05:41:17 --- join: dys (~dys@ip-109-44-0-222.web.vodafone.de) joined #forth 05:50:28 --- join: zincing (~zincing@2a03:1b20:2:f702::f1de) joined #forth 05:56:15 --- join: novavis (~user@host210-66-dynamic.13-79-r.retail.telecomitalia.it) joined #forth 07:20:54 --- quit: zincing (Quit: Leaving) 07:33:16 --- join: karswell (~user@252.135.46.217.dyn.plus.net) joined #forth 08:00:23 --- quit: MrBusiness (Ping timeout: 272 seconds) 08:50:48 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 08:51:43 --- quit: Zarutian (Read error: Connection reset by peer) 08:52:00 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 09:28:43 --- join: MrBusiness (~ArcMrBism@104-50-90-48.lightspeed.brhmal.sbcglobal.net) joined #forth 10:14:58 --- join: mat4 (~Claude@ip5b409e06.dynamic.kabel-deutschland.de) joined #forth 10:34:49 --- quit: gravicappa (Ping timeout: 255 seconds) 10:55:11 --- join: malyn (~malyn@54.201.34.233) joined #forth 11:09:55 --- join: newuser|76345 (43a84a88@gateway/web/cgi-irc/kiwiirc.com/ip.67.168.74.136) joined #forth 11:14:24 --- quit: newuser|76345 (Client Quit) 11:35:17 --- quit: mat4 (Quit: Verlassend) 12:18:20 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:b41f:8c38:87eb:7fb9) joined #forth 14:19:58 --- quit: true-grue (Read error: Connection reset by peer) 16:01:58 --- quit: mnemnion (Ping timeout: 255 seconds) 16:11:08 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:288e:3900:9fe9:7f43) joined #forth 16:12:02 --- join: mnemnia (~mnemnion@2601:643:8102:7c95:3141:52c2:1908:b57b) joined #forth 16:15:55 --- quit: mnemnion (Ping timeout: 255 seconds) 16:21:13 Writing websites in forth 16:21:19 --- quit: mnemnia (Ping timeout: 255 seconds) 16:30:20 --- quit: neceve (Quit: Konversation terminated!) 16:30:56 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:19ef:ace5:e355:3f) joined #forth 16:35:42 --- quit: mnemnion (Ping timeout: 255 seconds) 16:35:47 --- join: mnemnia (~mnemnion@71.198.73.193) joined #forth 16:39:08 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 16:40:12 --- quit: mnemnia (Ping timeout: 255 seconds) 16:44:10 --- join: mnemnia (~mnemnion@71.198.73.193) joined #forth 16:46:30 --- quit: mnemnion (Ping timeout: 255 seconds) 16:46:31 --- join: mnemnion_ (~mnemnion@2601:643:8102:7c95:bd09:a262:cd08:197a) joined #forth 16:47:55 --- join: ricky_ricardo (~rickyrica@2601:240:4203:ecb0:4450:c8fa:a607:2477) joined #forth 16:48:41 --- quit: mnemnia (Ping timeout: 248 seconds) 16:49:42 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 16:52:49 --- quit: mnemnion_ (Ping timeout: 255 seconds) 17:04:33 --- join: Mat4 (~claude4@ip5b410187.dynamic.kabel-deutschland.de) joined #forth 17:12:47 --- join: mnemnia (~mnemnion@71.198.73.193) joined #forth 17:13:07 --- quit: mnemnion (Read error: Connection reset by peer) 17:14:04 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 17:17:13 --- quit: mnemnia (Ping timeout: 245 seconds) 17:26:11 --- quit: Mat4 (Quit: Leaving) 17:27:52 --- join: mnemnia (~mnemnion@2601:643:8102:7c95:956c:567e:9284:c68c) joined #forth 17:31:00 --- quit: mnemnion (Ping timeout: 240 seconds) 17:32:47 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 17:36:27 --- quit: mnemnia (Ping timeout: 255 seconds) 17:40:57 --- join: mnemnia (~mnemnion@2601:643:8102:7c95:c0a1:6763:d542:c4f6) joined #forth 17:44:00 --- quit: mnemnion (Ping timeout: 240 seconds) 18:25:57 --- quit: ricky_ricardo (Ping timeout: 255 seconds) 18:29:20 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 18:32:15 --- quit: mnemnia (Ping timeout: 255 seconds) 19:40:33 --- join: mnemnia (~mnemnion@2601:643:8102:7c95:e0d2:70cb:944d:be4f) joined #forth 19:42:37 --- quit: Zarutian (Quit: Zarutian) 19:43:37 --- quit: mnemnion (Ping timeout: 248 seconds) 20:30:04 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 20:33:45 --- quit: mnemnia (Ping timeout: 255 seconds) 20:40:51 --- join: mnemnia (~mnemnion@2601:643:8102:7c95:11d3:503c:15cc:b6f3) joined #forth 20:41:10 --- quit: mnemnion (Read error: No route to host) 20:41:40 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 20:42:36 --- quit: mnemnion (Read error: Connection reset by peer) 20:43:01 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 20:43:16 --- quit: mnemnion (Read error: Connection reset by peer) 20:43:40 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 20:44:39 --- join: mnemnion_ (~mnemnion@71.198.73.193) joined #forth 20:45:27 --- quit: mnemnia (Ping timeout: 255 seconds) 20:47:52 --- quit: mnemnion (Ping timeout: 240 seconds) 21:03:22 --- quit: mnemnion_ (Remote host closed the connection) 21:08:02 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 21:21:54 --- join: gravicappa (~gravicapp@h62-133-162-176.static.bashtel.ru) joined #forth 21:47:57 --- join: event-horizon (~event-hor@2001:8003:f10b:2d00:f66d:4ff:fe58:ff4b) joined #forth 22:01:44 --- quit: npr (Quit: ZNC 1.6.3 - http://znc.in) 22:35:35 --- join: mat4 (~Claude@ip5b4106f5.dynamic.kabel-deutschland.de) joined #forth 22:39:58 --- quit: mat4 (Client Quit) 22:51:45 My concatenative javascript is actually becoming very lispy now 22:54:20 The key is in the ability to quote blocks of code 22:54:52 In joylang they accomplish functional programming not through lambdas but by quoting blocks of code 22:55:04 and in factor they also quote blocks of code using brackets 22:55:29 this has certain advantages, for example since you can push a quoted block of code onto the stack, you can have loops which are not infix notation 22:56:13 [clause1] [clause2] loop 22:56:20 or rather that's the if block 22:56:37 number-of-times-to-loop [statments to loop over] loop 22:59:16 so 5 [2 +] loop would add 2 five times 23:00:04 similarly with if-then you do truth-value [true-clause] [false-clause] if 23:00:32 this is very similar to lisp only there is a key difference 23:00:45 if [this was evaluated as lisp] then the word this would be the function and the rest would have to be arguments 23:01:01 [whereas when we write this in factor] every single word can be thought of as a function which takes a stack and returns a stack 23:01:37 was about to say, that is how factor does it under the hood 23:01:48 mine is very similar to factor, now 23:01:55 --- nick: koisoke_ -> koisoke 23:02:17 In the original concatenative javascript style you write push(2); push(2); plus(); console_log_pop() 23:02:45 now you can push([2,2,plus,console_log_pop]); runstack() 23:02:59 or you can simply run_stack([2,2,plus,console_log_pop]) 23:03:32 and I can nest these inside of each other though I forget how to do it at the moment 23:04:12 dhat does runstack() do? execute quotation from TOS, or dispatch until the stack is exhausted? 23:04:48 s/dhat/what/ 23:05:05 I meant ot type run_stack both times 23:05:18 run_stack takes an array a an argument and for every index of that array, it checks if the data in that index is a function. If it is a function it runs that function. Otherwise it pushes whatever what was in that index onto the stack. 23:05:39 if run_stack has no arguments it takes it's argument from pop() on the stack 23:05:59 this is why you can run_stack within run_stack 23:06:32 run_stack([[2], run_stack]) 23:07:11 you can not define functions or variables from within run_stack 23:07:29 to define them you must exit run_stack, define it, and then re-enter run_stack 23:07:39 seems misleadingly named? why not run_quote or similar? 23:07:51 I have thought about renaming it. I will consider it run_quote 23:08:12 I also like run_array 23:11:19 I've got plans to make something of a similar syntax in bash 23:11:32 instead of arrays I will use commands 23:12:36 in bash the arguments that commands recieve work very similarly to arrays, and so I believe I can nest these concatenatively 23:13:15 sure 23:14:28 not sure i get why run_stack can't be used recursively, unless it is also using the stack in ways not mentioned above 23:14:38 I had a recursive design but I scrapped it 23:18:54 *nod* 23:21:16 The reason being that first of all it added alot of overhead the way implemented it 23:21:26 and second of all because it ended up relying on ordinary javascript function recursion 23:21:36 so then I decided that if you want to recurse you can just do it in a javascript function 23:22:05 so to define a function you must do it in normal javascript and to define a recursive function you also do this normally 23:23:13 The thing is run_stack just runs blocks of code and recursion is meant to be done in a function's definition 23:23:43 and since I still could not define a function from within run_stack then I decided I could already recurse using normal javascript functions 23:29:04 my understanding of javascript is pretty marginal. is there something that normally prevents functions from disptaching themselves by reference? 23:29:32 There seems not to be a way to define a function from within an array 23:29:37 at least not in the way I would need 23:30:03 The problem is that if I define a function within run_stack then once run_stack is done executing that function is gone 23:30:29 that is because variables that get defined within functions are in the scope of those functions 23:31:00 i thought the array was just referencing already-defined functions? 23:31:19 Well the array is just an ordinary array 23:31:22 right 23:31:57 a function it's self can be assigned to an index of an array but only if that function is defined 23:33:08 yes. still not sure i'm catching the problem with run_quote recursion 23:33:13 or run_stack 23:33:23 run_stack is defined before the arrays are created 23:33:28 well run_stack as we will call it for now does not create a function 23:33:35 run_stack runs a block of code 23:33:45 and blocks of code themselves usually aren't recursive 23:33:53 it is function definitions that are recursive in javascript 23:33:57 and in many other languages 23:34:08 even in lisp you recurse from within the definition of a function 23:34:33 what is really necessary is the ability to define a function from the middle of an array in run_stack 23:34:53 OH. i thought run_stack was just iterating through the array and either pushing things onto the user-defined stack or else dispatching functions with no arguments 23:35:46 with ehm.. some distinction between fucntions defined in javascript and funcitons defined in the symbol table of your concatenative layer 23:36:02 so lets create a simple definition of run-stack 23:36:17 run_stack takes an array and pushes every single thing in that array onto the stack 23:36:27 with the exception that if that thing is a function it will run that function instead 23:36:59 if you want to push a function onto the stack you quote it 23:37:16 run_stack([[my_function]]) 23:37:41 then I can unquote() or I can run_stack again if all I want to do is run that function 23:40:15 ok 23:42:38 If I want to define a run_stack function I simply do this 23:43:08 const myfunction=function(){run_stack([my, stack, code])} 23:49:52 *nod* 23:50:52 const myrecursivefunction=function(){run_stack([10, plus]); myrecursivefunction()} 23:51:51 of course that particular one doesn't have an end condition 23:59:59 --- log: ended forth/17.01.07