[00:07:20] * ubolonton [ubolonton!~ubolonton@171.233.75.238] has joined the channel. [00:43:21] * ubolonton [ubolonton!~ubolonton@171.233.75.238] has quit (Quit: ubolonton). [05:08:40] * Sgeo_ [Sgeo_!~Sgeo@ool-18e4354b.dyn.optonline.net] has joined the channel. [05:10:49] * Sgeo [Sgeo!~Sgeo@ool-18e4354b.dyn.optonline.net] has quit (Ping timeout: 240 seconds). [05:31:16] * jtimon [jtimon!~quassel@117.29.134.37.dynamic.jazztel.es] has quit (Ping timeout: 246 seconds). [08:34:09] decided to have stack effects like [ => ] or [ =>$ ] for ones that have side effects [08:34:26] so if you have the first form you know it's pure [08:36:32] actually nah, it might signify that it *might* be pure [08:37:08] really I need a way to show that the purity is dependent on some inputs [08:44:24] *might* be pure isn't very useful, *definitely* pure is [09:01:24] so then =>$ is more general than => [09:37:04] @multi?[`@zss?{{`@*}+} head(zss).. ~v ~fs\({drop(zss) tail(zss)}zipwith:#xs#ys [xs.. v =>$ ys..]) =>$[fs..] top(zss)..]: #v#l l each[#f v f#] [09:37:34] just gets more and more fun these types [09:51:05] (realises that to_both is the same as bi) [09:51:18] (both_to rather) [09:52:42] meh I'm just gonna call to_both both again it's not like the proper both you can't just write dip[f#] g# [09:56:17] actually I'll rename it twice [09:56:27] then I can have thrice as well :D [09:57:45] #f dip(twice(f)) f# [09:59:26] fail I of course mean @thrice:#f dip[twice(f)] f# [10:23:59] now I'm thinking I should rename twice and thrice to just apply2 and apply3 [10:29:12] interesting [10:29:14] @curry?[`@xs `@ys ~t ~f\[xs.. t =>$ ys..] => [xs.. =>$[f] ys [10:29:33] ..]]: #x#f [x f#] [10:30:20] so curry itself is pure but it creates a quotation that is unpure if the input one is impure [10:41:24] weird... in kitten if you do [1 2] you get 1 [2] [10:41:59] [1 2,3 4] gives 1 2 [3,4] [10:44:20] 1 2 3 [(+) 4] gives 1 5 [4] [10:45:34] not sure I like this way of doing things [10:45:49] it requires your lists to be fixed arity [10:47:44] Starpial gives you a new stack when you open with { [10:48:13] with stack underflow, and everything you put in goes into the list [10:48:50] Kitten doesn't even allow you to have trailing commas to control the arity :( [10:50:40] define nop (->) { } [10:51:36] [1 2 3 4 5, nop, nop, nop, nop] [10:51:46] laaaaaaaame [11:05:36] @compose?[`@xs `@ys `@zs ~f\[xs.. =>$ ys..] ~g\[ys.. =>$ zs..] => [xs.. =>$[f g] zs..]]: #f#g [f# g#] [11:15:34] where does 'draw' in kitten draw to...? [11:18:41] off topic: Exploding Kittens sounds like a fun card game [11:32:26] ok I figured it out from looking at the code [11:32:28] https://iterm2.com/documentation-images.html [11:36:51] *sigh* mac only [12:31:08] man I just thought of a epic major change to Starpial [12:31:23] thinnking of getting rid of the whole {>} {<} pattern thing [12:32:19] and just going with variables combined with .. (spill) * (kleene star with projections) + (like regex) and ? (like regex) [12:33:20] came across this when in type land I end up building [=>] as a data structure and {} is also a data structure but I'm treating them differently [12:33:36] they should all use the same syntax [12:35:05] man this is such a huge change, good job I haven't written any interpreter yet [13:07:34] * jtimon [jtimon!~quassel@117.29.134.37.dynamic.jazztel.es] has joined the channel. [13:30:10] not sure the projections part makes sense [13:37:05] would help if I'd actually used projections anywhere [13:37:57] otherwise zipwith and map do the job [13:42:55] but yeah I'm getting rid of all those awful `@ with this simple matching trick [14:26:15] I've updated the asm.js version of the PoprC. It should be more robust now: http://hackerfoo.com/eval.html [14:47:09] cool [14:47:56] * lonjil [lonjil!~quassel@2a02:418:6050:ed15:ed15:ed15:e741:32d6] has quit (Quit: No Ping reply in 180 seconds.). [14:48:40] * lonjil [lonjil!~quassel@2a02:418:6050:ed15:ed15:ed15:e741:32d6] has joined the channel. [14:54:46] ok I think I'm going to keep projections [14:55:25] when you have a normal binder enclosed in a * + or ? it turns into a list, then list of lists etc. [14:55:57] can be used with lists {a b c}* or stack effects [xs.. => ys..]* [14:58:01] if you don't want a projection you enclose in () so {a (b) (c)}* only a is projected [14:58:21] b and c are fixed values that are repeated and bound elsewhere [15:01:37] interestingly the new syntax was already valid according to one of my notes [15:05:19] now I'm rewriting if/elif/else/endif so the combinator object doesn't use mutation and it just returns a new value of itself [15:05:37] the way it was working it changed type which is kinda wrong [15:06:12] the type is parameterised by an input vector and a list of possible stack effects from the various branches [15:07:15] and then non-determinism is used in the type system to execute the branch [15:07:41] it then unifies the possible branches with the actual branch that is taken [15:11:30] * Sgeo_ [Sgeo_!~Sgeo@ool-18e4354b.dyn.optonline.net] has quit (Ping timeout: 240 seconds). [15:22:39] * Sgeo [Sgeo!~Sgeo@ool-18e4354b.dyn.optonline.net] has joined the channel. [15:36:19] I've still got the ifchain changing type.. [15:38:05] because when the branch is already set it returns itself [15:42:23] I guess just because it's one type it can't be another more general one [15:42:56] seems like a weird sort of subtyping [15:50:44] anyway that looks done now, I shall continue on with the prelude [16:26:40] @fix?[xs.. ~f\[xs.. [xs.. =>$[f] ys..] =>$ ys..] =>$[f] ys..]: #f f[f fix]# [16:27:33] whether the argument to f is allowed to be pure depends on whether f is pure [16:28:00] things getting more complicated and interesting... [17:46:00] I think I'll rename a few shuffle words to be more like Factor [17:47:09] dip -> over -> pick -> ... getn [17:47:21] for the dependent variable arity one [17:47:36] s/dip/dup [17:49:18] currently I don't allow my words to start with digits so things are a bit backwards [17:49:57] dup -> over -> pick -> nget [17:50:08] dup2 -> over2 -> pick2 -> nget2 [17:50:14] dup3 -> over3 -> pick3 -> nget3 [17:50:46] 4 dupn -> 4 overn -> 4 pickn -> 4 ngetn [17:51:09] I guess... that works...!!1! [18:28:27] yeah the Factor names are a bit weird [18:28:40] bi bi* bi@ [18:29:10] Starpial: bi both apply2 [20:02:13] mmmph I can't get the option syntax to work in Kitten [20:08:49] I'm totally lost [20:09:00] match doesn't seem to work even [20:12:05] ok I'm using it wrong for it's new syntax [20:29:35] don't see much reason for not keeping the old syntax for option and choice [20:42:30] * tgunr [tgunr!~davec@cpe-76-173-83-160.hawaii.res.rr.com] has quit (Ping timeout: 240 seconds). [20:56:21] * tgunr [tgunr!~davec@cpe-76-173-83-160.hawaii.res.rr.com] has joined the channel. [21:04:54] ugh kitten doesn't have File I/O [21:19:40] could anyone explain how to use popen in factor? A quick search thru the Factor sources reveals only the FFI declaration. I tried a "pwd" "r" popen and get back an alien, then I tried to read from the FH but little success [21:20:26] or is there a better way to interface to the shell? I want to make a program that controls my nftables [21:45:15] now I don't know how to make a UInt32 in Kitten [21:49:30] ah 0u32 [22:25:10] and yet the get/set list functions use Int32 and so I have to abandon the idea of using UInt32 [22:37:11] * flogbot [flogbot!~flogbot@2001:4800:7814:0:2804:b05a:ff04:4ba7] has quit (Ping timeout: 245 seconds). [22:37:19] * flogbot [flogbot!~flogbot@2001:4800:7814:0:2804:b05a:ff04:4ba7] has joined the channel. [22:37:20] :leguin.freenode.net 353 flogbot = #concatenative :flogbot tgunr Sgeo lonjil jtimon groovy2shoes FreeFull mollerse dustinm` MDude kernelj rotty rgrinberg flout carvite earl_ shachaf erg koisoke merry rjungemann jeaye ephe_meral doublec diginet m_hackerfoo hackerfoo strmpnk kanzure jeremyheiler bmp PiDelport shmibs otoburb puckipedia [22:37:20] :leguin.freenode.net 366 flogbot #concatenative :End of /NAMES list. [23:02:49] eeeeeeehhhhh I can't do match on numbers, how lame is this [23:53:12] * evincar [evincar!~jon@173-228-12-107.dsl.dynamic.fusionbroadband.com] has joined the channel.