[00:09:39] * j-pb [j-pb!~j_pb@87.253.189.132] has quit (Read error: Connection reset by peer). [00:15:22] http://kittenlang.org/ is statically typed. it types functions over the whole stack [00:16:35] * adrusi [adrusi!adrusi@noblejury.com] has joined the channel. [00:17:22] an "apply" signature would probably look like `[a (a -> b) .. s1] -> [b .. s1]` [00:17:54] (the notation is pseudocode, i already forgot what is kitten's notation for that) [00:19:05] oh, there is something: [00:19:06] 1 >>> :t apply [00:19:06] (s1... (s1... -> s2...) -> s2...) [00:20:12] and `1 2 \+ apply` leaves 3 in the stack [00:22:41] defanor: Yep, new notation would be (S1..., (S1... -> S2...) -> S2...0 [00:22:49] s/0/)/ [00:22:52] * j-pb [j-pb!~j_pb@87.253.189.132] has joined the channel. [00:22:55] But the idea is the same, clearly. [00:24:35] You can also have a family of functions, apply_1_1 :: (A, (A -> B) -> B); apply_2_1 :: (A, B, (A, B -> C) -> C); ... [00:24:55] That lets you avoid ever talking about arbitrary numbers of things on the stack. [00:25:10] nice. is that new version on hackage yet? [00:25:25] (I tried implementing a system like that, but making it usable and typechecking it efficiently didn't seem possible.) [00:25:37] Nope, still working on it. [00:25:40] oh, even s/hackage/github/. apparently i have a github version here [00:25:43] ah [00:25:53] I was on vacation for a while recently. [00:26:07] The last thing I did was to start an LLVM backend. [00:26:41] The new compiler is in a branch on GitHub: https://github.com/evincarofautumn/kitten/tree/new/new [00:27:20] It doesn't actually "compile" much, being mainly a new architecture & typechecker. [00:40:13] * j-pb [j-pb!~j_pb@87.253.189.132] has quit (Remote host closed the connection). [00:48:01] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has joined the channel. [00:52:20] are there any concatenative languages that make function stack more accessible than usual -- i.e., just one special function to put terms from a regular stack into a function stack (as a new function), maybe something to edit it, and so on? i'm picturing it quite vaguely, but it seems like it may be more minimalistic in its design [00:55:42] though maybe it's not even about stack accessibility, but about avoiding different modes [01:22:36] * evincar [evincar!~jonathanp@208.87.56.202] has quit (Ping timeout: 258 seconds). [02:19:15] * jtimon [jtimon!~quassel@55.31.134.37.dynamic.jazztel.es] has quit (Ping timeout: 252 seconds). [03:07:39] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has quit (Ping timeout: 258 seconds). [03:23:48] * kssreeram [kssreeram!~kssreeram@49.207.188.186] has joined the channel. [03:43:17] * kssreeram [kssreeram!~kssreeram@49.207.188.186] has quit (Quit: My Mac has gone to sleep. ZZZzzz…). [09:17:35] * jtimon [jtimon!~quassel@55.31.134.37.dynamic.jazztel.es] has joined the channel. [09:31:44] * jtimon [jtimon!~quassel@55.31.134.37.dynamic.jazztel.es] has quit (Ping timeout: 244 seconds). [11:46:12] * jtimon [jtimon!~quassel@55.31.134.37.dynamic.jazztel.es] has joined the channel. [11:47:01] * jtimon [jtimon!~quassel@55.31.134.37.dynamic.jazztel.es] has quit (Remote host closed the connection). [12:13:37] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has joined the channel. [12:22:54] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has quit (Quit: WeeChat 1.5). [12:23:14] * rgrinberg [rgrinberg!~rgrinberg@24-246-56-85.cable.teksavvy.com] has joined the channel. [14:32:24] * so [so!~so@unaffiliated/so] has quit (Max SendQ exceeded). [14:47:56] defanor: what is a function stack? [14:58:39] Sonderblade: the one into which functions are stored. though it's possible that i'm confusing terminology here, haven't managed to find that in the place i thought i've read that from (jonesforth.S) [15:00:21] s/stack/dictionary/, perhaps [15:01:42] the place where function definitions are stored, in other words [15:02:31] it seems odd to me that there's a separate mode used to define them. though it makes sense in a small asm implementation, it seems like it may be nicer in a high-level one [15:12:13] defanor: ic. storing function definitions on a stack is not such a great idea because they are usually looked up by name rather than their stack position [15:13:16] yup, for some reason i thought there were 3 stacks, and not 2 stacks and a dictionary. though that part is not that importantant for the question [15:15:25] in factor, functions or words are just objects like strings, array and other data so you can easily get hold of their definitions [15:15:53] interesting. will check it, thanks [15:15:59] e.g: "sequences" load-vocab words>> "member-eq?" of def>> but there are many other ways to do it too [15:32:47] * so [so!~so@unaffiliated/so] has joined the channel. [17:36:09] * Carisius [Carisius!~Carisius@cm-188-171-4-60.telecable.es] has joined the channel. [19:12:54] * Carisius [Carisius!~Carisius@cm-188-171-4-60.telecable.es] has quit (Ping timeout: 252 seconds). [20:37:34] * evincar [evincar!~jonathanp@208.87.56.202] has joined the channel. [21:03:59] * FreeFull [FreeFull!~freefull@defocus/sausage-lover] has quit (Quit: reboot). [22:11:01] * evincar [evincar!~jonathanp@208.87.56.202] has quit (Read error: Connection reset by peer). [22:31:05] * evincar [evincar!~jonathanp@208.87.56.202] has joined the channel. [22:47:21] * FreeFull [FreeFull!~freefull@defocus/sausage-lover] has joined the channel. [23:21:34] You could store the dictionary on a "stack" of sorts. [23:22:19] Just place all the entries adjacent in memory, on a downward-growing stack so the top of the stack is the "last definition" pointer. [23:22:23] It doesn't really buy you anything...