[00:14:06] trying to build kitten isn't working very well [00:14:49] I've got GHC 8 [00:16:10] can I hack the stack.yaml somehow [00:17:47] what is lts-5.2 [00:19:01] ok I changed it to lts-8.15 [00:19:40] actually 8.17 [00:19:48] https://github.com/fpco/lts-haskell [00:19:50] https://www.stackage.org/lts [00:21:33] apparently these latest ones are for GHC 8.0.2 and I have 8.0.1-1 [00:25:25] ugh can't get none of these to work [00:25:53] stack config set system-ghc --global true [00:26:10] finally [00:27:10] stack is kind of ridiculous. It's like virtualenv, except it wants to build freakin' GHC from source, and probably all the libraries too. [00:27:24] well that's what I don't want [00:27:29] That approach works for Python, because you don't have to rebuild it. [00:27:36] And GHC is a beast. [00:28:21] for Cat all I had to do was mcs *.cs [some flags] and it compiled and I could run it in Mono [00:28:26] I don't think I've ever had the patience to build something with stack. [00:29:56] you know what would be really cool? making Cat work [00:30:13] I prefer the pre-Stack Haskell ecosystem, because even though many packages were broken, there was some incentive to port to the latest GHC version. [00:30:54] what you mean cabal or whatever it was? [00:31:01] I doubt anyone is going to help you fix Cat. [00:31:48] great so I have to do it myself [00:32:00] I downloaded a ton of papers about sequence unification [00:32:09] Yeah, cabal. [00:32:26] cabal was terrible from all memories I have [00:33:34] It's not clear that HM+row type inference has been solved, and IMHO it's not a great idea anyway. [00:34:07] I think it was mainly inspired by the embedding of a concatenative language into Haskell. [00:35:01] do you mean it's just fundamentally flawed or what? [00:35:36] https://github.com/leonidas/codeblog/blob/master/2012/2012-02-17-concatenative-haskell.md [00:39:01] The whole purpose of row types are to make variable-arity combinators, but the cost for a slight reduction in verbosity is inability to even determine what any combinator will do, and makes graph representation impossible, so efficient compilation is impossible. [00:39:51] It's really hard to efficiently handle efficient compilation when you don't exactly know where the inputs will come from, and where the outputs will go. [00:40:29] It's hard that handling variable arity in, say, C, because changing the arity can change the entire program by shifting the stack. [00:41:43] I started out trying to implement it, but I when I realized I couldn't even write 'map' in a way that is guaranteed to behave like map should, I abandoned row types. [00:42:30] I found that they aren't really necessary, or even desirable. [00:42:57] I'm not sure what row types are referring to or if it has anything to do with the sequence unification I was talking about [00:43:09] FWIW this is how I encoded map in starpial [00:43:16] @map?[`@t `@xs {t*}@ts ts [t => xs..] => {ts map[! xs] each[..]}]: {#{x>xs}#f x f# map(xs,f)..}`{#_#_}# [00:43:52] dup: A b --> A b b [00:43:57] A is a row type [00:44:30] I feel like they're necessary.. [00:44:38] what's the alternative? [00:44:51] Popr doesn't use them. [00:45:17] you have weird fixed arity combinators though [00:45:42] No I don't. [00:46:19] what was that ap12 and stuff [00:46:41] What I found is that quotes are not functions, and you can control the arity of quotes by only pushing and popping as needed. [00:47:22] So you can treat [dup] as if it were [id] by just popping one argument. [00:47:38] And dropping the rest. [00:48:18] apNM has a fixed arity for each {N,M}. They are simply a family of primitive functions. [00:48:59] The compiler cheats, of course, but I could define them for N = 0..9, M = 0..9 if I wanted to. [00:49:15] So they are 100 primitives. [00:49:22] cheating is fine [00:50:36] hm my kitten is ready [00:50:54] I bet the vocabulary is completely different yet again [00:52:13] oh dear god what is this mess it's printing out for //type [00:52:48] actually I get it, but I don't know why the variables need to be as long as T200218 [00:56:46] oh come on don't tell me that I can't define a function without stating the type [01:00:26] hackerfoo: any ideas why I can't write "define fix: -> f; {f fix} f call" nor "define fix -> f { {f fix} f call }"??? [01:02:08] the very limited docs seem to imply that I should be able to write stuff without a type signature [01:11:34] ((A... -> A..., ((J..., g, h, ((K..., g -> K..., e, i)), ((L..., f -> L..., d, h)) -> J..., e, d, c)) b)) [01:11:44] manually wrote it out into something slightly sane [01:13:31] oh some of them had plus signs on I don't know what they are for? [01:17:00] nope I don't get it [01:21:47] maybe if I delete the ones with plus signs [01:23:06] ((A... -> A..., ((J..., g, ((K..., g -> K..., e)), ((L..., f -> L..., d)) -> J..., e, d)) )) [01:26:19] oh I made a booboo [01:26:29] ((A... -> A..., ((J..., g, f, ((K..., g -> K..., e)), ((L..., f -> L..., d)) -> J..., e, d)) )) [01:43:54] define fix (A..., (A..., (A... -> B...) -> B...) -> B...) -> f { {f fix} f call } [01:44:37] well it accepts that at least [01:44:49] I think + is for effects [01:45:22] they always seem to be tacked onto the end of stack effects so yeah maybe [01:45:57] it's not entirely clear what purpose they serve [01:48:14] Here's some slides if they help: https://docs.google.com/presentation/d/1SJQGow_fnMSt5PsMgESumKhqlcnIQoFK_wQPkxpwWKU [01:48:41] probably wouldn't hurt [01:50:31] C++ has poor usability?? [02:07:35] hm I like the distinction of to_both both_to and both [02:13:05] * Sgeo_ [Sgeo_!~Sgeo@ool-18e4354b.dyn.optonline.net] has quit (Read error: Connection reset by peer). [02:17:54] * Sgeo [Sgeo!~Sgeo@ool-18e4354b.dyn.optonline.net] has joined the channel. [07:44:55] * jtimon [jtimon!~quassel@117.29.134.37.dynamic.jazztel.es] has quit (Ping timeout: 240 seconds). [13:37:55] * jtimon [jtimon!~quassel@117.29.134.37.dynamic.jazztel.es] has joined the channel. [15:03:59] * Sgeo_ [Sgeo_!~Sgeo@ool-18e4354b.dyn.optonline.net] has joined the channel. [15:05:28] * Sgeo [Sgeo!~Sgeo@ool-18e4354b.dyn.optonline.net] has quit (Ping timeout: 240 seconds). [15:51:55] * Sgeo__ [Sgeo__!~Sgeo@ool-18e4354b.dyn.optonline.net] has joined the channel. [15:53:48] * Sgeo_ [Sgeo_!~Sgeo@ool-18e4354b.dyn.optonline.net] has quit (Ping timeout: 240 seconds). [16:06:23] * Sgeo [Sgeo!~Sgeo@ool-18e4354b.dyn.optonline.net] has joined the channel. [16:07:48] * Sgeo__ [Sgeo__!~Sgeo@ool-18e4354b.dyn.optonline.net] has quit (Ping timeout: 240 seconds). [16:46:16] * groovy2shoes [groovy2shoes!~groovy2sh@unaffiliated/groovebot] has quit (Remote host closed the connection). [19:45:34] * groovy2shoes [groovy2shoes!~groovy2sh@unaffiliated/groovebot] has joined the channel. [19:59:29] * jtimon [jtimon!~quassel@117.29.134.37.dynamic.jazztel.es] has quit (Ping timeout: 240 seconds). [21:49:04] * tgunr [tgunr!~davec@cpe-76-173-83-160.hawaii.res.rr.com] has joined the channel. [22:37:02] * flogbot [flogbot!~flogbot@2001:4800:7814:0:2804:b05a:ff04:4ba7] has quit (Ping timeout: 260 seconds). [22:37:26] * flogbot [flogbot!~flogbot@2001:4800:7814:0:2804:b05a:ff04:4ba7] has joined the channel. [22:37:26] :wilhelm.freenode.net 353 flogbot = #concatenative :flogbot tgunr groovy2shoes Sgeo lonjil FreeFull mollerse dustinm` MDude kernelj rotty rgrinberg puckipedia otoburb shmibs PiDelport bmp jeremyheiler kanzure strmpnk hackerfoo m_hackerfoo diginet doublec ephe_meral jeaye rjungemann merry koisoke erg shachaf earl_ carvite flout [22:37:26] :wilhelm.freenode.net 366 flogbot #concatenative :End of /NAMES list. [23:08:31] * jtimon [jtimon!~quassel@117.29.134.37.dynamic.jazztel.es] has joined the channel.