2021-02-01T00:00:34Z tessier quit (Ping timeout: 264 seconds) 2021-02-01T00:01:32Z Zipheir: What happened to rudybot, anyway? 2021-02-01T00:06:20Z ArneBab quit (Read error: Connection reset by peer) 2021-02-01T00:07:36Z ArneBab joined #scheme 2021-02-01T00:12:12Z smazga joined #scheme 2021-02-01T00:17:58Z smazga quit (Ping timeout: 264 seconds) 2021-02-01T00:23:26Z amirouche1 joined #scheme 2021-02-01T00:26:35Z rgherdt quit (Ping timeout: 265 seconds) 2021-02-01T00:34:30Z ArneBab quit (Remote host closed the connection) 2021-02-01T00:35:16Z c7d9_ joined #scheme 2021-02-01T00:35:44Z ArneBab joined #scheme 2021-02-01T00:39:05Z c7d9 quit (Ping timeout: 240 seconds) 2021-02-01T00:39:31Z phillbush quit (Remote host closed the connection) 2021-02-01T00:39:32Z daviid quit (Ping timeout: 260 seconds) 2021-02-01T00:39:54Z phillbush joined #scheme 2021-02-01T00:49:08Z phillbush quit (Quit: Leaving) 2021-02-01T00:51:40Z ArneBab quit (Remote host closed the connection) 2021-02-01T00:52:46Z amirouche1 is now known as amirouche 2021-02-01T00:52:56Z ArneBab joined #scheme 2021-02-01T00:52:56Z ArneBab quit (Changing host) 2021-02-01T00:52:56Z ArneBab joined #scheme 2021-02-01T00:54:01Z amirouche: Riastradh: what do you recommend to read regarding LALR parsers? I want to implement a skribe reader that is a superset of s-exp 2021-02-01T00:54:42Z amirouche: I already did a poc with parser combinators but at least my parser combinator library does not have a lot of helper for handling errors 2021-02-01T00:55:40Z [d] quit (Ping timeout: 246 seconds) 2021-02-01T01:03:46Z smazga joined #scheme 2021-02-01T01:05:07Z daviid joined #scheme 2021-02-01T01:07:56Z smazga quit (Ping timeout: 240 seconds) 2021-02-01T01:15:58Z [d] joined #scheme 2021-02-01T01:22:16Z [d] quit (Ping timeout: 246 seconds) 2021-02-01T01:22:29Z aeth quit (Ping timeout: 272 seconds) 2021-02-01T01:22:50Z ArneBab quit (Remote host closed the connection) 2021-02-01T01:23:52Z aeth joined #scheme 2021-02-01T01:24:05Z ArneBab joined #scheme 2021-02-01T01:34:14Z torbo joined #scheme 2021-02-01T01:40:50Z ArneBab quit (Ping timeout: 264 seconds) 2021-02-01T01:41:07Z ArneBab joined #scheme 2021-02-01T01:41:07Z ArneBab quit (Changing host) 2021-02-01T01:41:07Z ArneBab joined #scheme 2021-02-01T01:41:33Z xlei quit (Ping timeout: 256 seconds) 2021-02-01T01:49:36Z smazga joined #scheme 2021-02-01T01:51:58Z ex_nihilo quit (Quit: Leaving) 2021-02-01T01:58:32Z ArneBab quit (Remote host closed the connection) 2021-02-01T01:59:46Z ArneBab joined #scheme 2021-02-01T02:00:34Z amirouche quit (Ping timeout: 264 seconds) 2021-02-01T02:06:58Z dieggsy: damn, i've just learned syntax-rules is more magical than i even thought 2021-02-01T02:07:05Z dieggsy: it's simple, but this (define-syntax test (syntax-rules () ((_ a b ...) (list (foo a) (foo b) ...) ))) is wild to me 2021-02-01T02:07:57Z dieggsy: (oh, youre just calling foo on the arg, i know how to do that! then if you pass c, d, it calls foo on the mtoo) 2021-02-01T02:08:12Z dieggsy: i guess it's basic stuff, but pretty neat stuff. i hadn't really used it that way, i guess 2021-02-01T02:09:32Z skapate joined #scheme 2021-02-01T02:09:34Z [d] joined #scheme 2021-02-01T02:13:09Z skapata quit (Ping timeout: 272 seconds) 2021-02-01T02:18:12Z ArneBab quit (Read error: Connection reset by peer) 2021-02-01T02:19:30Z ArneBab joined #scheme 2021-02-01T02:25:48Z smazga quit (Ping timeout: 256 seconds) 2021-02-01T02:26:43Z brainfunnel quit (Quit: thanks, bye!) 2021-02-01T02:28:59Z daviid quit (Ping timeout: 272 seconds) 2021-02-01T02:32:31Z jcowan: Zipheir: Here's the key explanation to ML overloading: "I found https://homepages.inf.ed.ac.uk/wadler/papers/class-letter/class-letter.txt, which explains how Edinburgh ML does it (and how Haskell does classes): First, type inference is performed, where the type of the overloaded identifier is taken to be the type given in the OVERLOAD declaration. Second, after type inference each occurrence of an overloaded identifier 2021-02-01T02:32:32Z jcowan: is examined. If its type matches that of an instance, then the identifier is replaced by the corresponding instance value. If its type matches no instance, then the overloading cannot be resolved, and an error is declared. 2021-02-01T02:34:36Z sudden quit (Ping timeout: 240 seconds) 2021-02-01T02:35:35Z madage quit (Ping timeout: 268 seconds) 2021-02-01T02:35:45Z sudden joined #scheme 2021-02-01T02:37:22Z madage joined #scheme 2021-02-01T02:37:55Z mdhughes: Despite the sexual connotations turning some people off, I like the BDSM comparison for static typing. It's a fetish for asking permission and being told no. 2021-02-01T02:38:35Z mdhughes: Dynamic is helpful. You say "hold this" and it says "OK". 2021-02-01T02:39:04Z mdhughes: Untyped is destructive, you hand a piano to the system and get back a bag of oranges. 2021-02-01T02:41:45Z teardown quit (Ping timeout: 268 seconds) 2021-02-01T02:42:41Z teardown joined #scheme 2021-02-01T02:44:42Z klovett quit (Remote host closed the connection) 2021-02-01T02:45:20Z klovett joined #scheme 2021-02-01T02:51:44Z Zipheir: Oh, please. 2021-02-01T02:52:20Z Zipheir: jcowan: Thanks! Yeah, that email is very helpful for the practical details. It's not a particularly complicated approach. 2021-02-01T02:53:19Z lockywolf: yay https://www.python.org/dev/peps/pep-0638/ 2021-02-01T02:57:24Z Zipheir: Debates about type systems are always overstuffed with metaphors. They're usually about as helpful as the burrito metaphor for monads. 2021-02-01T03:01:09Z jcowan chuckles. 2021-02-01T03:01:22Z jcowan: I don't think the burrito (i.e. container) metaphor for monads is fine. 2021-02-01T03:02:28Z Zipheir: Yeah, I suppose that's actually rather illustrative when you think about it. 2021-02-01T03:03:18Z mdhughes: Monads are the Alameda-Weehawken Burrito Tunnel. Non-lazy functions are the burritos. 2021-02-01T03:03:35Z jcowan: see "We're in the Monad" 2021-02-01T03:04:44Z siraben: mdhughes: monads are just functors with an associativity condition and unit 2021-02-01T03:04:51Z Zipheir: https://ro-che.info/ccc/9 2021-02-01T03:05:31Z siraben: e.g. If you have a [[[Int]]] and want a [Int], you can concatenate the outer two layers first followed by the inner or the other way around 2021-02-01T03:05:39Z jcowan: "A monad is just a monoid in the category of endofunctors. _What's the problem?_" 2021-02-01T03:05:49Z siraben: either way the monad laws say that you have to end up with the same result 2021-02-01T03:06:08Z siraben: jcowan: it is! 2021-02-01T03:06:21Z siraben: it's actually a brilliant definition 2021-02-01T03:06:36Z jcowan: It's the last three words. 2021-02-01T03:07:23Z Zipheir: siraben: Emily Riehl actually spends the first three pages of her chapter on monads discussing why that's a really brilliant definition. She quotes Iry's joke-article several times. 2021-02-01T03:07:53Z Zipheir: (The book being Category Theory in Context.) 2021-02-01T03:07:58Z siraben: Zipheir: haha, cartesian closed comic is on point 2021-02-01T03:08:02Z siraben: I see 2021-02-01T03:08:45Z mdhughes: https://ro-che.info/ccc/27 Actual result: "We couldn't understand it, so had it rewritten in Java." 2021-02-01T03:08:57Z smazga joined #scheme 2021-02-01T03:11:49Z Zipheir: There is too much Haskell circle-jerkery in that comic for me, but it's sometimes quite funny. 2021-02-01T03:13:13Z smazga quit (Ping timeout: 246 seconds) 2021-02-01T03:14:07Z lockywolf: I remember a footnote in SICP saying: "At a conference on programming languages you might hear someone say, “e normal-order language Hassle has certain strict primitives." 2021-02-01T03:15:14Z Zipheir: Heh, yes. 2021-02-01T03:34:12Z topoi quit (Quit: leaving) 2021-02-01T03:34:32Z topoi joined #scheme 2021-02-01T03:38:30Z smazga joined #scheme 2021-02-01T03:42:07Z mmohammadi9812 quit (Ping timeout: 260 seconds) 2021-02-01T03:44:36Z smazga quit (Ping timeout: 240 seconds) 2021-02-01T03:45:37Z mmohammadi9812 joined #scheme 2021-02-01T03:54:37Z skapate quit (Remote host closed the connection) 2021-02-01T03:57:59Z klovett quit (Remote host closed the connection) 2021-02-01T03:58:15Z klovett joined #scheme 2021-02-01T03:58:55Z _anb quit (Ping timeout: 272 seconds) 2021-02-01T04:00:53Z smazga joined #scheme 2021-02-01T04:02:34Z klovett quit (Ping timeout: 246 seconds) 2021-02-01T04:03:20Z klovett joined #scheme 2021-02-01T04:05:27Z smazga quit (Ping timeout: 260 seconds) 2021-02-01T04:07:23Z ArneBab quit (Remote host closed the connection) 2021-02-01T04:08:40Z ArneBab joined #scheme 2021-02-01T04:08:41Z ArneBab quit (Changing host) 2021-02-01T04:08:41Z ArneBab joined #scheme 2021-02-01T04:12:30Z _anb joined #scheme 2021-02-01T04:20:10Z smazga joined #scheme 2021-02-01T04:25:25Z amirouche joined #scheme 2021-02-01T04:25:36Z dieggsy: is there a way to ensure that a syntax-rules identifier is not a list? like as a dumb example (syntax-rules () ((_ a b c) (list a b c))) somehow ensure that a isn't some (...) 2021-02-01T04:26:03Z dieggsy: or not a function call i guess 2021-02-01T04:32:00Z Zipheir: The usual trick is to have that pattern follow a pattern to catch a list, e.g. ((_ (x x2 ..) b c) (syntax-error "bad stuff")) 2021-02-01T04:34:46Z torbo quit (Remote host closed the connection) 2021-02-01T04:35:32Z Zipheir: And, of course, a "function call" is just a list, syntactically. 2021-02-01T04:36:34Z ArneBab quit (Remote host closed the connection) 2021-02-01T04:37:50Z ArneBab joined #scheme 2021-02-01T04:37:50Z ArneBab quit (Changing host) 2021-02-01T04:37:50Z ArneBab joined #scheme 2021-02-01T04:39:41Z lockywolf: ymfu http://okmij.org/ftp/Scheme/macro-symbol-p.txt 2021-02-01T04:40:03Z lockywolf: "How to write symbol? with syntax-rules" 2021-02-01T04:42:42Z dieggsy: Zipheir: oh, that makes sense actually 2021-02-01T04:42:47Z dieggsy: lockywolf: thanks for the link 2021-02-01T04:46:19Z madage quit (Ping timeout: 268 seconds) 2021-02-01T04:50:45Z smazga quit (Ping timeout: 240 seconds) 2021-02-01T04:53:57Z epony quit (Remote host closed the connection) 2021-02-01T04:56:37Z madage joined #scheme 2021-02-01T05:04:03Z smazga joined #scheme 2021-02-01T05:14:17Z mmohammadi9812 quit (Ping timeout: 260 seconds) 2021-02-01T05:14:47Z mmohammadi9812 joined #scheme 2021-02-01T05:31:03Z gravicappa joined #scheme 2021-02-01T05:42:33Z smazga quit (Ping timeout: 264 seconds) 2021-02-01T05:49:01Z madage quit (Remote host closed the connection) 2021-02-01T05:49:17Z madage joined #scheme 2021-02-01T05:50:52Z madage quit (Remote host closed the connection) 2021-02-01T05:57:26Z madage joined #scheme 2021-02-01T06:17:35Z teardown quit (Ping timeout: 268 seconds) 2021-02-01T06:18:13Z teardown joined #scheme 2021-02-01T06:23:32Z amirouche1 joined #scheme 2021-02-01T06:25:56Z mirrorbird joined #scheme 2021-02-01T06:26:24Z amirouche quit (Ping timeout: 246 seconds) 2021-02-01T06:28:14Z ArneBab quit (Remote host closed the connection) 2021-02-01T06:29:31Z ArneBab joined #scheme 2021-02-01T06:29:32Z ArneBab quit (Changing host) 2021-02-01T06:29:32Z ArneBab joined #scheme 2021-02-01T07:04:25Z klovett quit (Ping timeout: 240 seconds) 2021-02-01T07:06:44Z smazga joined #scheme 2021-02-01T07:06:45Z Riastradh: amirouche1: (re lalr) I like lemon but I realize that's not very helpful here. 2021-02-01T07:13:54Z ArneBab quit (Read error: Connection reset by peer) 2021-02-01T07:14:57Z smazga quit (Ping timeout: 264 seconds) 2021-02-01T07:15:10Z ArneBab joined #scheme 2021-02-01T07:30:00Z ManDay joined #scheme 2021-02-01T07:32:34Z Retropikzel quit (Quit: Leaving.) 2021-02-01T07:33:29Z ManDay: Good morning. I'm sure this is something that's super nicely doable in Scheme: I have a string which starts with a syntactically correct form "( <...> ) ", how can I leverage the parser to extract it in the sense that I a) detect where the form ends (the ")"), and b) turn it into a (lambda (x y z)) ? 2021-02-01T07:34:01Z ManDay: I've never done that kind of thing, so if you could give me a keyword that I should look up, that would help me! 2021-02-01T07:34:14Z ManDay: (or a link ^^) 2021-02-01T07:37:35Z smazga joined #scheme 2021-02-01T07:41:45Z smazga quit (Ping timeout: 240 seconds) 2021-02-01T07:42:34Z mdhughes: (read) is your friend. 2021-02-01T07:44:06Z mdhughes: You'll need to set the standard input to a string, which in Chez is easiest (with-input-from-string somestring (read)) 2021-02-01T07:45:14Z mdhughes: Standard's a little uglier, you have to open-string-input-port and make sure to close it after or you'll leak. 2021-02-01T07:46:37Z mdhughes: As for turning it into lambda or anything else, that's eval 2021-02-01T07:49:36Z ManDay: Ah of course, the latter was silly of me (I was wondering about binding x y z correctly, but with scheme's scoping...). Thanks for both mdhughes ! 2021-02-01T07:49:48Z mdhughes: np. 2021-02-01T07:51:30Z mdhughes: Of course the standard REPL is literally just (let loop [] (display (eval (read))) (newline) (loop)) with some error handling and such. 2021-02-01T07:52:53Z Retropikzel joined #scheme 2021-02-01T07:55:01Z daviid joined #scheme 2021-02-01T07:55:19Z lritter joined #scheme 2021-02-01T07:57:45Z smazga joined #scheme 2021-02-01T08:01:56Z smazga quit (Ping timeout: 240 seconds) 2021-02-01T08:06:27Z Garbanzo quit (Ping timeout: 258 seconds) 2021-02-01T08:06:45Z rgherdt joined #scheme 2021-02-01T08:09:53Z Garbanzo joined #scheme 2021-02-01T08:16:03Z Garbanzo quit (Ping timeout: 272 seconds) 2021-02-01T08:17:33Z rapgru joined #scheme 2021-02-01T08:19:20Z smazga joined #scheme 2021-02-01T08:22:04Z civodul joined #scheme 2021-02-01T08:23:25Z smazga quit (Ping timeout: 240 seconds) 2021-02-01T08:28:02Z mdhughes_ joined #scheme 2021-02-01T08:29:26Z mdhughes quit (Ping timeout: 264 seconds) 2021-02-01T08:39:57Z smazga joined #scheme 2021-02-01T08:40:07Z mdhughes_ is now known as mdhughes 2021-02-01T08:45:56Z mirrorbird quit (Quit: Leaving) 2021-02-01T08:52:28Z rapgru quit (Quit: Connection closed) 2021-02-01T08:54:04Z ArneBab quit (Remote host closed the connection) 2021-02-01T08:55:17Z ArneBab joined #scheme 2021-02-01T08:57:50Z amirouche1: Riastradh: I will look at lemon 2021-02-01T09:08:48Z hendursa1 joined #scheme 2021-02-01T09:10:50Z smazga quit (Ping timeout: 264 seconds) 2021-02-01T09:11:45Z amirouche1 is now known as amirouche 2021-02-01T09:12:06Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-01T09:13:39Z Major_Biscuit joined #scheme 2021-02-01T09:15:09Z klovett joined #scheme 2021-02-01T09:19:52Z shawnw joined #scheme 2021-02-01T09:21:55Z klovett quit (Ping timeout: 265 seconds) 2021-02-01T09:30:52Z klovett joined #scheme 2021-02-01T09:35:55Z smazga joined #scheme 2021-02-01T09:38:33Z klovett quit (Ping timeout: 246 seconds) 2021-02-01T09:40:05Z smazga quit (Ping timeout: 240 seconds) 2021-02-01T10:09:44Z ArneBab quit (Remote host closed the connection) 2021-02-01T10:10:58Z ArneBab joined #scheme 2021-02-01T10:10:58Z ArneBab quit (Changing host) 2021-02-01T10:10:58Z ArneBab joined #scheme 2021-02-01T10:24:24Z ArneBab quit (Remote host closed the connection) 2021-02-01T10:25:38Z ArneBab joined #scheme 2021-02-01T10:25:38Z ArneBab quit (Changing host) 2021-02-01T10:25:38Z ArneBab joined #scheme 2021-02-01T10:45:27Z ex_nihilo joined #scheme 2021-02-01T10:46:31Z ex_nihilo quit (Remote host closed the connection) 2021-02-01T10:47:13Z ex_nihilo joined #scheme 2021-02-01T10:49:05Z ManDay: The end-of-file object is unlike any other kind of object: it’s not a 2021-02-01T10:49:06Z ManDay: pair, a symbol, or anything else.yy 2021-02-01T10:49:11Z ManDay: Isn't that funny? 2021-02-01T10:50:03Z ManDay: I think that's the weirdest statement I've read I've read in a language documentation. 2021-02-01T10:50:47Z smazga joined #scheme 2021-02-01T10:55:10Z ManDay: (guile) 2021-02-01T10:55:45Z smazga quit (Ping timeout: 264 seconds) 2021-02-01T10:57:33Z ManDay: why create an entire new language concept for eof? why not simply return #f or sth of that sort? 2021-02-01T10:59:04Z imode quit (Ping timeout: 265 seconds) 2021-02-01T11:00:37Z tdammers: my guess would be that this is an attempt at a faithful replication of the weirdness that C has wrt EOF 2021-02-01T11:01:09Z tdammers: in C, EOF isn't a first-class object at all, it's just a particular state that a handle can be in, and you can call a procedure to test for it 2021-02-01T11:01:59Z tdammers: but "EOF" is not a value you can return from anything 2021-02-01T11:04:06Z ManDay: Erm, isn't C's logic owing simply to the fact that it can't return polymorphically? 2021-02-01T11:04:20Z ManDay: Whereas in scheme, get-line or whatever could easily return #f 2021-02-01T11:08:26Z ManDay: Color me stupid mdhughes , but I don't understand the documentation of (eval). They give me three possible environments, all of which are some variation of "in an environment with bindings in the report"; but I just want to execute the eval in the current environment? 2021-02-01T11:08:58Z ManDay: i think I must be misunderstanding something 2021-02-01T11:10:22Z tdammers: well yeah, kind of 2021-02-01T11:10:32Z tdammers: C can return "polymorphically" in a way, but it's a bit awkward 2021-02-01T11:10:40Z ManDay: null pointer, you mean? 2021-02-01T11:10:45Z tdammers: no, that wouldn't work 2021-02-01T11:10:49Z ManDay: i know 2021-02-01T11:10:50Z tdammers: union-of-structs, most likely 2021-02-01T11:10:52Z ManDay: what do you mean? 2021-02-01T11:10:55Z ManDay: ah, yes. 2021-02-01T11:11:00Z ManDay: that's beyond awkward :D 2021-02-01T11:11:33Z tdammers: par for the course in C, but if you're doing low-level stuff, the extra byte tagged onto each read operation would probably become prohibitive more often than you'd like 2021-02-01T11:12:14Z ManDay: sure, but that aint nothing of the language's concern. that's behind the scenes 2021-02-01T11:12:37Z tdammers: I'm not saying I'm a fan of how guile does it 2021-02-01T11:12:42Z ManDay: specifying that get-line return #f in case of eof, I don't see how that had perf implications 2021-02-01T11:12:49Z ManDay: aight 2021-02-01T11:12:53Z ManDay: just a curiousity anyway 2021-02-01T11:13:09Z ManDay: "It's not [...] or anything else." is just pretty funny imo :-D 2021-02-01T11:13:19Z tdammers: the performance thing isn't really relevant in scheme/guile, but my guess would be that they just tried to do something that resembles the C API 2021-02-01T11:13:46Z smazga joined #scheme 2021-02-01T11:14:19Z tdammers: I mean, in a way *all* returns in scheme are polymorphic (though a Sufficiently Smart Compiler could monomorphize things when it can infer that it is safe to do so) 2021-02-01T11:15:48Z ManDay doesn't understand why there isn't simply an "eval" which just executes in-place like javascript's, for instance 2021-02-01T11:16:16Z ManDay: It's so confusing. "I just want to do but scheme wants me to !" 2021-02-01T11:20:53Z _________: ManDay: isn't eval-string what you want ? e.g. (eval-string "(+ 1 2)") 2021-02-01T11:21:29Z ManDay: Lol, I can't read your name in weechat, mysterious replier 2021-02-01T11:21:47Z _________: lol, it's just a few underscores ;) 2021-02-01T11:21:59Z ManDay: oh, haha, are you nuts 2021-02-01T11:22:01Z ManDay: okay 2021-02-01T11:22:05Z ManDay: well, i guess that could be it 2021-02-01T11:22:08Z _________: :D 2021-02-01T11:22:33Z ManDay: but that sounds like a difference in the argument. i do have the thing as a scheme expression (from (read)) 2021-02-01T11:23:14Z edgar-rft: OMG, aukkras nick is has hit an EOF in Guile! 2021-02-01T11:23:25Z ManDay: I mean from my trial (interaction-environment) does work (my own bindings are still there), but I haven't got the faitest how this comes from the documentation 2021-02-01T11:23:30Z heredoc quit (Quit: ZNC - http://znc.in) 2021-02-01T11:23:46Z ManDay: *faintest 2021-02-01T11:24:17Z ManDay: I really just wish it did the (eval) in the most ordinary way, including all its implications, as if I had typed it there. 2021-02-01T11:25:59Z phillbush joined #scheme 2021-02-01T11:27:29Z mdhughes: (eval s) will usually evaluate in (interaction-environment), but that's an impl-specific choice. 2021-02-01T11:27:34Z mdhughes: If you care, you should specify it. 2021-02-01T11:28:07Z ManDay: it's not like the second argument were optional 2021-02-01T11:28:14Z mdhughes: It is in most impls. 2021-02-01T11:28:35Z _________: ManDay: (primitive-eval (read)) 2021-02-01T11:29:50Z ManDay: mdhughes: it isn't in r6rs nor in guile. but let's just say that it were, I still fail to see how the description of the default (interaction-environment) corresponds to my "just do it here" 2021-02-01T11:29:57Z mdhughes: primitive-eval is *really* not standard, and won't help you. 2021-02-01T11:33:04Z mdhughes: A lot of the REPL-specific things like interaction-environment aren't in the spec, but in your library docs. 2021-02-01T11:33:44Z mdhughes: And r6rs-lib will even tell you that, end of §19 2021-02-01T11:34:37Z ManDay: §? 2021-02-01T11:34:56Z ManDay: mdhughes: what does this have to do with REPL? 2021-02-01T11:35:02Z ManDay: I'm not using REPL at all 2021-02-01T11:36:47Z mdhughes: Well, then what environment do you want to be working in? In Chez, you can use (copy-environment (scheme-environment)) to make a new isolated env for your evals. 2021-02-01T11:38:42Z mdhughes: But, jcowan has a sandbox environment that just has "safe" operations, so you can sort of safely read & execute hostile network code. 2021-02-01T11:38:52Z ManDay: mdhughes: I truly don't understand the question at all. When I write .....(eval something).... in my source, I want it to behave as if I had written ....something... there myself. 2021-02-01T11:39:06Z ManDay: What is there to be thought about "environments"? 2021-02-01T11:39:17Z ManDay: Just like Javascript's eval() I want it. 2021-02-01T11:39:41Z ManDay: You write eval(something) and it amounts to writing "something" into the source 2021-02-01T11:40:01Z mdhughes: But WHERE are you evalling that code? In an environment. You may have to specify (interaction-environment) or something else; some Schemes are just nice enough to give that default. 2021-02-01T11:40:46Z ManDay: mdhughes: Again, I don't understand what you mean by "Where" I eval it. I want it to behave exactly as if I had written that code in place. Isn't that a well-defined requirement? 2021-02-01T11:40:54Z mdhughes: JS eval is unsafe because it's always pointing at the real environment. Scheme's lets you put that in a box with limited functions. 2021-02-01T11:41:11Z ManDay: I don't want to put it into a box. Which environment would that be? 2021-02-01T11:41:13Z mdhughes: "I JUST WANTS IT" well, I told you where to do it for that. 2021-02-01T11:43:16Z ManDay: i think this is mostly a misunderstanding 2021-02-01T11:43:48Z ManDay: (fwiw i'm not writing in caps and I'm not upset or anything, I just think what I want to do, may it be unsafe, is well defined and does not raise the question of an environment) 2021-02-01T11:44:20Z mdhughes: Incorrect, as the definition of eval will tell you. 2021-02-01T11:44:38Z mdhughes: `Evaluates expression in the specified environment and re- turns its value.` 2021-02-01T11:44:41Z ManDay: But if like you said JS's eval() is just an unsafe specific case of Scheme's eval, then I'd like to know which "environment" turns it into JS's eval 2021-02-01T11:45:04Z ManDay: s/specific/special 2021-02-01T11:45:25Z ManDay: As I can't read any such information out of the docs 2021-02-01T11:45:53Z mdhughes: `mdhughes: (eval s) will usually evaluate in (interaction-environment), but that's an impl-specific choice.` 2021-02-01T11:46:26Z smazga quit (Ping timeout: 272 seconds) 2021-02-01T11:46:32Z mdhughes: I don't have guile handy, don't really care to read it, but I bet you can with that information. 2021-02-01T11:51:23Z ManDay: mdhughes: If you have missed that: I've already found out that (interaction-environment) works for me. But the fact that that environment does include all the bindings that occur at the source location does not seem to follow from the documentation. That's my only concern. 2021-02-01T11:52:09Z ManDay: The description of these environments only asser that they contain bindings from the report, but never it is mentioned that my bindings are also in it 2021-02-01T11:52:28Z smazga joined #scheme 2021-02-01T11:53:30Z mdhughes: The CSUG explains it well, but I dunno/don't care what Guile does, I don't touch GNU software unless I absolutely have to. 2021-02-01T11:53:40Z ManDay: (interaction-environment): Return a specifier for the environment that contains implementation–defined bindings, typically a superset of those listed in the report. The intent is that this procedure will return the environment in which the implementation would evaluate expressions dynamically typed by the user. 2021-02-01T11:53:49Z ManDay: mdhughes: fair enough 2021-02-01T11:55:56Z ManDay: I can't understand how the standard doesn't mention it, though 2021-02-01T11:56:36Z smazga quit (Ping timeout: 240 seconds) 2021-02-01T12:02:29Z klovett joined #scheme 2021-02-01T12:03:24Z mdhughes: Despite R6RS being the "large enough to be useful" spec, apparently there was knife-fighting in the committee between incompatible impls. 2021-02-01T12:04:32Z ManDay: heh 2021-02-01T12:04:33Z mdhughes: Thus R7RS, which I think is an overreaction. But since there's multiple R6RS impls, and likely to continue being so, I don't really worry about future specs. 2021-02-01T12:04:59Z epony joined #scheme 2021-02-01T12:08:43Z edgar-rft: R8RS will be sooo big that nobody lives long enough to read it in full length. 2021-02-01T12:10:56Z ArneBab quit (Ping timeout: 240 seconds) 2021-02-01T12:11:16Z ArneBab joined #scheme 2021-02-01T12:11:16Z ArneBab quit (Changing host) 2021-02-01T12:11:16Z ArneBab joined #scheme 2021-02-01T12:16:00Z ArneBab quit (Ping timeout: 258 seconds) 2021-02-01T12:16:24Z ArneBab joined #scheme 2021-02-01T12:26:40Z xlei joined #scheme 2021-02-01T12:27:43Z euandreh quit (Ping timeout: 265 seconds) 2021-02-01T12:30:09Z brainfunnel joined #scheme 2021-02-01T12:36:18Z smazga joined #scheme 2021-02-01T12:39:46Z Retropikzel quit (Ping timeout: 258 seconds) 2021-02-01T12:40:55Z smazga quit (Ping timeout: 258 seconds) 2021-02-01T12:41:23Z Retropikzel joined #scheme 2021-02-01T12:43:59Z euandreh joined #scheme 2021-02-01T12:44:34Z skapata joined #scheme 2021-02-01T12:49:49Z ArneBab quit (Remote host closed the connection) 2021-02-01T12:51:03Z ArneBab joined #scheme 2021-02-01T12:51:03Z ArneBab quit (Changing host) 2021-02-01T12:51:03Z ArneBab joined #scheme 2021-02-01T12:52:16Z brainfunnel_ joined #scheme 2021-02-01T12:55:45Z brainfunnel quit (Ping timeout: 264 seconds) 2021-02-01T12:55:47Z ArneBab_ joined #scheme 2021-02-01T12:55:50Z ArneBab quit (Ping timeout: 264 seconds) 2021-02-01T13:19:09Z ArneBab_ quit (Read error: Connection reset by peer) 2021-02-01T13:20:24Z ArneBab joined #scheme 2021-02-01T13:30:18Z phillbush quit (Quit: Leaving) 2021-02-01T13:31:49Z smazga joined #scheme 2021-02-01T13:36:38Z smazga quit (Ping timeout: 272 seconds) 2021-02-01T13:37:58Z ces joined #scheme 2021-02-01T13:38:02Z hendursa1 quit (Remote host closed the connection) 2021-02-01T13:39:15Z hendursa1 joined #scheme 2021-02-01T13:40:09Z mmohammadi9812 quit (Ping timeout: 264 seconds) 2021-02-01T13:40:39Z Major_Biscuit quit (Ping timeout: 260 seconds) 2021-02-01T13:44:19Z acarrico joined #scheme 2021-02-01T13:47:15Z Major_Biscuit joined #scheme 2021-02-01T13:48:24Z mmohammadi9812 joined #scheme 2021-02-01T13:50:04Z Riastradh: tdammers: On the contrary, `EOF' _is_ a specific int object in C (although its value as an integer is unspecified, but usually it's -1). 2021-02-01T13:54:50Z ces quit (Quit: WeeChat 3.0) 2021-02-01T13:55:49Z ArneBab quit (Remote host closed the connection) 2021-02-01T13:57:06Z ArneBab joined #scheme 2021-02-01T13:57:06Z ArneBab quit (Changing host) 2021-02-01T13:57:06Z ArneBab joined #scheme 2021-02-01T13:59:54Z civodul quit (Remote host closed the connection) 2021-02-01T14:02:02Z civodul joined #scheme 2021-02-01T14:08:48Z tdammers: and yet, fgets() does not return 2021-02-01T14:08:58Z tdammers: "the EOF object" on EOF, but NULL 2021-02-01T14:16:22Z hendursa1 quit (Remote host closed the connection) 2021-02-01T14:17:16Z hendursa1 joined #scheme 2021-02-01T14:19:28Z smazga joined #scheme 2021-02-01T14:23:36Z smazga quit (Ping timeout: 240 seconds) 2021-02-01T14:27:56Z gproto23 joined #scheme 2021-02-01T14:31:29Z ArneBab quit (Remote host closed the connection) 2021-02-01T14:32:13Z acarrico quit (Ping timeout: 256 seconds) 2021-02-01T14:32:44Z ArneBab joined #scheme 2021-02-01T14:46:09Z brainfunnel joined #scheme 2021-02-01T14:49:50Z brainfunnel_ quit (Ping timeout: 264 seconds) 2021-02-01T14:50:01Z klovett_ joined #scheme 2021-02-01T14:50:05Z gproto23 quit (Quit: Leaving) 2021-02-01T14:51:16Z klovett quit (Ping timeout: 265 seconds) 2021-02-01T14:51:34Z dieggsy: mdhughes: "I don't touch GNU software unless I absolutely have to" Intriguing, how come? are you a BSD user? 2021-02-01T14:51:39Z ArneBab quit (Remote host closed the connection) 2021-02-01T14:51:43Z mirrorbird joined #scheme 2021-02-01T14:52:48Z aeth: dieggsy: A lot of people see the whole "GNU/Linux" thing as GNU trying to take credit for other people's work since GNU software is a tiny portion of a modern Linux distro, and it's increasingly so since they started that whole "GNU/Linux" thing. 2021-02-01T14:52:52Z ArneBab joined #scheme 2021-02-01T14:53:32Z gproto023 joined #scheme 2021-02-01T14:54:09Z gproto023 quit (Remote host closed the connection) 2021-02-01T14:54:38Z aeth: Even post-Wayland, the most visible/important components (if a graphical system, anyway) are still probably Xorg and Firefox, neither of which are GNU. 2021-02-01T14:54:48Z ManDay: The little I knew about that whole GNU/Linux thing I've already forgotten, so essentially I know nothing about GNU and in my naivety it has never crossed my mind that I should give credit to "GNU", I don't think that concern is reasonable 2021-02-01T14:55:14Z ManDay: I give credit to the developers of individual projects. Perhaps I'm not being political enough? 2021-02-01T14:55:26Z mdhughes: Some of all of that. I really dislike Stallman (his behavior with GCC & glibc esp., but his creepy personal shit too), the FSF, the GNU "everything must be GNU" agenda. And I have nice working BSD (and Mac, which is mach-BSD-NeXTstep) systems. 2021-02-01T14:56:27Z aeth: dieggsy: Another thing that soured people on GNU is that they won't give credit to or recommend very strict, popular FOSS-only distros like Debian or Fedora because they're not quite good enough, instead promoting really niche distros that probably aren't newbie-friendly over essentially a technicality (firmware) when you probably do want that proprietary firmware so you can, you know, run on real hardware and stuff. 2021-02-01T14:56:28Z mdhughes: And generally anything that has a GNU version is bloated and annoying compared to the original. GNU `true` has options. 2021-02-01T14:57:00Z shawnw quit (Ping timeout: 258 seconds) 2021-02-01T14:57:38Z ManDay: mdhughes: it sure is entirely your choice, but I don't quite how see how disliking a person or even group of people has anything to do with their software 2021-02-01T14:57:44Z dieggsy: ah, i'm aware of most of these issues, just wondering the specifics in this case. what's your bsd of choice? 2021-02-01T14:57:53Z mdhughes: Software reflects the people who make it. 2021-02-01T14:58:01Z ManDay: FreeBSD; of course! :-P 2021-02-01T14:58:21Z ManDay: "Software reflects the people who make it" what the heck is that supposed to mean, lol 2021-02-01T14:58:36Z mdhughes: I am also a FreeBSD, but I have nothing against Net or Open. Just easiest to do what I need on FreeBSD. 2021-02-01T14:59:32Z mdhughes: Ever see TRON? The programs we make have our soul in them, and live little lives inside the computer. Bad people make MCP. Good people make TRON, who fights for the user. 2021-02-01T15:00:01Z ManDay: I... disagree. If Hitler & Stalin had a good Wayland browser I'd jump at it! 2021-02-01T15:00:11Z ManDay: I really don't care who's behind it. I'd even donate. 2021-02-01T15:00:24Z mdhughes: I would not. 2021-02-01T15:00:27Z dieggsy: I actually love BSD, but basically I use steam and Netflix which is a big reason why I stick to Linux 2021-02-01T15:01:32Z mdhughes: Also Wayland is very much the kind of thing I dislike in Linux, it fails to even solve the problem, and doesn't replace the original use case of X11. 2021-02-01T15:01:45Z dieggsy: ManDay: I see the point you're trying to make but donating (depending on how it's managed) can be a form of direct support for the software dev, which I'm your exaggerated example... lol 2021-02-01T15:01:55Z ex_nihilo: mdhughes: curious about development tools-- do you prefer Clang to GCC? are you an emacs user, vim, something else? 2021-02-01T15:02:53Z ManDay: dieggsy: That's obviously not what I meant. Let's just say an evil person makes a beautiful software, I'd love that software. 2021-02-01T15:02:57Z mdhughes: Mostly I work in BBEdit on the Mac, or Vim on anything else. For C I mostly use clang, BSD's almost entirely gone over to it. 2021-02-01T15:03:26Z mdhughes: But I don't have to use any C compiler usually, since everything I do is Scheme or JavaScript (or some Python). 2021-02-01T15:04:40Z aeth: I mean, I personally feel a bit dirty using GNU Emacs (essentially mandatory for Lisp/Scheme) because it essentially, in my opinion, spreads misinformation on startup by telling you to press C-h C-a (or, actually, just shows you that as the starting screen if you don't disable it first iirc). 2021-02-01T15:04:55Z dieggsy: ManDay: I wasn't trying to conflate your idea of donating to your actual support for those specific figures, sorry if it came across that way, simply to say that donating is a more direct form of support for the people themselves 2021-02-01T15:05:12Z aeth: Since I see "GNU/Linux" as, again, essentially stealing credit for software that's not theirs, which for many of the FOSS licenses is essentially one of the few ways you can violate the spirit of the license. 2021-02-01T15:05:17Z ManDay: aeth: "mandatory for scheme", come on...! 2021-02-01T15:05:24Z mdhughes: For quite a while I was using Atom, which is like if Emacs didn't suck, but now that BBEdit has better JavaScript syntax recognition, I don't need a big IDE. 2021-02-01T15:05:27Z aeth: ManDay: OK, Racket has its own editor but it's more for newbies 2021-02-01T15:05:34Z ManDay: COME ON 2021-02-01T15:05:48Z mdhughes: Scheme doesn't need a complex editor. If you can match parens, you're fine. 2021-02-01T15:05:59Z ManDay: exactly 2021-02-01T15:06:03Z aeth: The main way to edit Scheme-in-general is Emacs. Various individual Schemes may have their alternatives. 2021-02-01T15:06:22Z ManDay: aeth, I've never used emacs in my life 2021-02-01T15:06:23Z mdhughes: Note, jcowan uses ex. 2021-02-01T15:06:28Z imode joined #scheme 2021-02-01T15:06:29Z ManDay: (once, I think, becaue I absolutely had to) 2021-02-01T15:06:36Z ManDay: <--- kakoune 2021-02-01T15:06:51Z dieggsy: I actually use emacs but the way I edit scheme is pretty much doable in any editor, I don't do anything that fancy 2021-02-01T15:07:04Z mdhughes: I did use edwin for a while, because I was using MIT Scheme, but UGH. Glad to be rid of it. And at least edwin's scripted in Scheme, not a broken lisp. 2021-02-01T15:07:06Z dieggsy: which is nice for when I want or have to edit scheme in other editors 2021-02-01T15:08:43Z aeth: For many people on a Linux system, you only really need to encounter GNU with coreutils and gcc... There are many alternatives to bash even if bash is the default. And Apple/BSD/etc. people have pushed some GNU-alternatives that work fine on Linux, like zsh, tmux, LLVM, etc. They definitely do not deserve to claim credit for the entire distro just because their compiler is currently (not necessarily forever) required for the kernel. 2021-02-01T15:08:49Z ArneBab quit (Remote host closed the connection) 2021-02-01T15:10:04Z ArneBab joined #scheme 2021-02-01T15:10:05Z ArneBab quit (Changing host) 2021-02-01T15:10:05Z ArneBab joined #scheme 2021-02-01T15:10:18Z mdhughes: Yeah, I stopped using bash after shellshock, and you all should, too. bash is very badly written and basically a virus loader. Use zsh, tcsh, fish, whatever. 2021-02-01T15:10:19Z smazga joined #scheme 2021-02-01T15:10:29Z dieggsy: _________: wow, i love that username 2021-02-01T15:10:46Z mdhughes: scsh, of course, is traditional. 2021-02-01T15:10:51Z aeth: I use zsh because you can make it look pretty, but oh-my-zsh (if that's even still around) isn't the way to do it, so I just hand-customize it. 2021-02-01T15:11:14Z aeth: I'm going to customize terminals/shells/etc. heavily to look nice if I'm going to look at them all day... 2021-02-01T15:11:18Z jcowan: ManDay: This analogy may be useful to you. Suppose you have written an inerpreter for the C language in C, and named it "eval". It supports the whole language, global variables, functions, type declarations, the works. You pass it a bunch of C and back comes the result of main(). 2021-02-01T15:12:02Z shawnw joined #scheme 2021-02-01T15:12:03Z jcowan: Now how would you go about writing `eval` so that when it is called from a C function in your program (call it `driver`), `eval` would have access to the local variables of `driver` by name? 2021-02-01T15:14:38Z dieggsy: aeth: same re:oh-my-zsh (or other plugin managers/frameworks for that matter) it's such a complex framework for what can often be done in a few lines of zsh. I tried a few and moved away from all of them in favor of manual config + loading a couple zsh plugins from package manager 2021-02-01T15:15:14Z smazga quit (Ping timeout: 265 seconds) 2021-02-01T15:15:47Z dieggsy: mostly more completions, history substring search, and autosuggestion iirc. colorful man is a short shell script surprisingly 2021-02-01T15:16:13Z jcowan: I use bash interactively, but /bin/sh otherwise, and if I do need bashisms in a script, it declares /bin/bash as its interpreter 2021-02-01T15:17:56Z mdhughes: The only zsh modules I load are zmv, colors, mathfunc, regex. 2021-02-01T15:17:59Z ArneBab quit (Remote host closed the connection) 2021-02-01T15:19:14Z shawnw quit (Ping timeout: 272 seconds) 2021-02-01T15:19:16Z ArneBab joined #scheme 2021-02-01T15:19:16Z ArneBab quit (Changing host) 2021-02-01T15:19:16Z ArneBab joined #scheme 2021-02-01T15:21:23Z lritter quit (Quit: Leaving) 2021-02-01T15:31:30Z smazga joined #scheme 2021-02-01T15:32:52Z acarrico joined #scheme 2021-02-01T15:37:17Z smazga quit (Ping timeout: 260 seconds) 2021-02-01T15:37:40Z dieggsy: I was recently going over module documentation, mathfunc is cool 2021-02-01T15:41:32Z mdhughes: I try not to write "real programs" in zsh, but if I'm doing something in zsh already it's often easier to add a little real code there. 2021-02-01T15:42:29Z Major_Biscuit quit (Ping timeout: 256 seconds) 2021-02-01T15:50:35Z phillbush joined #scheme 2021-02-01T15:51:54Z dieggsy: i stick to not trying to write "real programs" in zsh too, lol 2021-02-01T15:52:52Z dieggsy: i'm not a huge fan of the shell scripting language - it's great for interactive and simple uses, but beyond that... if not scheme then python 2021-02-01T15:54:16Z acarrico quit (Ping timeout: 240 seconds) 2021-02-01T15:54:48Z gwatt: I feel like ksh is *really* close to being an acceptable programming language. It certainly goes well beyond what bash provides, and I think zsh too 2021-02-01T15:55:19Z ManDay: jcowan: I'm not sure what you're trying to say and I suspect you misunderstand my "problem" (which is a problem of documentation): Which environment is the environment of the invocation of (eval)? It turns out (interaction-environment) is it, but that is not documented in my opinion. 2021-02-01T15:56:16Z jcowan: Where do you expect it to be documented? 2021-02-01T15:57:10Z gwatt: ManDay: which scheme? The standard eval accepts only two arguments: the expression and the environment. 2021-02-01T15:57:48Z dieggsy: gwatt: i like the idea of ksh and played around with mksh, which is a nice simple shell, though i went back to zsh for features i think 2021-02-01T15:58:32Z mdhughes: ksh used to be my shell of choice, until Linux led me into error. But I do think zsh is a better shell than ksh, and Perl/Python/Scheme is better for programming than ksh, so it's a narrow niche where ksh would be best. 2021-02-01T15:58:34Z ManDay: gwatt: Yes? So? That's the eval I'm talking about, expression and environment. And the question is "WHICH environment" do I need to pass 2021-02-01T16:01:14Z mdhughes: As I rewrite my build scripts from zsh to Scheme so they'll run on Windows, I've ended up writing a lot of shell utils. Scheme's still bulky for expressing some shell idioms, but it's nice having the full language and C FFI if needed. 2021-02-01T16:01:19Z Major_Biscuit joined #scheme 2021-02-01T16:02:11Z gwatt: mdhughes: agree about the niche of ksh 2021-02-01T16:02:14Z jcowan: mdhughes: What Scheme are you using 2021-02-01T16:02:22Z mdhughes: Chez. 2021-02-01T16:02:42Z jcowan: I wish we had a port of SRFI 170 to Chez 2021-02-01T16:03:37Z ManDay: jcowan: In R6rs I expect it to be documented how to specify the correct environment such that invoking (eval ... env) with it amounts to writing the eval'ed code that location in source. 2021-02-01T16:03:44Z mdhughes: yeah, a lot of that is coincidentally in (import (chezscheme)), but not under consistent names. And some parts are not, so I compile C code… 2021-02-01T16:04:37Z mdhughes: CHICKEN does have more of that built in, but doesn't have POSIX threads. Augh. 2021-02-01T16:05:14Z jcowan: ManDay: You simply can't get what you want in any existing Scheme: see my analogy to C for why. 2021-02-01T16:05:32Z mdhughes: I don't thread my build script, tho it'd help on some tasks. 2021-02-01T16:08:59Z ManDay: jcowan: I'm afraid I do not understand how your analogy explains that. To answer the question from your analogy: my eval() must be able to introspect the calling program. 2021-02-01T16:09:20Z c7d9_ quit (Quit: leaving) 2021-02-01T16:09:26Z jcowan: How would you introspect a C program to get the current values of local variables? 2021-02-01T16:09:37Z c7d9 joined #scheme 2021-02-01T16:09:51Z jcowan: (short of running in gdb, which contains an interpreter) 2021-02-01T16:10:21Z ManDay: It's not possible with a C Program, obviously. It needs meta data from the compiler. But this is not C. So, to counter your argument about "can't": Why *can* I in Javascript, but not in Scheme? 2021-02-01T16:10:45Z dieggsy: mdhughes: chicken is my scheme of choice and i almost never use threading, but i always feel a bit unsettled whenever i'm reminded it doesn't suuport posix threads. i guess there's IPC options instead, have not explored 2021-02-01T16:10:45Z elliott_ quit (Ping timeout: 264 seconds) 2021-02-01T16:13:11Z jcowan: Because Scheme is, in the relevant sense, C. It's designed for AOT compiling. 2021-02-01T16:14:30Z jcowan: There is a vocal minority that believes that Lisp-in-general lost something when compilers got into the act, but in fact there have been compilers since Lisp 1.5 in 1959. 2021-02-01T16:14:32Z mdhughes: dieggsy: It might be possible to set up a C FFI that launches a new CHICKEN runtime in its own thread, and then you could talk between those threads with IPC or pipes. It needs a lot more per-thread state than Chez. 2021-02-01T16:15:27Z smazga joined #scheme 2021-02-01T16:16:20Z dieggsy: mdhughes: theres this egg: https://wiki.call-cc.org/eggref/5/concurrent-native-callbacks 2021-02-01T16:16:32Z ManDay: jcowan: I understand. And it is indeed true that I don't need the environment in my case. The C'ish `eval` would work in my case. 2021-02-01T16:16:44Z phillbush quit (Quit: Leaving) 2021-02-01T16:16:55Z ManDay: Is there a way to compose a manually crafted set of bindings to pass as an environment into `eval`? 2021-02-01T16:17:26Z ManDay: I only found 3 possible, generic environments to use as the 2nd argument to `eval`, but nothing which would allow me to give it binding points 2021-02-01T16:17:32Z jcowan: Not *as* an environment, a deficiency I hope to repair. You can of course craft a data structure and then unpack it inside eval before getting down to business. 2021-02-01T16:17:51Z ManDay: Ah ok 2021-02-01T16:18:11Z ManDay: thanks, your analogy helped indeed, after all :) 2021-02-01T16:18:12Z jcowan: You can add bindings to interaction-environment with (eval '(define x ...) (interaction-environment)) 2021-02-01T16:18:25Z mdhughes: dieggsy: I think that just lets you write C threads that call one worker CHICKEN thread? Handy if you're embedding it as a scripting engine. 2021-02-01T16:18:31Z ManDay: jcowan: yep 2021-02-01T16:20:19Z dieggsy: mdhughes: that sounds like the description of the pthreads egg. there's also an mpi egg, but i haven't tried any of these. but yeah, the overhead is going to be much bigger than a scheme that supports native threads anyway 2021-02-01T16:20:52Z mdhughes: Oh, and it's mulle, who's trying to make a good standalone Objective-C environment. It's still pretty hacky, but I've had some fun using it. Someday it may free my old iOS & Mac code for wider distribution. 2021-02-01T16:25:07Z mdhughes: Relevant from fediverse: https://fosdem.org/2021/schedule/event/lisprepl/ 2021-02-01T16:33:02Z aeth: mdhughes: I might do a shell when I'm done with Airship Scheme if it's not too involved. I've already said that Lua's next, though, because Lua's very minimal. 2021-02-01T16:47:42Z mdhughes: It is a time of sleeping off the very strong beer. 2021-02-01T16:48:34Z aeth_ joined #scheme 2021-02-01T16:48:43Z aeth quit (Disconnected by services) 2021-02-01T16:48:51Z aeth_ is now known as aeth 2021-02-01T16:50:57Z aeth_ joined #scheme 2021-02-01T16:51:23Z aeth quit (Disconnected by services) 2021-02-01T16:51:58Z aeth_ is now known as aeth 2021-02-01T16:55:31Z Anonymous_ quit (Remote host closed the connection) 2021-02-01T16:55:35Z manumanumanu quit (Ping timeout: 256 seconds) 2021-02-01T16:55:54Z manumanumanu joined #scheme 2021-02-01T17:04:50Z amirouche quit (Ping timeout: 264 seconds) 2021-02-01T17:08:44Z ces joined #scheme 2021-02-01T17:10:10Z ManDay quit (Quit: WeeChat 3.0) 2021-02-01T17:10:18Z Anonymous_ joined #scheme 2021-02-01T17:12:38Z ces quit (Client Quit) 2021-02-01T17:17:03Z _apg joined #scheme 2021-02-01T17:26:49Z hendursa1 quit (Remote host closed the connection) 2021-02-01T17:27:44Z hendursa1 joined #scheme 2021-02-01T17:32:21Z Anonymous_ quit (Ping timeout: 264 seconds) 2021-02-01T17:35:16Z Zipheir: aeth: What kind of shell are you thinking of? I've been putting together ideas for an article on possible future direction for CLIs, so it's of interest. 2021-02-01T17:40:23Z teardown quit (Remote host closed the connection) 2021-02-01T17:40:44Z teardown joined #scheme 2021-02-01T17:44:21Z phillbush joined #scheme 2021-02-01T17:44:53Z pankajsg quit (Ping timeout: 256 seconds) 2021-02-01T17:48:40Z phillbush quit (Client Quit) 2021-02-01T17:49:08Z mirrorbird quit (Ping timeout: 265 seconds) 2021-02-01T17:50:12Z ces joined #scheme 2021-02-01T17:50:33Z Major_Biscuit quit (Ping timeout: 256 seconds) 2021-02-01T17:53:15Z mirrorbird joined #scheme 2021-02-01T17:53:52Z ManDay joined #scheme 2021-02-01T18:01:45Z mirrorbird quit (Ping timeout: 240 seconds) 2021-02-01T18:03:38Z acarrico joined #scheme 2021-02-01T18:06:37Z Lysandros quit (Remote host closed the connection) 2021-02-01T18:06:59Z Lysandros joined #scheme 2021-02-01T18:10:27Z cky quit (Ping timeout: 244 seconds) 2021-02-01T18:17:12Z miasuji joined #scheme 2021-02-01T18:18:45Z amirouche joined #scheme 2021-02-01T18:19:05Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-01T18:20:06Z hendursa1 joined #scheme 2021-02-01T18:22:21Z cky joined #scheme 2021-02-01T18:23:04Z amirouche1 joined #scheme 2021-02-01T18:25:45Z amirouche quit (Ping timeout: 240 seconds) 2021-02-01T18:33:22Z Garbanzo joined #scheme 2021-02-01T18:39:38Z amirouche1 quit (Ping timeout: 264 seconds) 2021-02-01T19:03:03Z teardown quit (Remote host closed the connection) 2021-02-01T19:03:22Z teardown joined #scheme 2021-02-01T19:06:30Z hendursa1 quit (Quit: hendursa1) 2021-02-01T19:06:38Z edgar-rft quit (Quit: Leaving) 2021-02-01T19:06:55Z hendursaga joined #scheme 2021-02-01T19:07:48Z xelxebar_ quit (Ping timeout: 268 seconds) 2021-02-01T19:12:32Z xelxebar joined #scheme 2021-02-01T19:19:50Z ManDay quit (Quit: WeeChat 3.0) 2021-02-01T19:52:23Z X-Scale` joined #scheme 2021-02-01T19:53:51Z X-Scale quit (Ping timeout: 246 seconds) 2021-02-01T19:53:51Z X-Scale` is now known as X-Scale 2021-02-01T19:57:11Z smazga quit (Ping timeout: 246 seconds) 2021-02-01T20:02:00Z smazga joined #scheme 2021-02-01T20:03:41Z amirouche1 joined #scheme 2021-02-01T20:15:56Z amirouche1 quit (Ping timeout: 240 seconds) 2021-02-01T20:18:46Z matryoshka` joined #scheme 2021-02-01T20:20:25Z sp1ff joined #scheme 2021-02-01T20:21:20Z Zipheir_ joined #scheme 2021-02-01T20:22:16Z aeth quit (Ping timeout: 240 seconds) 2021-02-01T20:24:13Z aeth joined #scheme 2021-02-01T20:26:05Z matryoshka quit (*.net *.split) 2021-02-01T20:26:09Z Zipheir quit (*.net *.split) 2021-02-01T20:26:10Z iv-so quit (*.net *.split) 2021-02-01T20:28:51Z [d] quit (Ping timeout: 246 seconds) 2021-02-01T20:29:33Z [d] joined #scheme 2021-02-01T20:32:51Z drot quit (K-Lined) 2021-02-01T20:34:22Z drot joined #scheme 2021-02-01T20:40:31Z gravicappa quit (Ping timeout: 265 seconds) 2021-02-01T21:01:56Z c7d9_ joined #scheme 2021-02-01T21:02:05Z c7d9 quit (Ping timeout: 240 seconds) 2021-02-01T21:11:22Z elflng quit (Ping timeout: 272 seconds) 2021-02-01T21:14:36Z sdu quit (Remote host closed the connection) 2021-02-01T21:14:38Z Garbanzo quit (Remote host closed the connection) 2021-02-01T21:14:59Z Garbanzo joined #scheme 2021-02-01T21:19:24Z elflng joined #scheme 2021-02-01T21:21:34Z sdu joined #scheme 2021-02-01T21:34:49Z evdubs quit (Quit: Leaving) 2021-02-01T21:37:01Z evdubs joined #scheme 2021-02-01T21:42:35Z Zipheir_ is now known as Zipheir 2021-02-01T21:48:09Z ArneBab quit (Remote host closed the connection) 2021-02-01T21:49:26Z ArneBab joined #scheme 2021-02-01T21:49:27Z ArneBab quit (Changing host) 2021-02-01T21:49:27Z ArneBab joined #scheme 2021-02-01T21:54:02Z ces quit (Ping timeout: 264 seconds) 2021-02-01T21:57:07Z ex_nihilo quit (Quit: Leaving) 2021-02-01T21:57:18Z gioyik joined #scheme 2021-02-01T22:00:49Z ArneBab quit (Remote host closed the connection) 2021-02-01T22:02:05Z ArneBab joined #scheme 2021-02-01T22:08:29Z ArneBab quit (Remote host closed the connection) 2021-02-01T22:09:44Z ArneBab joined #scheme 2021-02-01T22:12:46Z akkad joined #scheme 2021-02-01T22:27:09Z ArneBab quit (Remote host closed the connection) 2021-02-01T22:28:25Z ArneBab joined #scheme 2021-02-01T22:47:02Z miasuji quit (Remote host closed the connection) 2021-02-01T22:47:26Z miasuji joined #scheme 2021-02-01T22:54:19Z ArneBab quit (Read error: Connection reset by peer) 2021-02-01T22:55:35Z ArneBab joined #scheme 2021-02-01T23:12:47Z civodul quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-01T23:13:21Z smazga quit (Quit: leaving) 2021-02-01T23:16:16Z pankajsg joined #scheme 2021-02-01T23:23:26Z Garbanzo quit (Remote host closed the connection) 2021-02-01T23:23:52Z Garbanzo joined #scheme 2021-02-01T23:25:29Z ArneBab quit (Remote host closed the connection) 2021-02-01T23:26:45Z ArneBab joined #scheme 2021-02-01T23:26:45Z ArneBab quit (Changing host) 2021-02-01T23:26:45Z ArneBab joined #scheme 2021-02-01T23:27:07Z miasuji quit (Remote host closed the connection) 2021-02-01T23:27:35Z miasuji joined #scheme 2021-02-01T23:31:07Z ces joined #scheme 2021-02-01T23:32:06Z rgherdt quit (Ping timeout: 246 seconds) 2021-02-01T23:33:09Z ArneBab quit (Remote host closed the connection) 2021-02-01T23:34:27Z ArneBab joined #scheme 2021-02-01T23:40:56Z gioyik quit (Quit: WeeChat 3.0) 2021-02-01T23:41:27Z Garbanzo quit (Ping timeout: 260 seconds) 2021-02-01T23:44:49Z ArneBab quit (Remote host closed the connection) 2021-02-01T23:45:28Z amirouche joined #scheme 2021-02-01T23:46:05Z ArneBab joined #scheme 2021-02-01T23:50:07Z mdhughes quit 2021-02-01T23:52:16Z Anonymous_ joined #scheme 2021-02-02T00:06:52Z amirouche quit (Ping timeout: 256 seconds) 2021-02-02T00:21:43Z Riastradh quit (Ping timeout: 260 seconds) 2021-02-02T00:24:02Z miasuji quit (Ping timeout: 260 seconds) 2021-02-02T00:28:49Z miasuji joined #scheme 2021-02-02T00:40:28Z c7d9 joined #scheme 2021-02-02T00:43:39Z c7d9_ quit (Ping timeout: 246 seconds) 2021-02-02T00:57:59Z ArneBab quit (Remote host closed the connection) 2021-02-02T00:59:15Z ArneBab joined #scheme 2021-02-02T01:08:13Z Riastradh joined #scheme 2021-02-02T01:19:11Z Blukunfando joined #scheme 2021-02-02T01:26:19Z koo5[d] joined #scheme 2021-02-02T01:26:47Z CasAM[d] joined #scheme 2021-02-02T01:27:54Z jacobpdq[d] joined #scheme 2021-02-02T01:29:37Z mdhughes joined #scheme 2021-02-02T01:30:13Z miasuji quit (Remote host closed the connection) 2021-02-02T01:30:19Z freeman42x[d] joined #scheme 2021-02-02T01:30:41Z miasuji joined #scheme 2021-02-02T01:35:44Z aindilis[d] joined #scheme 2021-02-02T01:44:51Z skapata quit (Ping timeout: 272 seconds) 2021-02-02T01:48:35Z dmiles[d] joined #scheme 2021-02-02T01:50:16Z miasuji quit (Remote host closed the connection) 2021-02-02T01:50:40Z miasuji joined #scheme 2021-02-02T01:51:47Z bitmapper joined #scheme 2021-02-02T01:55:23Z skapata joined #scheme 2021-02-02T02:03:52Z aoh quit (Ping timeout: 265 seconds) 2021-02-02T02:04:04Z fiddlerwoaroof quit (Ping timeout: 260 seconds) 2021-02-02T02:08:09Z ArneBab quit (Remote host closed the connection) 2021-02-02T02:09:18Z brainfunnel quit (Quit: thanks, bye!) 2021-02-02T02:09:25Z ArneBab joined #scheme 2021-02-02T02:09:25Z ArneBab quit (Changing host) 2021-02-02T02:09:25Z ArneBab joined #scheme 2021-02-02T02:10:23Z miasuji quit (Remote host closed the connection) 2021-02-02T02:10:46Z miasuji joined #scheme 2021-02-02T02:14:26Z fiddlerwoaroof joined #scheme 2021-02-02T02:18:29Z miasuji quit (Remote host closed the connection) 2021-02-02T02:18:51Z miasuji joined #scheme 2021-02-02T02:23:04Z aoh joined #scheme 2021-02-02T02:26:19Z ArneBab quit (Remote host closed the connection) 2021-02-02T02:27:35Z ArneBab joined #scheme 2021-02-02T02:27:35Z ArneBab quit (Changing host) 2021-02-02T02:27:35Z ArneBab joined #scheme 2021-02-02T02:32:24Z miasuji quit (Remote host closed the connection) 2021-02-02T02:32:36Z miasuji joined #scheme 2021-02-02T02:33:05Z mmohammadi9812 quit (Ping timeout: 240 seconds) 2021-02-02T02:33:16Z mmohammadi9812 joined #scheme 2021-02-02T02:33:36Z jcowan: aeth: YOu mean implementing Lua in CL? 2021-02-02T02:33:54Z aeth: after Scheme, yes 2021-02-02T02:37:13Z miasuji quit (Ping timeout: 265 seconds) 2021-02-02T02:47:02Z karlicoss[d] joined #scheme 2021-02-02T02:54:13Z pankajsg quit (Remote host closed the connection) 2021-02-02T03:12:05Z r3m quit (Quit: WeeChat 3.1-dev) 2021-02-02T03:15:00Z gravicappa joined #scheme 2021-02-02T03:33:59Z ArneBab quit (Remote host closed the connection) 2021-02-02T03:35:15Z ArneBab joined #scheme 2021-02-02T03:35:15Z ArneBab quit (Changing host) 2021-02-02T03:35:15Z ArneBab joined #scheme 2021-02-02T03:49:28Z aeth: jcowan: it's relevant here, though, because it would ideally share code with Airship Scheme 2021-02-02T03:55:46Z cjb joined #scheme 2021-02-02T03:58:41Z Garbanzo joined #scheme 2021-02-02T04:03:02Z imode quit (Ping timeout: 272 seconds) 2021-02-02T04:07:00Z Blukunfando quit (Ping timeout: 246 seconds) 2021-02-02T04:11:39Z ArneBab quit (Ping timeout: 258 seconds) 2021-02-02T04:12:57Z ArneBab joined #scheme 2021-02-02T04:32:35Z edgar-rft joined #scheme 2021-02-02T04:41:23Z miasuji joined #scheme 2021-02-02T04:46:53Z pankajsg joined #scheme 2021-02-02T04:52:37Z dieggsy: aeth: tell me about airship scheme 2021-02-02T05:17:24Z cjb quit (Quit: leaving) 2021-02-02T05:26:26Z euandreh quit (Ping timeout: 264 seconds) 2021-02-02T05:31:38Z aeth: dieggsy: https://gitlab.com/mbabich/airship-scheme/-/blob/master/README.md 2021-02-02T05:36:39Z dieggsy: aeth: damn, cool, hell yeah. i applaud this effort and will be following progress closely lol 2021-02-02T05:41:33Z aeth: well, thanks 2021-02-02T05:41:49Z aeth: It's kind of on hold for a month or so, but hopefully I'll get the motivation to finish it 2021-02-02T05:42:16Z aeth: the smallest, most easily realizable projects always drag on forever if they can't be done in a weekend 2021-02-02T05:53:19Z ArneBab quit (Remote host closed the connection) 2021-02-02T05:54:20Z nilgeisw joined #scheme 2021-02-02T05:54:35Z ArneBab joined #scheme 2021-02-02T05:54:49Z dieggsy: aeth: this seems like no small easy project tbh... 2021-02-02T05:54:58Z dieggsy: but i love the idea of it 2021-02-02T05:56:14Z nilgeisw quit (Remote host closed the connection) 2021-02-02T05:56:38Z nilgeisw joined #scheme 2021-02-02T06:24:05Z acarrico quit (Ping timeout: 240 seconds) 2021-02-02T06:24:43Z euandreh joined #scheme 2021-02-02T06:28:06Z skapata quit (Remote host closed the connection) 2021-02-02T06:45:12Z marusich quit (Ping timeout: 246 seconds) 2021-02-02T06:48:21Z ex_nihilo joined #scheme 2021-02-02T06:59:36Z marusich joined #scheme 2021-02-02T07:10:14Z Garbanzo quit (Ping timeout: 264 seconds) 2021-02-02T07:12:37Z gzj joined #scheme 2021-02-02T07:17:53Z duncanm: Riastradh: I just tried running `make cross-host` on my Intel Mac again, and I got this error 2021-02-02T07:18:05Z duncanm: ;Compiling file: "compiler/machine/rules3.nib" => "compiler/machine/rules3.moc"... 2021-02-02T07:18:05Z duncanm: ;illegal instruction syntax (imul q (r 1) (r 1) (r 0)) 2021-02-02T07:18:27Z duncanm: I'm at the HEAD of master, 6db111c1ea5a565bc081ea74888391d2ac7fc1fe 2021-02-02T07:19:29Z ex_nihilo: I've been trying to build mit-scheme-11.1, but I keep getting a make failure with "Error code 0x3a (fasload-compiled-mismatch)." 2021-02-02T07:19:37Z ex_nihilo: I built from source, doing ./Setup.sh && ./configure && make, which failed: 2021-02-02T07:19:45Z ex_nihilo: Bad compiled-code version in FASL File: make.com 2021-02-02T07:19:52Z ex_nihilo: File has: compiled-code interface 3; architecture 14. 2021-02-02T07:19:58Z ex_nihilo: Expected: compiled-code interface 4; architecture 14. 2021-02-02T07:20:13Z ex_nihilo: Here is a slightly longer report on Pastebin: https://pastebin.com/3UQwewd5 2021-02-02T07:20:24Z ex_nihilo: I'm not sure what to do about this; any ideas? 2021-02-02T07:25:40Z ex_nihilo: My OS is Linux Debian 2021-02-02T07:29:16Z miasuji quit (Remote host closed the connection) 2021-02-02T07:31:41Z miasuji joined #scheme 2021-02-02T07:32:33Z miasuji quit (Remote host closed the connection) 2021-02-02T07:32:47Z lockywolf: What are the "lenses" that I have seen quite a few people being excited about recently? 2021-02-02T07:35:58Z miasuji joined #scheme 2021-02-02T07:41:26Z jobol joined #scheme 2021-02-02T07:43:21Z ZombieChicken joined #scheme 2021-02-02T07:48:04Z ZombieChicken quit (Client Quit) 2021-02-02T07:52:41Z hugh_marera quit (Quit: Connection closed) 2021-02-02T07:53:19Z ecraven: an abstraction to access and modify parts inside a deeper structure 2021-02-02T07:53:21Z rgherdt joined #scheme 2021-02-02T07:54:03Z ecraven: so if you have '(1 (2 (3 . 4) 5) 6) you could have a "lens" that focuses on '(3 . 4), and use it to read that part of any similar structure, or even use it to create a *new* structure with something else instead of '(3 . 4) in that place 2021-02-02T07:54:40Z hugh_marera joined #scheme 2021-02-02T08:06:03Z miasuji quit (Quit: Leaving) 2021-02-02T08:06:25Z raingloom joined #scheme 2021-02-02T08:39:22Z Major_Biscuit joined #scheme 2021-02-02T08:55:25Z gzj quit (Ping timeout: 240 seconds) 2021-02-02T08:58:09Z amirouche joined #scheme 2021-02-02T09:00:00Z civodul joined #scheme 2021-02-02T09:03:12Z mdhughes quit (Ping timeout: 260 seconds) 2021-02-02T09:08:40Z hendursa1 joined #scheme 2021-02-02T09:09:49Z mdhughes joined #scheme 2021-02-02T09:10:47Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-02T09:15:29Z joast quit (Ping timeout: 265 seconds) 2021-02-02T09:23:52Z ces quit (Read error: Connection reset by peer) 2021-02-02T09:25:14Z gzj joined #scheme 2021-02-02T09:26:54Z GZJ0X_ joined #scheme 2021-02-02T09:30:25Z gzj quit (Ping timeout: 240 seconds) 2021-02-02T09:59:05Z GZJ0X_ quit (Remote host closed the connection) 2021-02-02T10:45:33Z dsp quit (Ping timeout: 264 seconds) 2021-02-02T10:45:58Z dsp joined #scheme 2021-02-02T10:48:13Z lortabac quit (Ping timeout: 260 seconds) 2021-02-02T11:41:56Z raingloom quit (Ping timeout: 265 seconds) 2021-02-02T11:49:58Z ex_nihilo: wrt my earlier comments about build failures for mit-scheme-11.1, I found this: https://lists.gnu.org/archive/html/mit-scheme-devel/2021-02/msg00001.html 2021-02-02T11:51:31Z ex_nihilo: apparently there were changes in the compiled code abi, so you must do a cross-build to go from 10.x to 11.1 2021-02-02T11:52:14Z ex_nihilo: ./configure --enable-cross-compiling --enable-native-code=x86-64 did the trick to get past the failure with make.com 2021-02-02T11:52:41Z aquijoule_ joined #scheme 2021-02-02T11:52:45Z richbridger quit (Ping timeout: 264 seconds) 2021-02-02T12:01:14Z ex_nihilo: but, now I have a new failure when building x11 2021-02-02T12:01:45Z ex_nihilo: echo '(generate-shim "x11" "#include \"x11-shim.h\"")' | ../run-build --batch-mode 2021-02-02T12:01:56Z ex_nihilo: ;Unassigned variable: current-filename 2021-02-02T12:22:51Z jeko joined #scheme 2021-02-02T12:28:43Z joast joined #scheme 2021-02-02T13:00:39Z ArneBab quit (Ping timeout: 258 seconds) 2021-02-02T13:02:13Z ArneBab joined #scheme 2021-02-02T13:03:02Z euandreh quit (Ping timeout: 264 seconds) 2021-02-02T13:03:46Z jeko quit (Quit: jeko) 2021-02-02T13:05:07Z ArneBab quit (Excess Flood) 2021-02-02T13:05:25Z ArneBab joined #scheme 2021-02-02T13:10:52Z mmohammadi9812 quit (Ping timeout: 265 seconds) 2021-02-02T13:11:23Z mmohammadi9812 joined #scheme 2021-02-02T13:11:45Z aeth quit (Ping timeout: 240 seconds) 2021-02-02T13:13:48Z aeth joined #scheme 2021-02-02T13:14:19Z ArneBab quit (Read error: Connection reset by peer) 2021-02-02T13:15:35Z ArneBab joined #scheme 2021-02-02T13:15:35Z ArneBab quit (Changing host) 2021-02-02T13:15:35Z ArneBab joined #scheme 2021-02-02T13:37:12Z euandreh joined #scheme 2021-02-02T13:38:29Z ArneBab quit (Remote host closed the connection) 2021-02-02T13:38:31Z xelxebar quit (Remote host closed the connection) 2021-02-02T13:38:49Z xelxebar joined #scheme 2021-02-02T13:39:45Z ArneBab joined #scheme 2021-02-02T13:39:45Z ArneBab quit (Changing host) 2021-02-02T13:39:45Z ArneBab joined #scheme 2021-02-02T13:39:57Z raingloom joined #scheme 2021-02-02T13:47:04Z elliott_ joined #scheme 2021-02-02T13:51:01Z mmohammadi9812 quit (Read error: Connection reset by peer) 2021-02-02T13:51:29Z mmohammadi9812 joined #scheme 2021-02-02T13:53:39Z ArneBab quit (Read error: Connection reset by peer) 2021-02-02T13:54:57Z ArneBab joined #scheme 2021-02-02T14:03:49Z ArneBab quit (Remote host closed the connection) 2021-02-02T14:05:05Z ArneBab joined #scheme 2021-02-02T14:05:15Z brainfunnel joined #scheme 2021-02-02T14:11:26Z imode joined #scheme 2021-02-02T14:15:45Z Major_Biscuit quit (Ping timeout: 240 seconds) 2021-02-02T14:15:57Z mmmattyx joined #scheme 2021-02-02T14:18:29Z skapata joined #scheme 2021-02-02T14:18:39Z Major_Biscuit joined #scheme 2021-02-02T14:22:18Z ArneBab quit (Ping timeout: 258 seconds) 2021-02-02T14:22:45Z ArneBab joined #scheme 2021-02-02T14:22:45Z ArneBab quit (Changing host) 2021-02-02T14:22:45Z ArneBab joined #scheme 2021-02-02T14:24:55Z madage quit (Quit: leaving) 2021-02-02T14:31:39Z ArneBab quit (Remote host closed the connection) 2021-02-02T14:32:55Z ArneBab joined #scheme 2021-02-02T14:32:55Z ArneBab quit (Changing host) 2021-02-02T14:32:55Z ArneBab joined #scheme 2021-02-02T14:37:10Z madage joined #scheme 2021-02-02T14:47:41Z skapata is now known as skp 2021-02-02T14:48:31Z phillbush joined #scheme 2021-02-02T14:57:03Z Riastradh: duncanm: What version are you building from, what version are you building, and do you have the full transcript? 2021-02-02T15:01:32Z Riastradh: ex_nihilo: Do you have a build transcript? Did you start over with a clean tree when you ran `./configure --enable-cross-compiling --enable-native-code=x86-64', or did you do that in a partially built tree and try to pick up where it left off? 2021-02-02T15:01:37Z ManDay joined #scheme 2021-02-02T15:02:55Z ManDay: Hey, I wanted to write a nested-list->string function which renders nested list a bit more comprehensibly, but I can't figure out how to generically turn the list elements into a string (like `(display)` is able to generically turn everything into a string)). I thought `->string` but that's not a thing 2021-02-02T15:02:58Z ManDay: what's the correct call? 2021-02-02T15:04:49Z ArneBab quit (Remote host closed the connection) 2021-02-02T15:05:08Z pinoaffe: ManDay: can you give me an example input and example output? 2021-02-02T15:06:05Z ArneBab joined #scheme 2021-02-02T15:06:05Z ArneBab quit (Changing host) 2021-02-02T15:06:05Z ArneBab joined #scheme 2021-02-02T15:06:09Z ManDay: you mean for my "nested-list->string"? 2021-02-02T15:07:37Z pinoaffe: ManDay: yes 2021-02-02T15:07:51Z pinoaffe: I don't know how you plan to render nested lists 2021-02-02T15:11:30Z ManDay: like this I thought https://dpaste.com/3JYSSS9J5 2021-02-02T15:11:51Z ManDay: (I built it using (display) directly now, but it would be nicer if I could turn it into a string instead) 2021-02-02T15:12:32Z aeth_ joined #scheme 2021-02-02T15:12:36Z aeth quit (Ping timeout: 240 seconds) 2021-02-02T15:14:32Z aeth_ is now known as aeth 2021-02-02T15:14:43Z ManDay: this is nicer: https://dpaste.com/EEG8H3MLV 2021-02-02T15:16:12Z gwatt: You can use string output ports to render arbitrary stuff into string form. 2021-02-02T15:16:39Z ManDay: yes, I'm aware I could abuse the port, but I thought there would be a direct way 2021-02-02T15:17:05Z ManDay: (to get the magic that `display` does without actually using `display`) 2021-02-02T15:33:19Z tdammers quit (Ping timeout: 256 seconds) 2021-02-02T15:36:25Z tdammers joined #scheme 2021-02-02T15:43:23Z hugh_marera quit (Quit: Connection closed) 2021-02-02T15:46:36Z hugh_marera joined #scheme 2021-02-02T16:25:42Z smazga joined #scheme 2021-02-02T16:29:33Z paulj joined #scheme 2021-02-02T16:34:13Z pinoaffe: ManDay: why do you not want to use display? 2021-02-02T16:34:29Z polezaivsani joined #scheme 2021-02-02T16:34:59Z ManDay: that's... actually a fair question 2021-02-02T16:35:25Z ManDay: I guess I just felt having it as a ..->string is more generally useful, though indeed I don't have any use for it beyond display 2021-02-02T16:35:31Z pinoaffe: also, in guile (and maybe in some other schemes) you can use (format #f "~a" blarg) to get a string containing the "displayed" representation of blarg 2021-02-02T16:35:59Z pinoaffe: format is in (ice-9 format) 2021-02-02T16:36:02Z mmohammadi9812 quit (Remote host closed the connection) 2021-02-02T16:36:25Z mmohammadi9812 joined #scheme 2021-02-02T16:36:29Z ManDay: ah, that's great to know. probably the best I'll find. thanks! 2021-02-02T16:39:43Z phillbush quit (Quit: Leaving) 2021-02-02T16:41:35Z ex_nihilo: Riastradh: I did start with a fresh build, starting from tar -xzf 2021-02-02T16:41:57Z ex_nihilo: Riastradh: here is a build transcript: https://privatebin.net/?da1d37e4ce03ea8b#78uH5Bj9cg2jBzMVqDtHiV6DAvyowHkvGR1UjLN6Fkqy 2021-02-02T16:44:22Z Riastradh: ex_nihilo: Can you try building from 10.1.11 instead of 10.1.10? 2021-02-02T16:49:11Z ManDay quit (Quit: WeeChat 3.0) 2021-02-02T16:50:07Z gproto023 joined #scheme 2021-02-02T16:50:53Z gproto023 quit (Client Quit) 2021-02-02T16:52:57Z ex_nihilo: Riastradh: that's a good idea; I will try that later today 2021-02-02T16:58:09Z mmohammadi9812 quit (Ping timeout: 264 seconds) 2021-02-02T17:01:06Z phillbush joined #scheme 2021-02-02T17:08:38Z mmohammadi9812 joined #scheme 2021-02-02T17:25:31Z Major_Biscuit quit (Ping timeout: 256 seconds) 2021-02-02T17:28:03Z Major_Biscuit joined #scheme 2021-02-02T17:30:20Z Garbanzo joined #scheme 2021-02-02T17:33:15Z acarrico joined #scheme 2021-02-02T17:37:52Z Major_Biscuit quit (Quit: WeeChat 2.9) 2021-02-02T17:40:34Z phillbush quit (Quit: Leaving) 2021-02-02T17:53:32Z ex_nihilo: Riastradh: Success! I already had the source for 10.1.11, but had never gotten around to installing it; when 11.1 was released I had forgotten all about 10.1.11. After your comment I built 10.11.1 from source and installed it, then built 11.1 from source with no problems; thanks for the tip. 2021-02-02T18:01:49Z Zipheir: Does anyone know who maintains rudybot? Given that the bot has been gone for almost a week, I've been considering running a replacement (any suggestions?) if it's not coming back. 2021-02-02T18:04:19Z wasamasa: offby1 2021-02-02T18:05:43Z Riastradh: ex_nihilo: cool 2021-02-02T18:25:27Z Zipheir: wasamasa: Is that someone's nick, the name of a bot implementation, or wholly unrelated? 2021-02-02T18:25:36Z wasamasa: it's someone's nickname 2021-02-02T18:27:16Z mmohammadi9812 quit (Ping timeout: 240 seconds) 2021-02-02T18:27:50Z mmohammadi9812 joined #scheme 2021-02-02T18:28:25Z Zipheir: wasamasa: Aha, ty. 2021-02-02T18:28:35Z wasamasa: they typically show up on #emacs 2021-02-02T18:29:09Z Zipheir: The only other Scheme bot I know of is vandusen. Maybe we could run a copy of it here. 2021-02-02T18:29:27Z Zipheir: rudybot's eval abilities have always been less than reliable. 2021-02-02T18:36:49Z brainfunnel quit (Quit: thanks, bye!) 2021-02-02T18:56:33Z civodul quit (Ping timeout: 272 seconds) 2021-02-02T18:57:47Z civodul joined #scheme 2021-02-02T19:01:21Z mangol joined #scheme 2021-02-02T19:06:29Z xelxebar quit (Ping timeout: 268 seconds) 2021-02-02T19:07:32Z xelxebar joined #scheme 2021-02-02T19:14:13Z Steeve joined #scheme 2021-02-02T19:18:06Z siraben: lockywolf: lenses are like getters and setters but generalized in many different ways 2021-02-02T19:19:14Z siraben: you can abstract over different (what would be called l-values in C++), perform traversals, and lenses have great compositional properties 2021-02-02T19:19:31Z siraben: different "store" locations* 2021-02-02T19:20:31Z siraben: imagine the jq tool (https://stedolan.github.io/jq/) but for any data type 2021-02-02T19:23:20Z mdhughes: What if someone here is already a bot and you don't know it? 2021-02-02T19:26:32Z Zipheir: Well, it's impossible to rule that possibility out. 2021-02-02T19:26:38Z gwatt: mdhughes: eval ((lambda (x) (x x)) (lambda (x) (x x))) 2021-02-02T19:26:56Z amirouche quit (Ping timeout: 240 seconds) 2021-02-02T19:27:05Z mdhughes: gwatt: That doesn't look like anything to me. 2021-02-02T19:28:21Z zgrep: I'd say we should all take a Turing test, but that only check if you're Alan Turing, so it wouldn't be as useful as I would've hoped. 2021-02-02T19:30:51Z phillbush joined #scheme 2021-02-02T19:37:30Z Zipheir: Alan Turing would probably fail such a test, given that most people now think of him as Benedict Cumberbatch in "The Imitation Game". 2021-02-02T19:37:50Z Zipheir: (Which weirdly depicted Turing as borderline autistic.) 2021-02-02T19:44:41Z klovett_ is now known as klovett 2021-02-02T19:45:41Z phillbush quit (Quit: Leaving) 2021-02-02T19:45:45Z mmohammadi9812 quit (Ping timeout: 240 seconds) 2021-02-02T19:46:13Z phillbush joined #scheme 2021-02-02T19:51:26Z mmohammadi9812 joined #scheme 2021-02-02T19:53:16Z brainfunnel joined #scheme 2021-02-02T19:53:25Z X-Scale` joined #scheme 2021-02-02T19:53:45Z X-Scale quit (Ping timeout: 240 seconds) 2021-02-02T19:54:10Z X-Scale` is now known as X-Scale 2021-02-02T19:54:36Z mdhughes: Also weird, Alan was a good-looking dude, and Benzedrine Crumplepants is a hideous English golem. 2021-02-02T19:56:34Z gravicappa quit (Ping timeout: 258 seconds) 2021-02-02T19:58:25Z ngz` joined #scheme 2021-02-02T20:10:44Z aeth_ joined #scheme 2021-02-02T20:12:29Z aeth quit (Disconnected by services) 2021-02-02T20:12:34Z aeth_ is now known as aeth 2021-02-02T20:19:31Z skp quit (Ping timeout: 272 seconds) 2021-02-02T20:24:20Z ngz` is now known as ngz 2021-02-02T20:31:55Z skapata joined #scheme 2021-02-02T20:33:35Z phwalkr joined #scheme 2021-02-02T20:39:14Z drakonis quit (Quit: ZNC 1.8.2 - https://znc.in) 2021-02-02T20:47:54Z drakonis joined #scheme 2021-02-02T20:51:17Z hendursa1 quit (Remote host closed the connection) 2021-02-02T20:52:03Z hendursa1 joined #scheme 2021-02-02T20:55:08Z seepel joined #scheme 2021-02-02T20:55:45Z nilgeisw quit (Ping timeout: 264 seconds) 2021-02-02T21:05:09Z elflng quit (Ping timeout: 246 seconds) 2021-02-02T21:06:11Z elflng joined #scheme 2021-02-02T21:17:24Z raingloom quit (Ping timeout: 246 seconds) 2021-02-02T21:24:31Z phillbush quit (Quit: Leaving) 2021-02-02T21:34:44Z Melchizedek6309 quit (Ping timeout: 240 seconds) 2021-02-02T21:51:29Z Blukunfando joined #scheme 2021-02-02T22:08:05Z izh_ joined #scheme 2021-02-02T22:08:12Z phwalkr quit 2021-02-02T22:12:33Z edgar-rft quit (Quit: Leaving) 2021-02-02T22:17:51Z Garbanzo quit (Remote host closed the connection) 2021-02-02T22:18:21Z Garbanzo joined #scheme 2021-02-02T22:19:00Z Garbanzo quit (Max SendQ exceeded) 2021-02-02T22:19:52Z Garbanzo joined #scheme 2021-02-02T22:20:31Z Garbanzo quit (Max SendQ exceeded) 2021-02-02T22:21:13Z Garbanzo joined #scheme 2021-02-02T22:21:51Z Garbanzo quit (Remote host closed the connection) 2021-02-02T22:22:16Z Garbanzo joined #scheme 2021-02-02T22:22:27Z Garbanzo quit (Max SendQ exceeded) 2021-02-02T22:38:27Z jobol quit (Quit: Leaving) 2021-02-02T22:40:04Z polezaivsani left #scheme 2021-02-02T22:40:15Z marusich quit (Ping timeout: 258 seconds) 2021-02-02T22:46:03Z izh_ quit (Quit: Leaving) 2021-02-02T22:51:54Z Steeve quit (Quit: end) 2021-02-02T22:56:41Z marusich joined #scheme 2021-02-02T23:04:24Z marusich quit (Ping timeout: 258 seconds) 2021-02-02T23:06:15Z civodul quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-02T23:10:17Z hendursa1 quit (Quit: hendursa1) 2021-02-02T23:10:37Z hendursaga joined #scheme 2021-02-02T23:13:41Z ngz quit (Ping timeout: 272 seconds) 2021-02-02T23:17:21Z cjb joined #scheme 2021-02-02T23:37:05Z duncanm: Riastradh: i'm trying to compile on my m1 machine again, i think i missed some steps last night when I tried 2021-02-02T23:37:18Z duncanm: Riastradh: is it possible to build on ARM directly without cross-compiling? 2021-02-02T23:39:07Z Riastradh: just omit `--enable-cross-compiling' 2021-02-02T23:41:57Z duncanm: oh! 2021-02-02T23:42:41Z duncanm: Riastradh: and instead of make cross-host, I just type 'make'? 2021-02-02T23:42:47Z Riastradh: correct 2021-02-02T23:43:05Z duncanm: Ahh, but there's this issue 2021-02-02T23:43:07Z Riastradh: `make' effectively just does `make cross-host' then `make cross-target' (with or without cross-compiling) 2021-02-02T23:43:16Z duncanm: *** Error in ./Setup.sh 2021-02-02T23:43:16Z duncanm: This script needs an existing MIT/GNU Scheme installation to function, 2021-02-02T23:43:16Z duncanm: but the program `mit-scheme' does not appear to run it. 2021-02-02T23:43:33Z Riastradh: Yes, you need an existing Scheme in order to build it from source. 2021-02-02T23:44:56Z mmohammadi9812 quit (Ping timeout: 240 seconds) 2021-02-02T23:47:55Z mmohammadi9812 joined #scheme 2021-02-02T23:51:37Z duncanm: hmm 2021-02-02T23:52:13Z duncanm: Riastradh: i got something new, when I tried late last night, i think i forgot about copying over the cross-host to the cross-target side completely 2021-02-02T23:52:19Z duncanm: but now I did all that, and I see this 2021-02-02T23:52:31Z duncanm: In file included from floenv.c:40: 2021-02-02T23:52:31Z duncanm: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/xmmintrin.h:13: 2021-02-02T23:52:31Z duncanm: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include/mmintrin.h:50:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of 2021-02-02T23:52:31Z duncanm: different size 2021-02-02T23:52:31Z duncanm: return (__m64)__builtin_ia32_vec_init_v2si(__i, 0); 2021-02-02T23:52:32Z duncanm: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2021-02-02T23:52:51Z Riastradh: oy 2021-02-02T23:53:00Z duncanm: i'm on the latest macOS and the latest Xcode 2021-02-02T23:53:11Z Riastradh: Do you have the complete transcript? 2021-02-02T23:53:22Z duncanm: on the ARM side? 2021-02-02T23:53:30Z Riastradh: My guess is that, after copying from x86 to arm, you didn't rerun configure in src/microcode. 2021-02-02T23:53:34Z Riastradh: All that said... 2021-02-02T23:53:43Z duncanm: duncan@ateji:src (master) % (cd microcode && ./configure --enable-native-code=aarch64le) 2021-02-02T23:53:43Z Riastradh: You can run mit-scheme-x86-64 under rosetta on the m1, right? 2021-02-02T23:53:56Z duncanm: I can, but I'm interested in getting it to run natively 2021-02-02T23:54:15Z Riastradh: If so, you can probably save yourself a lot of trouble by cross-compiling on the m1 itself. 2021-02-02T23:54:28Z duncanm: yeah, it's faster to do that than to scp files around 2021-02-02T23:54:43Z Riastradh: 1. Install mit-scheme-x86-64 11.1 and put it in PATH. 2021-02-02T23:55:04Z lloda``` joined #scheme 2021-02-02T23:55:12Z Riastradh: 2. Build 11.1 with `./configure --enable-cross-compiling --enable-native-code=aarch64le'. 2021-02-02T23:55:29Z duncanm: I've been following these instructions that I wrote down a few months ago, https://gist.github.com/duncanmak/fd8fa119ee2dfb4b2f15af8dc97adc84 2021-02-02T23:56:39Z lloda`` quit (Ping timeout: 246 seconds) 2021-02-02T23:57:06Z Riastradh: Sure, that's fine, but if you can run it all on the m1, you can skip a lot of that. If you have a working mit-scheme in your PATH (even if it's the amd64 version running via rosetta), then you can just do: 2021-02-02T23:57:10Z Riastradh: cd mit-scheme/src 2021-02-02T23:57:11Z Riastradh: ./Setup.sh 2021-02-02T23:57:24Z Riastradh: ./configure --enable-cross-compiling --enable-native-code=aarch64le 2021-02-02T23:57:25Z Riastradh: make 2021-02-02T23:58:15Z Riastradh: (That's how I test i386 and svm1 from time to time, on my amd64 laptop.) 2021-02-02T23:59:28Z duncanm: I can give it a try, i haven't really used rosetta at all yet 2021-02-02T23:59:44Z duncanm: but i thought you need to use this arch command to launch the executable under Rosetta 2021-02-03T00:00:20Z duncanm: https://eclecticlight.co/2021/01/27/how-rosetta-complicates-call-chains-on-m1-macs/ 2021-02-03T00:00:28Z Riastradh: If you can't simply exec mit-scheme directly, can you write a simple wrapper script? 2021-02-03T00:00:34Z Riastradh: #!/bin/sh 2021-02-03T00:00:48Z Riastradh: exec arch -x86_64 mit-scheme-x86-64 ${1+"$@"} 2021-02-03T00:01:02Z duncanm: that's one way 2021-02-03T00:01:04Z Riastradh: Put that in a file named `mit-scheme' (and chmod +x) in your PATH? 2021-02-03T00:01:11Z duncanm: yeah, this article says 2021-02-03T00:01:22Z duncanm: “In other words, when running code on Apple Silicon, macOS will keep to the same architecture through each calling chain. As some have already reported on Twitter, if you run a terminal app which is Intel-only, each shell that it launches also runs under Rosetta 2 and runs the Intel version of each tool which it calls, even though those tools may be Universal and have ARM-native code available too. When those tools 2021-02-03T00:01:22Z duncanm: haven’t already been translated by Rosetta 2, translation must occur before they can be run, causing a delay, even though they could have run their ARM-native code.” 2021-02-03T00:01:51Z Riastradh: (But is it even necessary to do that? It looks like that should really only be needed for deliberately running non-native architectures in universal binaries that have code for both.) 2021-02-03T00:02:18Z Riastradh: That is, have you tested one way or another, and verified that simply running `mit-scheme' when it's the amd64 version doesn't work? 2021-02-03T00:03:10Z duncanm: i need to get an intel binary of MIT Scheme onto the machine first 2021-02-03T00:03:18Z duncanm: the existing installer is too old, right? 2021-02-03T00:03:35Z Riastradh: curl -O https://ftp.gnu.org/gnu/mit-scheme/stable.pkg/11.1/mit-scheme-11.1-x86-64.tar.gz 2021-02-03T00:03:46Z Riastradh: tar xzf mit-scheme-11.1-x86-64.tar.gz 2021-02-03T00:03:59Z Riastradh: cd mit-scheme-11.1/src 2021-02-03T00:04:04Z Riastradh: ./configure --prefix=`pwd`/root 2021-02-03T00:04:05Z Riastradh: make 2021-02-03T00:04:06Z Riastradh: make install 2021-02-03T00:04:19Z duncanm: (and do all that under rosetta, right?) 2021-02-03T00:04:30Z Riastradh: maybe need 2021-02-03T00:04:35Z Riastradh: ./configure --prefix=`pwd`/root CFLAGS=-arch\ x86_64 2021-02-03T00:04:37Z Riastradh: or something like that 2021-02-03T00:04:40Z duncanm: hmm 2021-02-03T00:04:48Z duncanm: i'll play around tonight 2021-02-03T00:05:07Z Riastradh: or just build it on your Intel Mac and copy it over 2021-02-03T00:05:27Z Riastradh: (might be quicker than figuring out how to invoke the x86 toolchain on the arm system) 2021-02-03T00:11:25Z duncanm: i'm gonna have dinner now, but i've been building on my intel mac and copying it over to the m1 mac 2021-02-03T00:19:50Z rgherdt quit (Ping timeout: 264 seconds) 2021-02-03T00:38:55Z c7d9_ joined #scheme 2021-02-03T00:39:36Z daviid quit (Ping timeout: 240 seconds) 2021-02-03T00:42:05Z c7d9 quit (Ping timeout: 240 seconds) 2021-02-03T00:51:24Z bitmapper quit (Quit: Connection closed for inactivity) 2021-02-03T00:58:05Z skapate joined #scheme 2021-02-03T01:00:43Z skapata quit (Ping timeout: 272 seconds) 2021-02-03T01:04:29Z Melchizedek6809 joined #scheme 2021-02-03T01:31:14Z ex_nihilo quit (Ping timeout: 264 seconds) 2021-02-03T01:32:26Z bitmapper joined #scheme 2021-02-03T01:33:28Z daviid joined #scheme 2021-02-03T01:38:09Z pankajsg quit (Ping timeout: 246 seconds) 2021-02-03T01:58:28Z ex_nihilo joined #scheme 2021-02-03T02:11:48Z klovett quit (Remote host closed the connection) 2021-02-03T02:12:25Z klovett joined #scheme 2021-02-03T02:17:34Z madage quit (Remote host closed the connection) 2021-02-03T02:18:20Z madage joined #scheme 2021-02-03T02:37:08Z _rht joined #scheme 2021-02-03T02:51:20Z acarrico quit (Ping timeout: 258 seconds) 2021-02-03T02:59:28Z tryte quit (Ping timeout: 268 seconds) 2021-02-03T03:13:44Z brainfunnel quit (Quit: thanks, bye!) 2021-02-03T03:25:25Z mmmattyx quit (Quit: Connection closed for inactivity) 2021-02-03T03:47:50Z siraben: gwatt: ERROR: infinite recursion 2021-02-03T03:52:06Z Zipheir: Of course, a sophisticated AI wouldn't break on that; it would give a response a bit like Wheatley's solution to the Liar's Paradox in Portal 2: "Um... true. Yeah, I'm gonna say true." (cf. GEB on layers of knowledge) 2021-02-03T03:53:21Z seepel quit (Ping timeout: 264 seconds) 2021-02-03T03:55:31Z phillbush joined #scheme 2021-02-03T04:01:22Z phillbush quit (Quit: Leaving) 2021-02-03T04:26:08Z gravicappa joined #scheme 2021-02-03T04:30:44Z raingloom joined #scheme 2021-02-03T04:31:10Z duncanm: Riastradh: still around? 2021-02-03T04:32:13Z notzmv quit (Ping timeout: 260 seconds) 2021-02-03T04:33:06Z daviid quit (Ping timeout: 256 seconds) 2021-02-03T04:33:32Z Riastradh: duncanm: briefly 2021-02-03T04:33:53Z duncanm: I'm running Setup on my intel mac again and recording a typescript 2021-02-03T04:34:21Z duncanm: but when I ran it the last time, I got that clang error with the floats, do you think that's a real bug or is it just that I missed a step somehow? 2021-02-03T04:40:50Z notzmv joined #scheme 2021-02-03T04:46:43Z _rht quit (Quit: Connection closed for inactivity) 2021-02-03T04:49:52Z duncanm: Riastradh: yeah, i got the same error as last time 2021-02-03T04:50:00Z duncanm: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size 2021-02-03T04:50:57Z mmohammadi9812 quit (Ping timeout: 264 seconds) 2021-02-03T04:51:28Z mmohammadi9812 joined #scheme 2021-02-03T04:55:22Z pankajsg joined #scheme 2021-02-03T05:02:31Z mmohammadi9812 quit (Ping timeout: 256 seconds) 2021-02-03T05:06:29Z mmohammadi9812 joined #scheme 2021-02-03T05:06:34Z mmohammadi9812 quit (Client Quit) 2021-02-03T05:09:02Z Yardanico quit (Ping timeout: 264 seconds) 2021-02-03T05:16:56Z Yardanico joined #scheme 2021-02-03T05:56:48Z sdu_ joined #scheme 2021-02-03T05:58:54Z sdu quit (Ping timeout: 246 seconds) 2021-02-03T06:03:16Z freeman42x[d] quit (Ping timeout: 240 seconds) 2021-02-03T06:03:33Z karlicoss[d] quit (Ping timeout: 264 seconds) 2021-02-03T06:03:33Z koo5[d] quit (Ping timeout: 264 seconds) 2021-02-03T06:03:43Z CasAM[d] quit (Ping timeout: 256 seconds) 2021-02-03T06:04:09Z [d] quit (Ping timeout: 264 seconds) 2021-02-03T06:04:09Z aindilis[d] quit (Ping timeout: 258 seconds) 2021-02-03T06:04:32Z dmiles[d] quit (Ping timeout: 258 seconds) 2021-02-03T06:04:45Z jacobpdq[d] quit (Ping timeout: 264 seconds) 2021-02-03T06:11:51Z Riastradh: duncanm: full transcript? 2021-02-03T06:12:34Z Riastradh: and config.log? 2021-02-03T06:12:49Z duncanm: i'm trying to get my webhost back up so i can host files again ;-) 2021-02-03T06:13:08Z duncanm: Riastradh: or can you get me an account on mumble.net? ;-) 2021-02-03T06:25:29Z Riastradh: oh 2021-02-03T06:25:31Z Riastradh: duh 2021-02-03T06:25:33Z Riastradh: oy 2021-02-03T06:25:45Z Riastradh: CHRIS 2021-02-03T06:26:02Z duncanm: oh? 2021-02-03T06:26:10Z duncanm: tell me tell me 2021-02-03T06:26:19Z duncanm: cph broke something? 2021-02-03T06:26:55Z Riastradh: # define NEED_FEEXCEPT_WORKAROUND 2021-02-03T06:26:58Z Riastradh: comment that out in floenv.h 2021-02-03T06:27:04Z Riastradh: src/microcode/floenv.h 2021-02-03T06:27:33Z duncanm: on which machine? just the ARM machine? 2021-02-03T06:27:48Z siraben: This cross-compilation talk reminds me to fix CHICKEN cross-compilation in Nixpkgs 2021-02-03T06:28:03Z Riastradh: duncanm: yes 2021-02-03T06:28:18Z Riastradh: This is not a cross-compilation issue; this is a Chris put x86-specific crud under #ifdef __APPLE__ issue. 2021-02-03T06:28:35Z Riastradh: (cross-compilation is good actually and native compilation is bad) 2021-02-03T06:29:15Z Riastradh: (cross-compilation should always be the first-class way to do things, not a neglected option) 2021-02-03T06:29:16Z duncanm: floenv.c:503:33: error: use of undeclared identifier 'FE_DENORMALOPERAND' 2021-02-03T06:29:26Z Riastradh: # define FE_DENORMAL FE_DENORMALOPERAND 2021-02-03T06:29:28Z Riastradh: comment that ou ttoo 2021-02-03T06:30:09Z duncanm: cmpintmd.c:375:27: error: value size does not match register size specified by the constraint and modifier [-Werror,-Wasm-operand-widths] 2021-02-03T06:30:20Z duncanm: cmpintmd.c:373:10: note: use constraint modifier "w" 2021-02-03T06:30:30Z duncanm: cmpintmd.c:374:10: note: use constraint modifier "w" 2021-02-03T06:30:40Z duncanm: this machine *is* really fast, all those reviews aren't wrong about that 2021-02-03T06:30:48Z duncanm: and it doesn't get hot at all 2021-02-03T06:32:01Z Riastradh: ...OK, weird, I guess gcc and clang disagree on asm constraint syntax. 2021-02-03T06:32:43Z duncanm: yeah, it's from a while back, you wrote it 2021-02-03T06:32:46Z duncanm: 7fbfd0cbc0 (Taylor R Campbell 2019-01-21 375) 2021-02-03T06:32:55Z Riastradh: (of course, it is probably totally undocumented for clang) 2021-02-03T06:33:42Z duncanm: https://stackoverflow.com/questions/16850309/clang-llvm-inline-assembly-multiple-constraints-with-useless-spills-reload 2021-02-03T06:34:58Z Riastradh: https://mumble.net/~campbell/tmp/20210202/asm.patch 2021-02-03T06:35:01Z Riastradh: Try applying that patch? 2021-02-03T06:35:08Z jacobpdq[d] joined #scheme 2021-02-03T06:35:08Z dmiles[d] joined #scheme 2021-02-03T06:35:08Z karlicoss[d] joined #scheme 2021-02-03T06:35:08Z aindilis[d] joined #scheme 2021-02-03T06:35:08Z CasAM[d] joined #scheme 2021-02-03T06:35:08Z freeman42x[d] joined #scheme 2021-02-03T06:35:08Z koo5[d] joined #scheme 2021-02-03T06:35:08Z [d] joined #scheme 2021-02-03T06:37:01Z Riastradh: oh 2021-02-03T06:37:03Z Riastradh: maybe not 2021-02-03T06:37:26Z Riastradh: well, try anyway 2021-02-03T06:38:11Z duncanm: yeah, you get something else 2021-02-03T06:38:36Z Riastradh: Do you get a cmpintmd.o? 2021-02-03T06:38:56Z Riastradh: Looks like yes. 2021-02-03T06:39:06Z Riastradh: so yay, progress 2021-02-03T06:39:49Z Riastradh: ...why does `gcc' run clang 2021-02-03T06:39:56Z Riastradh: (never mind, maybe I don't want to know) 2021-02-03T06:40:34Z Riastradh: Hmm. Do you have gas, by any chance, instead of whatever bogus nonstandard assembler as is? 2021-02-03T06:41:40Z duncanm: i can see if homebrew can install it 2021-02-03T06:42:01Z jobol joined #scheme 2021-02-03T06:42:11Z duncanm: i dunno if i have a cmpintmd.o, i only see a microcode/cmpint.o 2021-02-03T06:42:37Z Riastradh: No microcode/cmpintmd.o? 2021-02-03T06:42:45Z Riastradh: oh 2021-02-03T06:42:53Z Riastradh: error down below 2021-02-03T06:43:05Z skapate quit (Remote host closed the connection) 2021-02-03T06:43:46Z Riastradh: duncanm: Missed the first part of the patch? 2021-02-03T06:43:50Z Riastradh: -aarch64_cache_line_sizes (unsigned *dsize, unsigned *isize) 2021-02-03T06:43:51Z Riastradh: +aarch64_cache_line_sizes (unsigned *dsizep, unsigned *isizep) 2021-02-03T06:44:03Z duncanm: oh yes, sorry 2021-02-03T06:48:33Z Riastradh: Or, is there an option you can pass to as to make it, uh, work? 2021-02-03T06:49:00Z Riastradh: Try searching the web for `apple assembler as' to find the man page, and, well... 2021-02-03T06:49:09Z Riastradh: `Working as an Assembler at Apple: Employee Reviews at indeed.com' 2021-02-03T06:49:17Z Riastradh: `iPhone Assembler Foxconn Sets Up Auto Arm as Apple Car Looms at msn.com' 2021-02-03T06:49:21Z Riastradh: wrong kind of assembler AND wrong kind of arm 2021-02-03T06:52:29Z Riastradh: revert that patch 2021-02-03T06:52:56Z Riastradh: https://mumble.net/~campbell/tmp/20210202/asm_v2.patch 2021-02-03T06:53:04Z Riastradh: er 2021-02-03T06:53:13Z imode quit (Ping timeout: 258 seconds) 2021-02-03T06:53:43Z Riastradh: reload 2021-02-03T06:56:14Z duncanm: i tried it and i still get the errors in cmpauxmd.s 2021-02-03T06:56:26Z Riastradh: yes, only fixes cmpintmd.c, not cmpauxmd.s 2021-02-03T06:57:18Z duncanm: what are these files for? 2021-02-03T06:57:27Z euandreh quit (Ping timeout: 260 seconds) 2021-02-03T06:58:01Z klovett quit (Remote host closed the connection) 2021-02-03T06:58:19Z klovett joined #scheme 2021-02-03T06:59:03Z euandreh joined #scheme 2021-02-03T07:00:14Z duncanm: oh, so cmpint is not some int comparison thing 2021-02-03T07:00:22Z duncanm: it's compiler interface 2021-02-03T07:00:29Z duncanm: compiled-code interface 2021-02-03T07:00:36Z Riastradh: cmpintmd.c is kind of the machine-dependent part of a dynamic linker 2021-02-03T07:01:26Z Riastradh: Fills in the code for procedure call stubs, &c., and flushes the icache when new code is generated. 2021-02-03T07:01:47Z Riastradh: cmpauxmd.m4 is the interface between the C microcode and compiled Scheme code 2021-02-03T07:02:01Z Riastradh: Every time you call a microcode primitive, it passes through the code in cmpauxmd. 2021-02-03T07:02:51Z Riastradh: It's a small amount of hand-written assembly. 2021-02-03T07:03:11Z Riastradh: But apparently Apple's clangy assembler has a different syntax from the GNU assembler. 2021-02-03T07:03:19Z Riastradh: And I have no idea where to find documentation for Apple's clangy assembler. 2021-02-03T07:05:39Z Riastradh: If you want to try chasing it down I can see about adapting cmpauxmd. 2021-02-03T07:05:45Z Riastradh: but for now I'm heading to bed. 2021-02-03T07:05:54Z duncanm: thanks Riastradh 2021-02-03T07:06:03Z duncanm: i have some friends who might know, i'll ask around 2021-02-03T07:06:20Z Riastradh: Did cmpintmd.o build with the updated patch? 2021-02-03T07:07:01Z duncanm: -rw-r--r-- 1 duncan staff 4268 Feb 3 01:55 microcode/cmpintmd.o 2021-02-03T07:07:02Z duncanm: yeah! 2021-02-03T07:07:23Z Riastradh: OK, pushed 2021-02-03T07:09:40Z duncanm: cool 2021-02-03T07:11:01Z Riastradh *zzz* 2021-02-03T07:34:16Z midre quit (Ping timeout: 240 seconds) 2021-02-03T07:35:11Z midre joined #scheme 2021-02-03T07:39:05Z jacobpdq[d] quit (Ping timeout: 240 seconds) 2021-02-03T07:39:05Z dmiles[d] quit (Ping timeout: 240 seconds) 2021-02-03T07:39:05Z karlicoss[d] quit (Ping timeout: 240 seconds) 2021-02-03T07:39:05Z aindilis[d] quit (Ping timeout: 240 seconds) 2021-02-03T07:39:05Z CasAM[d] quit (Ping timeout: 240 seconds) 2021-02-03T07:39:05Z freeman42x[d] quit (Ping timeout: 240 seconds) 2021-02-03T07:39:05Z koo5[d] quit (Ping timeout: 240 seconds) 2021-02-03T07:39:05Z [d] quit (Ping timeout: 240 seconds) 2021-02-03T07:48:43Z rgherdt joined #scheme 2021-02-03T07:51:00Z edgar-rft joined #scheme 2021-02-03T07:52:26Z sdu_ quit (Quit: leaving) 2021-02-03T07:52:57Z sdu joined #scheme 2021-02-03T08:07:50Z Anonymous_ quit (Remote host closed the connection) 2021-02-03T08:09:26Z ex_nihilo quit (Quit: Leaving) 2021-02-03T08:56:05Z Major_Biscuit joined #scheme 2021-02-03T08:58:36Z casaca quit (Ping timeout: 240 seconds) 2021-02-03T09:08:49Z hendursa1 joined #scheme 2021-02-03T09:10:42Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-03T09:12:29Z ravndal quit (Quit: WeeChat 3.0) 2021-02-03T09:14:51Z ravndal joined #scheme 2021-02-03T09:15:16Z shawnw joined #scheme 2021-02-03T09:20:35Z phillbush joined #scheme 2021-02-03T09:32:20Z hugh_marera quit (Quit: Connection closed) 2021-02-03T09:32:28Z jobol quit (Remote host closed the connection) 2021-02-03T09:32:42Z jobol joined #scheme 2021-02-03T09:32:49Z klovett quit (Read error: Connection reset by peer) 2021-02-03T09:33:25Z klovett joined #scheme 2021-02-03T09:34:11Z hugh_marera joined #scheme 2021-02-03T09:44:01Z Retropikzel quit (Quit: Leaving.) 2021-02-03T09:44:19Z Retropikzel joined #scheme 2021-02-03T09:50:19Z shawnw__ joined #scheme 2021-02-03T09:52:45Z shawnw quit (Ping timeout: 264 seconds) 2021-02-03T09:55:23Z aindilis[d] joined #scheme 2021-02-03T09:55:24Z koo5[d] joined #scheme 2021-02-03T09:55:24Z karlicoss[d] joined #scheme 2021-02-03T09:55:24Z jacobpdq[d] joined #scheme 2021-02-03T09:55:24Z CasAM[d] joined #scheme 2021-02-03T09:55:24Z freeman42x[d] joined #scheme 2021-02-03T09:55:24Z [d] joined #scheme 2021-02-03T09:55:24Z dmiles[d] joined #scheme 2021-02-03T10:15:59Z ArneBab quit (Read error: Connection reset by peer) 2021-02-03T10:17:16Z ArneBab joined #scheme 2021-02-03T10:32:42Z cjb quit (Quit: 'how did it get this late?') 2021-02-03T10:32:57Z freeman42x[d] quit (Remote host closed the connection) 2021-02-03T10:32:57Z koo5[d] quit (Remote host closed the connection) 2021-02-03T10:32:57Z karlicoss[d] quit (Remote host closed the connection) 2021-02-03T10:32:57Z CasAM[d] quit (Remote host closed the connection) 2021-02-03T10:32:57Z dmiles[d] quit (Remote host closed the connection) 2021-02-03T10:32:57Z [d] quit (Remote host closed the connection) 2021-02-03T10:32:57Z jacobpdq[d] quit (Remote host closed the connection) 2021-02-03T10:32:57Z aindilis[d] quit (Remote host closed the connection) 2021-02-03T10:38:12Z daviid` joined #scheme 2021-02-03T10:38:54Z [d] joined #scheme 2021-02-03T10:48:05Z Anonymous_ joined #scheme 2021-02-03T10:48:25Z amirouche joined #scheme 2021-02-03T10:56:14Z casaca joined #scheme 2021-02-03T11:10:02Z ArneBab quit (Ping timeout: 260 seconds) 2021-02-03T11:10:20Z ArneBab joined #scheme 2021-02-03T11:19:14Z ArneBab quit (Remote host closed the connection) 2021-02-03T11:20:28Z ArneBab joined #scheme 2021-02-03T11:20:28Z ArneBab quit (Changing host) 2021-02-03T11:20:28Z ArneBab joined #scheme 2021-02-03T11:39:24Z ArneBab quit (Remote host closed the connection) 2021-02-03T11:40:40Z ArneBab joined #scheme 2021-02-03T11:40:40Z ArneBab quit (Changing host) 2021-02-03T11:40:40Z ArneBab joined #scheme 2021-02-03T11:46:44Z Retropikzel quit (Quit: Leaving.) 2021-02-03T11:47:05Z Major_Biscuit quit (Ping timeout: 240 seconds) 2021-02-03T11:48:06Z mmohammadi9812 joined #scheme 2021-02-03T11:50:09Z Major_Biscuit joined #scheme 2021-02-03T11:57:34Z ArneBab quit (Remote host closed the connection) 2021-02-03T11:58:50Z ArneBab joined #scheme 2021-02-03T11:58:50Z ArneBab quit (Changing host) 2021-02-03T11:58:50Z ArneBab joined #scheme 2021-02-03T12:02:44Z ArneBab quit (Remote host closed the connection) 2021-02-03T12:04:01Z ArneBab joined #scheme 2021-02-03T12:04:02Z ArneBab quit (Changing host) 2021-02-03T12:04:02Z ArneBab joined #scheme 2021-02-03T12:12:26Z [d] quit (Remote host closed the connection) 2021-02-03T12:14:18Z nmeum quit (Read error: Connection reset by peer) 2021-02-03T12:14:55Z nmeum joined #scheme 2021-02-03T12:28:24Z ArneBab quit (Remote host closed the connection) 2021-02-03T12:29:40Z ArneBab joined #scheme 2021-02-03T12:29:40Z ArneBab quit (Changing host) 2021-02-03T12:29:40Z ArneBab joined #scheme 2021-02-03T12:38:04Z ArneBab quit (Remote host closed the connection) 2021-02-03T12:38:44Z ngz joined #scheme 2021-02-03T12:39:20Z ArneBab joined #scheme 2021-02-03T12:44:21Z ArneBab quit (Ping timeout: 258 seconds) 2021-02-03T12:44:36Z ArneBab joined #scheme 2021-02-03T12:56:34Z phillbush quit (Quit: Leaving) 2021-02-03T12:57:39Z ex_nihilo joined #scheme 2021-02-03T13:09:02Z ArneBab quit (Read error: Connection reset by peer) 2021-02-03T13:10:15Z ArneBab joined #scheme 2021-02-03T13:11:18Z civodul joined #scheme 2021-02-03T13:13:20Z iv-so joined #scheme 2021-02-03T13:27:50Z skapata joined #scheme 2021-02-03T13:40:06Z grobe0ba quit (Quit: ZNC 1.7.5 - https://znc.in) 2021-02-03T13:41:37Z grobe0ba joined #scheme 2021-02-03T13:45:11Z brainfunnel joined #scheme 2021-02-03T13:52:21Z mmohammadi9812 quit (Read error: Connection reset by peer) 2021-02-03T13:52:59Z mmohammadi9812 joined #scheme 2021-02-03T13:53:22Z acarrico joined #scheme 2021-02-03T13:56:45Z lloda``` quit (Remote host closed the connection) 2021-02-03T13:56:52Z lloda``` joined #scheme 2021-02-03T13:57:38Z lloda``` quit (Client Quit) 2021-02-03T13:57:58Z lloda joined #scheme 2021-02-03T13:59:40Z imode joined #scheme 2021-02-03T14:07:09Z Riastradh quit (Ping timeout: 246 seconds) 2021-02-03T14:14:42Z ArneBab quit (Read error: Connection reset by peer) 2021-02-03T14:16:00Z ArneBab joined #scheme 2021-02-03T14:20:27Z Blukunfando quit (Ping timeout: 246 seconds) 2021-02-03T14:23:16Z mmohammadi9812 quit (Ping timeout: 240 seconds) 2021-02-03T14:26:35Z Anonymous_ quit (Remote host closed the connection) 2021-02-03T14:27:02Z shawnw__ quit (Ping timeout: 264 seconds) 2021-02-03T14:42:54Z Riastradh joined #scheme 2021-02-03T14:47:06Z mmohammadi9812 joined #scheme 2021-02-03T14:59:36Z acarrico quit (Ping timeout: 240 seconds) 2021-02-03T15:03:36Z klovett quit (Remote host closed the connection) 2021-02-03T15:04:23Z klovett joined #scheme 2021-02-03T15:05:13Z X-Scale` joined #scheme 2021-02-03T15:06:36Z X-Scale quit (Ping timeout: 240 seconds) 2021-02-03T15:06:36Z X-Scale` is now known as X-Scale 2021-02-03T15:13:58Z phillbush joined #scheme 2021-02-03T15:19:00Z Major_Biscuit quit (Ping timeout: 272 seconds) 2021-02-03T15:21:39Z Major_Biscuit joined #scheme 2021-02-03T15:21:51Z Anonymous_ joined #scheme 2021-02-03T15:32:11Z euandreh quit (Ping timeout: 272 seconds) 2021-02-03T15:34:46Z euandreh joined #scheme 2021-02-03T15:37:27Z klovett quit (Remote host closed the connection) 2021-02-03T15:37:44Z klovett joined #scheme 2021-02-03T15:39:21Z even4void joined #scheme 2021-02-03T15:44:21Z ecraven: hm.. does anyone know things about RScheme? I've just now come across that for the first time, is it abandoned? 2021-02-03T15:50:17Z Riastradh: I thought it looked kind of abandoned over a decade ago. 2021-02-03T15:51:02Z ecraven: and after 15 seconds of looking at it, it seems like it can only be built using itself.. 2021-02-03T15:56:09Z acarrico joined #scheme 2021-02-03T15:58:19Z ecraven: ok, the last snapshot I can find on archive.org seems to build fine 2021-02-03T16:00:15Z even4void: htop 2021-02-03T16:00:33Z even4void: *bad terminal, sorry for the noise 2021-02-03T16:03:40Z jcowan: I used it in my Implementation Contrasts 2021-02-03T16:04:32Z jcowan: which means I built it successfully on both 32-bit and 64-bit Linux 2021-02-03T16:05:56Z ecraven: just came across it because someone on 2021-02-03T16:06:05Z ecraven: #lisp said that it was like prefix-dylan's successor 2021-02-03T16:08:13Z remby joined #scheme 2021-02-03T16:08:35Z remby: is it always possible in scheme to print data structures becuase they are made from s-expressions? 2021-02-03T16:08:36Z amirouche quit (Ping timeout: 246 seconds) 2021-02-03T16:10:43Z even4void quit (Quit: leaving) 2021-02-03T16:11:48Z mangol: remby: yes, but only in a cheeky sense: any unreadable objects in the data structure will be printed as #<...placeholder text here...> 2021-02-03T16:12:21Z remby: mangol: I guess those would be like binary objects? 2021-02-03T16:12:26Z mangol: the point of the #<...> syntax is that it cannot be read back in; it causes a read error 2021-02-03T16:12:41Z remby: ah nice 2021-02-03T16:12:48Z mangol: remby: perhaps counterintuitively, binary data is quite easy to read and print. just use hex or base64 for example. 2021-02-03T16:13:15Z mangol: the trouble comes from environment-dependent objects like ports (files, sockets, processes) 2021-02-03T16:13:49Z jcowan: Procedures as well. 2021-02-03T16:14:02Z remby: why with procedures? 2021-02-03T16:14:29Z remby: possibly because of continuations? 2021-02-03T16:14:34Z mangol: yes. procedures could in theory be printed as source code or bytecode, but that's rarely done. femtolisp prints bytecode 2021-02-03T16:14:42Z jcowan: Just so. 2021-02-03T16:15:04Z remby: thanks guys :) 2021-02-03T16:15:38Z mangol: #<...> doesn't actually seem to be standard syntax in RnRS. what does RnRS say about printing unreadable objects? 2021-02-03T16:17:56Z mangol: ecraven: Riastradh: jcowan: if any of you can build RScheme, please give me the build instructions so we can add it to https://containers.scheme.org/ 2021-02-03T16:18:15Z mangol: i tried building some version of it in 2019 or 2020 and it was so difficult that i gave up 2021-02-03T16:18:43Z mangol: that was possibly a randomly hacked github fork; if there's a working release, would be ideal 2021-02-03T16:22:31Z choas quit (Read error: Connection reset by peer) 2021-02-03T16:24:20Z cky quit (Quit: BRB, rebooting) 2021-02-03T16:25:22Z mangol: also, known-good releases of RScheme should be added to https://files.scheme.org/ 2021-02-03T16:26:06Z cky joined #scheme 2021-02-03T16:32:03Z gwatt: mangol: not every object has an external representation. 2021-02-03T16:37:03Z mangol: gwatt: see above discussion 2021-02-03T16:40:41Z cky: It'd be hilarious to see a Scheme implementation that prints unprintable objects as # 2021-02-03T16:41:27Z amirouche joined #scheme 2021-02-03T16:42:07Z choas joined #scheme 2021-02-03T16:42:07Z choas quit (Read error: Connection reset by peer) 2021-02-03T16:42:23Z ecraven: mangol: I'll try to add it to the benchmarks, if I get it running 2021-02-03T16:42:36Z ecraven: so I might package it for arch's AUR, to get that up 2021-02-03T16:42:36Z mangol: should be added in the same implementation where all the error messages are single words, and compound conditions are lists of words: '(too few args) 2021-02-03T16:42:37Z ecraven: and 2021-02-03T16:42:39Z Riastradh: (make-ohno 'foo) 2021-02-03T16:42:39Z Riastradh: ;Value: # 2021-02-03T16:42:48Z ecraven: I should really base the benchmarks on your containers ;) 2021-02-03T16:42:52Z cky: ^_^ 2021-02-03T16:42:59Z Riastradh: (define-record-type (make-ohno nope) ohno? (nope ohno-nope)) 2021-02-03T16:43:00Z Riastradh: (define-print-method ohno? (lambda (ohno port) ohno (write-string "#" port))) 2021-02-03T16:43:29Z mangol: Riastradh: one does not simply print foo 2021-02-03T16:43:54Z gwatt: mangol: I was poorly answering the question "what does RnRS say about printing unreadable objects?". Rnrs makes no statements that I can find on printing objects without an external representation 2021-02-03T16:46:06Z mangol: gwatt: fair enough, and sounds like the RnRS thing to do :) 2021-02-03T16:46:19Z mmohammadi9812 quit (Read error: Connection reset by peer) 2021-02-03T16:46:31Z mmohammadi9812 joined #scheme 2021-02-03T16:47:34Z mangol: ecraven: great! you seem to have rights to https://github.com/scheme-containers as well 2021-02-03T16:48:15Z mangol: can you add an rscheme repo with a build script there if you get it working? i can turn it into a Dockerfile and post it to Docker Hub 2021-02-03T16:49:31Z mangol: re: errors, topical vintage Yegge: "Microsoft to Introduce Mutually Recursive Error Messages Software giant Microsoft announced today the launch of their new REDRUM platform, an elegant system that allows Windows system error messages to shuffle blame around indefinitely by using continuation-passing." 2021-02-03T16:49:41Z ecraven: mangol: I'll see what 2021-02-03T16:49:46Z ecraven: I can do, it will take a few days at least 2021-02-03T16:50:01Z ecraven: but seems to be straightforward, just need to test it a bit, whether it actually works 2021-02-03T16:50:33Z mangol: sounds good 2021-02-03T16:52:08Z choas joined #scheme 2021-02-03T16:52:09Z choas quit (Read error: Connection reset by peer) 2021-02-03T16:53:44Z mangol: ecraven: basing r7rs-benchmarks on scheme-containers sounds great, but Docker may cause some slowdown 2021-02-03T16:54:17Z mangol: best would be to put the build instructions in executable s-expression forms in https://github.com/schemedoc/implementation-metadata 2021-02-03T16:54:30Z mangol: that form could be translated to a Dockerfile or a shell script 2021-02-03T16:59:28Z Zipheir: my-unprintable-object ;=> #<"Wovon man nicht sprechen kann, darüber muß man schweigen."> 2021-02-03T16:59:39Z mangol: we have a winner 2021-02-03T17:00:40Z mangol: clearly someone needs to write a REPL ricing SRFI 2021-02-03T17:00:56Z mangol: the demand is mounting 2021-02-03T17:02:16Z ecraven: haha, seems *I* already packaged rscheme for AUR years ago 2021-02-03T17:02:20Z choas joined #scheme 2021-02-03T17:02:20Z choas quit (Read error: Connection reset by peer) 2021-02-03T17:04:04Z mangol: :D yeah: https://repology.org/project/rscheme/versions 2021-02-03T17:05:15Z ecraven: would be good to get documentation to generate as well, jade doesn't like the sgml, it seems... 2021-02-03T17:06:34Z ecraven: and it's even part of the benchmarks already... wow, my memory really is bad 2021-02-03T17:06:57Z mangol: or your productivity is really high 2021-02-03T17:07:04Z Zipheir: Hah, I have no idea how you keep track of all those Schemes as it is. 2021-02-03T17:07:22Z ecraven: not high enough, I've lost access to the usual benchmarking machine, I'll need to do a new run sometime soon 2021-02-03T17:07:42Z ecraven: but that was baremetal, I'd like to keep it that way, not run inside virtualization 2021-02-03T17:07:54Z badkins joined #scheme 2021-02-03T17:11:45Z ecraven: interesting, Donovan Kolbly seems to be at Atlassian now 2021-02-03T17:12:26Z choas joined #scheme 2021-02-03T17:12:26Z choas quit (Read error: Connection reset by peer) 2021-02-03T17:18:39Z madage quit (Quit: leaving) 2021-02-03T17:23:09Z phillbush quit (Quit: Leaving) 2021-02-03T17:27:31Z choas joined #scheme 2021-02-03T17:27:31Z choas quit (Read error: Connection reset by peer) 2021-02-03T17:29:11Z badkins quit (Remote host closed the connection) 2021-02-03T17:29:45Z badkins joined #scheme 2021-02-03T17:31:39Z klovett quit (Remote host closed the connection) 2021-02-03T17:32:14Z klovett joined #scheme 2021-02-03T17:32:31Z choas joined #scheme 2021-02-03T17:32:51Z choas quit (Read error: Connection reset by peer) 2021-02-03T17:34:25Z badkins quit (Ping timeout: 240 seconds) 2021-02-03T17:41:57Z malaclyps quit (Ping timeout: 264 seconds) 2021-02-03T17:42:28Z choas joined #scheme 2021-02-03T17:42:28Z choas quit (Read error: Connection reset by peer) 2021-02-03T17:44:32Z malaclyps joined #scheme 2021-02-03T17:47:32Z choas joined #scheme 2021-02-03T17:49:07Z choas quit (Read error: Connection reset by peer) 2021-02-03T17:52:28Z jobol quit (Remote host closed the connection) 2021-02-03T17:52:41Z jobol joined #scheme 2021-02-03T17:53:43Z Raphael[m]2 left #scheme 2021-02-03T17:57:31Z choas joined #scheme 2021-02-03T17:57:31Z choas quit (Read error: Connection reset by peer) 2021-02-03T17:58:03Z badkins joined #scheme 2021-02-03T18:01:04Z madage joined #scheme 2021-02-03T18:07:05Z ManDay joined #scheme 2021-02-03T18:07:38Z choas joined #scheme 2021-02-03T18:08:00Z choas quit (Read error: Connection reset by peer) 2021-02-03T18:09:51Z ecraven: does bigloo actually implement complex numbers, but hide them behind some switch, or does it just not implement them at all? 2021-02-03T18:11:54Z Major_Biscuit quit (Ping timeout: 272 seconds) 2021-02-03T18:13:15Z gwatt: ecraven: Apparently no. 2021-02-03T18:13:22Z gwatt: > Bigloo has only three kinds of numbers: fixnum, long fixnum and flonum. Operations on complexes and rationals are not implemented 2021-02-03T18:13:52Z ManDay quit (Quit: WeeChat 3.0) 2021-02-03T18:14:20Z rcg joined #scheme 2021-02-03T18:15:17Z remby quit (Ping timeout: 256 seconds) 2021-02-03T18:18:17Z mangol: wow i didn't know it doesn't have rationals either. since bigloo's main goal is C/Java interop i guess that makes sense 2021-02-03T18:18:40Z mangol: i wish it had the R7RS library system but they say it would be hard to add 2021-02-03T18:18:53Z rcg is now known as remby 2021-02-03T18:19:04Z ecraven: I should work more on r7rs-coverage :-/ 2021-02-03T18:19:32Z mangol: https://ecraven.github.io/r7rs-coverage/ -- looks great! 2021-02-03T18:19:52Z ecraven: but it's severly deficient, it doesn't work as well as I want it to 2021-02-03T18:19:56Z mangol: can we host some of your stuff under scheme.org? 2021-02-03T18:19:58Z ecraven: also, it should be expanded for r7rs-large ;) 2021-02-03T18:20:19Z ecraven: of course, I've just been wanting to clean everything up (for years) ;D 2021-02-03T18:20:56Z ecraven: for example, r7rs-benchmark should really catch stdout/stderr during compile- and runtime, and show both, so you can actually *see* what's gone wrong 2021-02-03T18:21:15Z acarrico quit (Ping timeout: 246 seconds) 2021-02-03T18:21:31Z ecraven: I've been meaning to write a simple "run-as-r7rs" program, but - alas - it's been years since I started, and I haven't gotten anywhere really useful yet 2021-02-03T18:22:01Z gwatt: ecraven: while you're at it, can you publish your r6rs->r7rs compat layer used for r6rs schemes in the performance benchmarks? 2021-02-03T18:22:06Z ecraven: I'd also love to get more information into the benchmarks, to explain *why* some systems are slower / faster, and get people to see the tradeoffs made 2021-02-03T18:22:26Z ecraven: gwatt: I don't have a general one, I just have a separate prelude for each scheme, which is part of the benchmark repo 2021-02-03T18:22:42Z choas joined #scheme 2021-02-03T18:22:52Z ecraven: but someone (maybe more than one person?) did write r7rs-for-r6rs, I believe 2021-02-03T18:23:08Z mangol: gwatt: in addition to ecraven's preludes, https://github.com/okuoku/yuni may be close to what you want 2021-02-03T18:23:39Z ecraven: my preludes really are rather hackish, I don't know these systems very well, I just try to find something that works 2021-02-03T18:23:44Z ecraven: so in a sense, not ideal for benchmarking :-/ 2021-02-03T18:23:55Z mangol: or https://gitlab.com/akkuscm/akku-r7rs or will clinger's and taylan's code in https://github.com/pre-srfi/r6rs-r7rs-compat 2021-02-03T18:25:02Z mangol: those projects are the compat layers i know of 2021-02-03T18:25:07Z gwatt: mangol: neat, thanks 2021-02-03T18:25:38Z gwatt: ecraven: in the bench script you reference a directory `/home/nex/scheme/chez` as a library search path 2021-02-03T18:25:39Z mangol: gwatt: also see explanation of the main from john and will, https://github.com/pre-srfi/r6rs-r7rs-compat/issues/4 2021-02-03T18:25:47Z ecraven: ah, sorry, that code is on github, a second 2021-02-03T18:25:49Z mangol: *main points 2021-02-03T18:26:06Z ecraven: gwatt: https://github.com/ecraven/chez-scheme-libraries 2021-02-03T18:26:15Z gwatt: ah, ok 2021-02-03T18:26:18Z ecraven: I should really put more of my code online, but it's all very proof-of-concept 2021-02-03T18:27:04Z mangol: we now have an RScheme container: docker run -it schemers/rscheme 2021-02-03T18:27:18Z mangol: https://github.com/scheme-containers/rscheme 2021-02-03T18:27:37Z gwatt: ecraven: no worries. I still need to figure out my threading stuff 2021-02-03T18:27:52Z mangol: ecraven: based on the same tarball you used to build the RScheme AUR package. that tarball has disappeared from the web 2021-02-03T18:28:02Z ecraven: I've put it on github, ecraven/rscheme 2021-02-03T18:28:06Z ecraven: taken from archive.org 2021-02-03T18:28:19Z mangol: but i was able to find a copy at web.archive.org and uploaded it here: https://files.scheme.org/rs-0.7.3.4-b7.tar.gz 2021-02-03T18:28:23Z ecraven: great! 2021-02-03T18:28:46Z mangol: nice that multiple people are archiving files :) 2021-02-03T18:29:14Z mangol: in general, if anyone has any esoteric Scheme files, please send them for inclusion at https://files.scheme.org/ 2021-02-03T18:29:18Z mangol: so we don't lose them 2021-02-03T18:30:05Z mangol: that collection is tracked in git so every files is hashed and changes are logged in the git history 2021-02-03T18:30:22Z ecraven: does anyone have a simple, portable implementation of `exact-integer-sqrt'? 2021-02-03T18:31:39Z Riastradh: duncanm: FYI, I pushed some potential fixes for macOS/aarch64. Still need documentation for Apple's assembler to figure out the rest. 2021-02-03T18:31:52Z Riastradh: ecraven: https://git.savannah.gnu.org/cgit/mit-scheme.git/tree/src/runtime/primitive-arithmetic.scm?id=d102b20a4634882ee3e1c2be300f77b2ca507655#n680 (just s/int://g) 2021-02-03T18:31:52Z choas quit (Read error: Connection reset by peer) 2021-02-03T18:31:54Z duncanm: Riastradh: thanks! 2021-02-03T18:32:58Z Riastradh: duncanm: So if you can find documentation for the assembler, that might help! 2021-02-03T18:32:59Z mangol: is newton's method the default thing to use for integer square roots? 2021-02-03T18:34:15Z badkins quit (Remote host closed the connection) 2021-02-03T18:35:11Z mangol: ecraven: Riastradh: jcowan: just found out Donovan Kolbly has more RScheme development under his github profile: https://github.com/dkolbly/rscheme 2021-02-03T18:35:16Z mangol: ...including a docker container :D 2021-02-03T18:35:26Z jcowan: Awesomesauce. 2021-02-03T18:35:33Z mangol: but it's from 2014 2021-02-03T18:36:07Z duncanm: Riastradh: yeah, i'll ask around 2021-02-03T18:36:15Z jcowan: What of it? In Scheme, as in the Foundation trilogy, we speak of necessary centuries (or at least decades). 2021-02-03T18:36:26Z mangol: the probable etymology of saucer is so awesome 2021-02-03T18:37:03Z mangol: the place you put sauce so it doesn't land in your lap 2021-02-03T18:37:08Z ecraven: Riastradh: great, thank you! 2021-02-03T18:37:39Z seepel joined #scheme 2021-02-03T18:38:00Z choas joined #scheme 2021-02-03T18:39:14Z mangol: ecraven: more on run scripts: since we have the docker containers, it would be nice to have an eval command in each of them that would read code from stdin and write to stdout/stderr 2021-02-03T18:39:45Z ecraven: I'll have to see how well your containers work with podman, I'm not touching actual docker :P 2021-02-03T18:39:54Z ecraven: but most things work fine (or even better than docker) with podman 2021-02-03T18:39:58Z mangol: cat pictures | docker run schemers/whatever r7rs-eval 2021-02-03T18:40:15Z mangol: what's podman? i presume it's at most tangentially related to pod people in plural 2021-02-03T18:40:25Z ecraven: hm.. shouldn't that work fine by just putting a /usr/bin/run-as-r7rs script in each container? 2021-02-03T18:40:34Z mangol: it should 2021-02-03T18:40:46Z mmohammadi9812 quit (Read error: Connection reset by peer) 2021-02-03T18:40:54Z mangol: it'd be nice if we could guarantee that error messages and stack traces go to stderr, not stdout 2021-02-03T18:40:57Z mmohammadi9812 joined #scheme 2021-02-03T18:40:58Z amirouche roll eyes about podman 2021-02-03T18:41:01Z mangol: so stdout can be reserved for (write ...) output 2021-02-03T18:41:12Z ecraven: amirouche: roll all you want, I'm not running a docker daemon locally ;) 2021-02-03T18:41:19Z badkins joined #scheme 2021-02-03T18:41:47Z amirouche: the fact that is daemonless is a good thing 2021-02-03T18:41:58Z ecraven: it's also rootless, which is just as nice ;) 2021-02-03T18:42:02Z choas quit (Read error: Connection reset by peer) 2021-02-03T18:42:13Z mangol: cosmopolitan docker 2021-02-03T18:43:08Z choas joined #scheme 2021-02-03T18:43:59Z duncanm: Riastradh: is it really just one issue, which is the comment character? 2021-02-03T18:43:59Z choas quit (Read error: Connection reset by peer) 2021-02-03T18:44:02Z ecraven: Riastradh: integer-length is ceiling of log2? 2021-02-03T18:46:41Z amirouche: rootless is good 2021-02-03T18:46:53Z amirouche: I rolleyes at redhat with systemd xp 2021-02-03T18:47:05Z amirouche: but seems like this time, from the outside, it looks good. 2021-02-03T18:47:08Z ecraven: hehe, that's fine, I think I've mostly given up on them, given that 2021-02-03T18:47:14Z ecraven: I only used them for CentOS 2021-02-03T18:47:25Z ecraven: I'll just have to look into AppArmor instead of SELinux 2021-02-03T18:48:40Z mangol: amirouche: docker can be quite unreliable, especially on non-linux platforms under heavy load 2021-02-03T18:48:58Z mangol: i think it also runs some daemon(s) in the background, maybe as root 2021-02-03T18:50:24Z amirouche: idk, all my code runs in the cloud :p 2021-02-03T18:50:41Z amirouche: serless cloud even 2021-02-03T18:50:46Z mangol: we have a dedicated docker server thanks to a benefactor on these chans; i can make accounts for more schemers on demand 2021-02-03T18:51:25Z amirouche: what is the os? 2021-02-03T18:51:30Z mangol: debian 2021-02-03T18:53:15Z duncanm: Riastradh: have you tried /* */ comments? 2021-02-03T18:53:17Z choas joined #scheme 2021-02-03T18:53:42Z duncanm: also it looks like @ might be a valid comment character 2021-02-03T18:53:42Z choas quit (Read error: Connection reset by peer) 2021-02-03T18:54:01Z mangol: Zipheir: re: earlier discussion on unspeakable objects in Scheme, apparently there is a Wittgenstein esoteric language: https://esolangs.org/wiki/Wittgen 2021-02-03T18:54:18Z mangol: two instructions, turing complete 2021-02-03T18:55:19Z gwatt: pssh, the x86 mov instruction is turing complete all by itself 2021-02-03T18:56:16Z gwatt: https://github.com/xoreaxeaxeax/movfuscator 2021-02-03T18:56:21Z seepel quit (Ping timeout: 264 seconds) 2021-02-03T18:56:25Z mangol: +1 to that 2021-02-03T18:56:34Z mangol: "subtract and branch is negative" is turing-complete by itself IIRC 2021-02-03T18:57:01Z mangol: anyway. "It is the goal of Wittgen development to be able to provide responses, if not solutions, to some of the problems he poses. 2021-02-03T18:57:46Z mangol: that's such a subtle and winning turn of phrase 2021-02-03T18:58:37Z duncanm: Riastradh: hmm, right now it's complaining about two things, after I pulled your new changes 2021-02-03T18:58:51Z duncanm: this '#' character 2021-02-03T18:58:55Z duncanm: cmpauxmd.s:129:18: error: expected compatible register, symbol or integer in range [0, 4095] 2021-02-03T18:58:55Z duncanm: add REGS, REGS, #Registers$PAGEOFF // address of register block 2021-02-03T18:58:55Z duncanm: ^ 2021-02-03T18:59:11Z duncanm: the .size 2021-02-03T18:59:16Z duncanm: cmpauxmd.s:182:2: error: unknown directive 2021-02-03T18:59:16Z duncanm: .size _interface_to_C,.-_interface_to_C 2021-02-03T18:59:19Z Zipheir: I wonder if it supports '#lang W1' and '#lang W2' options. The latter just produces weird koans about the meaning of symbols. 2021-02-03T18:59:45Z amirouche quit (Ping timeout: 246 seconds) 2021-02-03T19:01:24Z mangol: corresponding to Tractatus and Philosophical Investigations respectively? 2021-02-03T19:02:04Z mangol: you could send them a pull request, but what would it really mean? 2021-02-03T19:02:18Z skapate joined #scheme 2021-02-03T19:03:20Z choas joined #scheme 2021-02-03T19:04:14Z choas quit (Read error: Connection reset by peer) 2021-02-03T19:04:21Z skapata quit (Ping timeout: 272 seconds) 2021-02-03T19:04:28Z skapate is now known as skapata 2021-02-03T19:06:42Z Zipheir: Exactly. 2021-02-03T19:08:02Z jobol quit (Read error: Connection reset by peer) 2021-02-03T19:08:16Z choas joined #scheme 2021-02-03T19:09:14Z Zipheir: "I realize, however, that I have an overpoweringly strong bias against [the Philosophical Investigations], for, if it is true, philosophy is, at best, a slight help to lexicographers, and at worst, an idle tea-table amusement." (Russell) 2021-02-03T19:09:27Z jobol joined #scheme 2021-02-03T19:09:37Z ecraven: has anyone tried which is the most portable r7rs Scheme (that runs on most systems)? I'd guess something like chibi? 2021-02-03T19:10:51Z mangol: chibi is a good bet. gambit and chicken are very portable and have usable but not complete R7RS support 2021-02-03T19:10:56Z duncanm: ecraven: haha, kawa! ;-) 2021-02-03T19:11:07Z ecraven: duncanm: I thought maybe one of the java ones ;) 2021-02-03T19:11:09Z duncanm: you just need someone else to port the JVM for you 2021-02-03T19:11:16Z Zipheir: My only portability experiment with chibi was compiling it on an Android (aarch64) phone under Termux, where it runs just fine. 2021-02-03T19:13:20Z duncanm: Riastradh: this might be relevant? https://github.com/below/HelloSilicon 2021-02-03T19:13:55Z duncanm: Clang requires the source register to be 32-Bit. This makes sense, because with these extensions, the upper 32 Bit of a 64-Bit register will never be touched: 2021-02-03T19:13:55Z duncanm: ADD X2, X1, W0, SXTB 2021-02-03T19:13:55Z duncanm: The GNU Assembler seems to ignore this and allows you to specify a 64-Bit source register. 2021-02-03T19:20:23Z jobol_ joined #scheme 2021-02-03T19:22:09Z jobol quit (Read error: Connection reset by peer) 2021-02-03T19:26:57Z seepel joined #scheme 2021-02-03T19:27:50Z gwatt: that's fair of gas 2021-02-03T19:28:45Z choas quit (Ping timeout: 264 seconds) 2021-02-03T19:30:42Z choas joined #scheme 2021-02-03T19:30:42Z choas quit (Read error: Connection reset by peer) 2021-02-03T19:36:52Z badkins quit (Remote host closed the connection) 2021-02-03T19:37:53Z phillbush joined #scheme 2021-02-03T19:39:39Z remby quit (Ping timeout: 246 seconds) 2021-02-03T19:40:47Z choas joined #scheme 2021-02-03T19:41:13Z badkins joined #scheme 2021-02-03T19:43:30Z gravicappa quit (Ping timeout: 246 seconds) 2021-02-03T19:43:41Z amirouche joined #scheme 2021-02-03T19:44:35Z remby joined #scheme 2021-02-03T19:44:35Z choas quit (Read error: Connection reset by peer) 2021-02-03T19:45:47Z gwatt: also, aarch64 documents state that you can use sxtb with 64 bit registers 2021-02-03T19:45:47Z choas joined #scheme 2021-02-03T19:45:56Z choas quit (Read error: Connection reset by peer) 2021-02-03T19:50:47Z choas joined #scheme 2021-02-03T19:52:57Z seepel quit (Ping timeout: 246 seconds) 2021-02-03T19:53:56Z klovett quit (Remote host closed the connection) 2021-02-03T19:54:14Z klovett joined #scheme 2021-02-03T19:54:46Z choas quit (Read error: Connection reset by peer) 2021-02-03T19:55:45Z choas joined #scheme 2021-02-03T19:56:14Z choas quit (Read error: Connection reset by peer) 2021-02-03T19:57:16Z phillbush quit (Quit: Leaving) 2021-02-03T19:58:43Z mmohammadi9812 quit (Remote host closed the connection) 2021-02-03T19:59:01Z mmohammadi9812 joined #scheme 2021-02-03T20:00:46Z choas joined #scheme 2021-02-03T20:04:46Z Zipheir: mangol: Congrats on the new SRFI. Looks interesting. 2021-02-03T20:12:21Z seepel joined #scheme 2021-02-03T20:17:04Z amirouche quit (Ping timeout: 258 seconds) 2021-02-03T20:22:09Z jobol_ quit (Quit: Leaving) 2021-02-03T20:32:09Z phillbush joined #scheme 2021-02-03T20:37:27Z mangol: Zipheir: thanks. not invented by me; i just transcribed it. in fact, if someone knows where it's from, the inventor should be credited. 2021-02-03T20:37:45Z Riastradh: duncanm: FYI, you'll need start over from a clean tree with the change I just made (or delete microcode/configure and rerun Setup.sh and configure). 2021-02-03T20:38:05Z mangol: Riastradh: do you recognize whether MIT Scheme was the first to have this shorthand: https://srfi.schemers.org/srfi-219/srfi-219.html 2021-02-03T20:38:33Z Riastradh: ecraven: Yes, (integer-length x) is ceil(log_2 x), or the smallest n such that (arithmetic-shift x (- n)) is zero. 2021-02-03T20:42:16Z Riastradh: duncanm: @ does not start a comment in standard aarch64 assembly syntax, and gas does not support it. (arm32, yes, but not aarch64) 2021-02-03T20:42:42Z Riastradh: mangol: No idea, but it's been in MIT Scheme for at least three decades. 2021-02-03T20:44:08Z mangol: the 30-year-old implementations are MIT, Chez, Gambit. of those, MIT is the only one that has it. 2021-02-03T20:44:39Z Riastradh: duncanm: Looks like gas supports /* */ without saying so in the documentation. Can you confirm that Apple's assembler accepts it? 2021-02-03T20:45:53Z Riastradh: Ah, it's in the MI part of the gas manual, not the MD part which describes @, #, and //, OK. 2021-02-03T21:03:56Z [d] joined #scheme 2021-02-03T21:22:28Z remby quit (Read error: No route to host) 2021-02-03T21:22:45Z remby joined #scheme 2021-02-03T21:28:17Z choas_ joined #scheme 2021-02-03T21:28:25Z choas quit (Read error: Connection reset by peer) 2021-02-03T21:28:25Z choas_ quit (Read error: Connection reset by peer) 2021-02-03T21:30:54Z remby quit (Quit: Konversation terminated!) 2021-02-03T21:33:16Z choas joined #scheme 2021-02-03T21:33:16Z choas quit (Read error: Connection reset by peer) 2021-02-03T21:39:10Z choas joined #scheme 2021-02-03T21:40:06Z choas quit (Read error: Connection reset by peer) 2021-02-03T21:43:02Z duncanm: Riastradh: did you push more code past the ref-manual commit? 2021-02-03T21:43:46Z choas joined #scheme 2021-02-03T22:17:12Z duncanm: Riastradh: ah, now we see fewer errors, https://gist.github.com/duncanmak/702825f554acaeeec0c9ad111e492589 2021-02-03T22:17:22Z duncanm: cmpauxmd.s:129:14: error: expect relocation specifier in operand after ':' 2021-02-03T22:17:39Z duncanm: 12 errors 2021-02-03T22:20:45Z acarrico joined #scheme 2021-02-03T22:22:42Z amirouche joined #scheme 2021-02-03T22:32:50Z mangol: it's incredible how much expressive power is packed into the unassuming syntax-rules. there's always some surprise technique you didn't know about 2021-02-03T22:33:25Z mangol: someone should write a syntax-rules advent calendar, "30 days of syntax-rules" or something like that. every day reveals a new trick. 2021-02-03T22:35:47Z Riastradh: duncanm: derp, reversed the sense of the conditional definition of ADRL 2021-02-03T22:35:54Z Riastradh: swap the branches of the ifdef 2021-02-03T22:37:47Z Riastradh: (also, maybe the comment syntax was a red herring; reviewing the previous logs I don't see why I came to that conclusion, probably misread the errors about .size) 2021-02-03T22:38:22Z ngz quit (Ping timeout: 260 seconds) 2021-02-03T22:38:49Z Riastradh: duncanm: or, pull 2021-02-03T22:39:05Z duncanm: and I need to build from scratch on intel again, right? 2021-02-03T22:39:07Z Riastradh: (can just run make again, no need to clean whole tree and start over with this change) 2021-02-03T22:39:13Z duncanm: nice 2021-02-03T22:39:56Z Riastradh: (only reason for cleaning tree earlier was that it involved a change to configure.ac which needs Setup.sh to regen configure to regen Makefile to update rule to expand cmpauxmd.m4->cmpauxmd.s with new `-P __APPLE__,1' argument to m4) 2021-02-03T22:40:03Z duncanm: cmpauxmd.s:130:18: error: expected compatible register, symbol or integer in range [0, 4095] 2021-02-03T22:40:03Z duncanm: add REGS, REGS, #Registers$PAGEOFF // address of register block 2021-02-03T22:40:22Z badkins quit (Remote host closed the connection) 2021-02-03T22:40:46Z duncanm: this looks like the earlier error again 2021-02-03T22:40:47Z Riastradh: See if removing the # in the definition of ADRL works? 2021-02-03T22:40:55Z Riastradh: add $1, $1, #$2@PAGEOFF')', 2021-02-03T22:40:57Z Riastradh: on that line 2021-02-03T22:41:14Z Riastradh: ...wait, `$'? 2021-02-03T22:41:19Z duncanm: https://gist.github.com/duncanmak/3f7ac9ee53d4c10058362c116f423631 2021-02-03T22:42:07Z Riastradh: Well, try removing the `#' and see if that makes a difference...but also, not sure why the message has `$' where the source has `@'. 2021-02-03T22:43:23Z civodul quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-03T22:44:50Z duncanm: hmm 2021-02-03T22:44:51Z duncanm: like this? 2021-02-03T22:44:55Z duncanm: - add $1, $1, #$2@PAGEOFF')', 2021-02-03T22:44:55Z duncanm: + add $1, $1, $2@PAGEOFF)', 2021-02-03T22:44:57Z Riastradh: yes 2021-02-03T22:45:16Z amirouche quit (Ping timeout: 276 seconds) 2021-02-03T22:45:44Z amirouche joined #scheme 2021-02-03T22:46:02Z duncanm: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/m4:stdin:522: ERROR: end of file in argument list 2021-02-03T22:46:15Z duncanm: I don't know how quoting works in m4 2021-02-03T22:46:48Z Riastradh: sha256sum aarch64.m4 2021-02-03T22:46:55Z duncanm: https://gist.github.com/duncanmak/3f7ac9ee53d4c10058362c116f423631#file-gistfile2-txt 2021-02-03T22:47:06Z Riastradh: oh, you removed a ' 2021-02-03T22:47:15Z Riastradh: just remove the # 2021-02-03T22:47:31Z Riastradh: - add $1, $1, #$2@PAGEOFF')', 2021-02-03T22:47:31Z Riastradh: + add $1, $1, $2@PAGEOFF')', 2021-02-03T22:47:46Z duncanm: then I'm back to the old error 2021-02-03T22:47:53Z duncanm: cmpauxmd.s:130:18: error: expected compatible register, symbol or integer in range [0, 4095] 2021-02-03T22:47:53Z duncanm: add REGS, REGS, Registers$PAGEOFF // address of register block 2021-02-03T22:47:59Z Riastradh: paste cmpauxmd.s? 2021-02-03T22:48:15Z duncanm: the makefile deleted it 2021-02-03T22:48:20Z Riastradh: bah 2021-02-03T22:48:38Z Riastradh: make cmpauxmd.s 2021-02-03T22:48:40Z Riastradh: paste 2021-02-03T22:49:47Z duncanm: https://gist.github.com/duncanmak/3f7ac9ee53d4c10058362c116f423631#file-cmpauxmd-s 2021-02-03T22:50:05Z duncanm: somehow, the @ turned into $ 2021-02-03T22:50:15Z Riastradh: whisky tango foxtrot 2021-02-03T22:50:21Z Riastradh: @ is getting translated to $ 2021-02-03T22:50:29Z duncanm: is m4 doing something there? 2021-02-03T22:51:00Z Riastradh: err 2021-02-03T22:51:10Z Riastradh: makegen/m4.sh 2021-02-03T22:51:12Z Riastradh: !?!?? 2021-02-03T22:53:01Z duncanm: run_m4 < "${TMP_FILE}" | sed -e 's/@/$/g' -e 's/^^L$//' 2021-02-03T22:53:03Z Riastradh: pull 2021-02-03T22:53:07Z Riastradh: ...in a moment 2021-02-03T22:53:21Z Riastradh: ok, pull 2021-02-03T22:54:22Z Riastradh: #### MAJOR NOTE: $ signifies immediate values to AS on the Vax. 2021-02-03T22:54:22Z Riastradh: #### However, M4 also uses $ to signify macro constants, 2021-02-03T22:54:22Z Riastradh: #### thus we use @ here to signify immediate values and a sed script 2021-02-03T22:54:22Z Riastradh: #### is run on the output of M4 to change them to $. 2021-02-03T22:54:23Z Riastradh: heh 2021-02-03T22:55:28Z Riastradh: (and delete cmpauxmd.s so it will get rebuilt) 2021-02-03T22:55:33Z duncanm: yeah 2021-02-03T22:55:36Z duncanm: now we get something new: https://gist.github.com/duncanmak/3f7ac9ee53d4c10058362c116f423631#file-gistfile3-txt 2021-02-03T22:55:48Z duncanm: Undefined symbols for architecture arm64: 2021-02-03T22:56:41Z duncanm: where's that comment from? 2021-02-03T22:57:30Z Riastradh: pull 2021-02-03T22:58:06Z duncanm: add REGS, REGS, #SYMBOL(Registers)@PAGEOFF // address of register block 2021-02-03T22:58:13Z duncanm: m4 is playing tricks with $ and # again 2021-02-03T22:58:23Z Riastradh: ? 2021-02-03T22:59:24Z duncanm: my tree has no outstanding changes, https://gist.github.com/duncanmak/3f7ac9ee53d4c10058362c116f423631#file-gistfile2-txt 2021-02-03T22:59:27Z Riastradh: pfeh 2021-02-03T22:59:53Z duncanm: oh oh, you did mean to say #SYMBOL(....) 2021-02-03T23:01:14Z Riastradh: pull 2021-02-03T23:05:23Z Riastradh: pull once more 2021-02-03T23:07:30Z duncanm: huh 2021-02-03T23:07:32Z duncanm: unable to mmap executable heap -- native code will probably fail/bin/sh: line 1: 84943 Illegal instruction: 4 ../run-build --batch-mode --fasl make.bin 2021-02-03T23:07:55Z Riastradh: cool 2021-02-03T23:08:14Z ecraven: ok, s7 packaged for arch linux, I'll play around with that some ;) 2021-02-03T23:08:25Z Riastradh: Time to find out how to work around W^X on macOS...or redesign MIT Scheme's compiled code ABI again. 2021-02-03T23:11:07Z Riastradh: hmm 2021-02-03T23:11:39Z duncanm: By enforcing W^X, Apple will harden Mac security at the memory level. App developers, however, won’t be left out in the cold — if they still need those optimization programs for their apps, they can use a new macOS API that provides a way to switch between write and execute permissions quickly and safely. 2021-02-03T23:13:12Z ecraven: is it normal that `chez-scheme --version' prints to stderr, not stdout?? 2021-02-03T23:14:03Z duncanm: However, many Just In Time (JIT) compilers rely on memory being writable and executable simultaneously. To account for this, a new API (pthread_jit_write_protect) will allow pages to quickly switch between being writable and being executable. This works per-thread, so two different threads can see different permissions for the same memory page. This will enable multi-threaded JIT compilers to be both fast and secure. 2021-02-03T23:14:22Z duncanm: Riastradh: does that help? ^ 2021-02-03T23:14:52Z ecraven: wait, what? you say *either* W *or* X, then you allow two threads to do different things at the same time? that seems... insecure :P 2021-02-03T23:15:10Z Riastradh: Going to require a bit of work. 2021-02-03T23:15:32Z duncanm: i've heard of this before, but don't know it in detail 2021-02-03T23:15:51Z duncanm: from cursory googling, it looks like OpenBSD enforces this also, from quite a while back? 2021-02-03T23:15:53Z Riastradh: Actually maybe this won't require any substantial redesign of the compiled code ABI. 2021-02-03T23:16:11Z Riastradh: (because I already did the important parts of that redesign a couple years ago) 2021-02-03T23:16:17Z Riastradh: But it will require a little work. 2021-02-03T23:17:28Z cobax joined #scheme 2021-02-03T23:23:25Z amirouche quit (Ping timeout: 240 seconds) 2021-02-03T23:23:58Z cobax quit (Read error: Connection reset by peer) 2021-02-03T23:24:03Z duncanm: Riastradh: well, if you've some changes for me to test, let me know 2021-02-03T23:24:10Z Riastradh: ok 2021-02-03T23:24:44Z Riastradh: will take a little while 2021-02-03T23:36:33Z hyiltiz quit (Ping timeout: 264 seconds) 2021-02-03T23:40:50Z rgherdt quit (Ping timeout: 264 seconds) 2021-02-03T23:47:35Z hyiltiz joined #scheme 2021-02-03T23:47:35Z hyiltiz quit (Changing host) 2021-02-03T23:47:35Z hyiltiz joined #scheme 2021-02-04T00:01:43Z badkins joined #scheme 2021-02-04T00:06:05Z badkins quit (Ping timeout: 240 seconds) 2021-02-04T00:23:29Z badkins joined #scheme 2021-02-04T00:28:37Z badkins quit (Ping timeout: 276 seconds) 2021-02-04T00:32:34Z badkins joined #scheme 2021-02-04T00:36:48Z badkins quit (Ping timeout: 246 seconds) 2021-02-04T00:37:31Z c7d9 joined #scheme 2021-02-04T00:38:32Z codingquark_ joined #scheme 2021-02-04T00:39:38Z codingquark quit (Quit: oh my) 2021-02-04T00:39:44Z marusich joined #scheme 2021-02-04T00:41:21Z c7d9_ quit (Ping timeout: 264 seconds) 2021-02-04T00:46:40Z teardown_ joined #scheme 2021-02-04T00:49:53Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T00:50:52Z teardown_ quit (Remote host closed the connection) 2021-02-04T00:56:57Z teardown joined #scheme 2021-02-04T01:00:09Z teardown quit (Remote host closed the connection) 2021-02-04T01:02:01Z teardown joined #scheme 2021-02-04T01:05:12Z phillbush quit (Remote host closed the connection) 2021-02-04T01:17:04Z badkins joined #scheme 2021-02-04T01:17:36Z teardown_ joined #scheme 2021-02-04T01:21:20Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T01:30:40Z teardown joined #scheme 2021-02-04T01:34:17Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T01:35:50Z teardown_ joined #scheme 2021-02-04T01:38:36Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T01:40:50Z teardown joined #scheme 2021-02-04T01:41:41Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T01:45:57Z teardown_ joined #scheme 2021-02-04T01:49:05Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T01:51:19Z teardown joined #scheme 2021-02-04T01:55:52Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T02:00:37Z teardown_ joined #scheme 2021-02-04T02:05:07Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T02:05:31Z acarrico quit (Ping timeout: 258 seconds) 2021-02-04T02:20:56Z teardown joined #scheme 2021-02-04T02:24:51Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T02:27:42Z teardown_ joined #scheme 2021-02-04T02:32:15Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T02:40:54Z teardown joined #scheme 2021-02-04T02:42:39Z hendursa1 quit (Quit: hendursa1) 2021-02-04T02:42:56Z hendursaga joined #scheme 2021-02-04T02:45:12Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T02:47:53Z teardown_ joined #scheme 2021-02-04T02:48:42Z seepel quit (Ping timeout: 272 seconds) 2021-02-04T02:51:59Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T03:00:28Z teardown joined #scheme 2021-02-04T03:04:19Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T03:05:34Z teardown_ joined #scheme 2021-02-04T03:08:38Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T03:10:58Z teardown joined #scheme 2021-02-04T03:15:25Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T03:16:15Z teardown_ joined #scheme 2021-02-04T03:18:30Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T03:28:38Z pankajsg quit (Ping timeout: 265 seconds) 2021-02-04T03:34:11Z teardown joined #scheme 2021-02-04T03:36:12Z raingloom quit (Ping timeout: 272 seconds) 2021-02-04T03:37:25Z dieggsy: there's no r5rs/r7rs way to define a symbol as syntax, right? (as in, my-syntax as opposed to (my-syntax)) 2021-02-04T03:37:37Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T03:40:18Z Zipheir: Nope. 2021-02-04T03:44:30Z teardown_ joined #scheme 2021-02-04T03:47:19Z dieggsy: solid 2021-02-04T03:48:43Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T03:48:59Z Zipheir: You can't do it with syntax-case or IR macros, either. I think you'd need a reader macro. 2021-02-04T03:49:47Z brainfunnel quit (Quit: thanks, bye!) 2021-02-04T03:51:26Z teardown joined #scheme 2021-02-04T03:53:28Z dieggsy: Zipheir: yeah, i don't need to do it as such. I'm porting a racket library and exploring my options as I go. In general i've fallen into a groove, but this is a weirder, less schemey part of the library 2021-02-04T03:55:30Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T03:56:19Z mzan quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) 2021-02-04T03:58:35Z Zipheir: dieggsy: Interesting that you can do it in Racket. 2021-02-04T03:58:35Z mzan joined #scheme 2021-02-04T04:00:09Z dieggsy: Zipheir: apparently chez, too, FWIW . something something identifier-syntax 2021-02-04T04:00:33Z teardown_ joined #scheme 2021-02-04T04:04:45Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T04:05:33Z teardown joined #scheme 2021-02-04T04:08:27Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T04:09:55Z duncanm: Riastradh: there's this MAP_JIT thing for Apple, https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-jit 2021-02-04T04:10:41Z duncanm: there's an issue for the JDK https://bugs.openjdk.java.net/browse/JDK-8253816 2021-02-04T04:11:59Z duncanm: https://github.com/openjdk/jdk/pull/2200 2021-02-04T04:13:40Z teardown_ joined #scheme 2021-02-04T04:18:19Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T04:18:44Z teardown joined #scheme 2021-02-04T04:21:24Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T04:23:51Z teardown_ joined #scheme 2021-02-04T04:24:29Z teardown quit (Ping timeout: 268 seconds) 2021-02-04T04:28:49Z teardown joined #scheme 2021-02-04T04:29:35Z ChanServ has set mode +o Zipheir 2021-02-04T04:30:10Z teardown [~zaifir@98.4.178.27] has been kicked from #scheme by Zipheir (Excess join/quit. Please fix your client.) 2021-02-04T04:30:22Z ChanServ has set mode -o Zipheir 2021-02-04T04:31:16Z teardown_ quit (Ping timeout: 268 seconds) 2021-02-04T04:36:21Z Blukunfando joined #scheme 2021-02-04T04:45:18Z gravicappa joined #scheme 2021-02-04T05:01:37Z pankajsg joined #scheme 2021-02-04T05:23:27Z badkins quit (Remote host closed the connection) 2021-02-04T05:24:01Z badkins joined #scheme 2021-02-04T05:29:34Z badkins quit (Ping timeout: 272 seconds) 2021-02-04T05:36:50Z skapate joined #scheme 2021-02-04T05:36:50Z skapata is now known as Guest11537 2021-02-04T05:36:50Z skapate is now known as skapata 2021-02-04T05:39:54Z mmohammadi9812 quit (Read error: Connection reset by peer) 2021-02-04T05:40:03Z mmohammadi9812 joined #scheme 2021-02-04T05:40:13Z Guest11537 quit (Ping timeout: 272 seconds) 2021-02-04T05:42:09Z badkins joined #scheme 2021-02-04T05:46:42Z badkins quit (Ping timeout: 258 seconds) 2021-02-04T05:49:43Z skapata quit (Ping timeout: 272 seconds) 2021-02-04T05:50:25Z mmohammadi9812 quit (Ping timeout: 240 seconds) 2021-02-04T05:51:21Z mmohammadi9812 joined #scheme 2021-02-04T05:52:09Z imode quit (Ping timeout: 264 seconds) 2021-02-04T05:55:24Z skapate joined #scheme 2021-02-04T06:09:27Z skapate quit (Remote host closed the connection) 2021-02-04T06:12:47Z choas quit (Read error: Connection reset by peer) 2021-02-04T06:18:14Z choas joined #scheme 2021-02-04T06:38:39Z seepel joined #scheme 2021-02-04T06:43:16Z ex_nihilo quit (Quit: Leaving) 2021-02-04T07:00:21Z imode joined #scheme 2021-02-04T07:04:14Z midre quit (Ping timeout: 264 seconds) 2021-02-04T07:05:45Z mmohammadi9812 quit (Ping timeout: 240 seconds) 2021-02-04T07:06:24Z mmohammadi9812 joined #scheme 2021-02-04T07:08:04Z marusich quit (Ping timeout: 265 seconds) 2021-02-04T07:29:13Z jobol joined #scheme 2021-02-04T07:36:16Z midre joined #scheme 2021-02-04T07:41:19Z hugh_marera quit (Quit: Connection closed) 2021-02-04T07:43:55Z hugh_marera joined #scheme 2021-02-04T07:44:45Z rgherdt joined #scheme 2021-02-04T07:46:45Z civodul joined #scheme 2021-02-04T07:50:57Z hyiltiz quit (Ping timeout: 264 seconds) 2021-02-04T07:51:24Z bitmapper quit (Quit: Connection closed for inactivity) 2021-02-04T07:51:50Z hyiltiz joined #scheme 2021-02-04T07:54:59Z mangol: Zipheir: dieggsy: the R6RS standard version of syntax-case lets us define identifier syntax 2021-02-04T07:55:08Z mangol: (define-syntax foo (lambda (x) (syntax-case x () (foo 123)))) 2021-02-04T07:55:25Z mangol: if you do that, `foo` by itself without parentheses expands to 123 2021-02-04T07:55:34Z mmohammadi9812 quit (Quit: Quit) 2021-02-04T07:56:07Z mangol: however, Kawa's syntax-case implementation has a quirk in that that doesn't work. Kawa doesn't claim to conform to R6RS 2021-02-04T07:58:15Z mangol: sorry, (define-syntax foo (lambda (x) (syntax-case x (foo) (foo 123))) 2021-02-04T07:59:18Z marusich joined #scheme 2021-02-04T07:59:21Z mangol: if you omit the (foo) literal then the (foo 123) pattern matches any expression, including foo, (foo), and (foo 1 2 3)! 2021-02-04T08:02:45Z mangol: it might be worth standardizing Chez's identifier-syntax (https://www.scheme.com/tspl4/syntax.html). i thought we have a SRFI about it already, but can't find it 2021-02-04T08:04:23Z mangol: chez also rolls generalized set! into the identifier-syntax mechanism 2021-02-04T08:15:25Z seepel quit (Ping timeout: 240 seconds) 2021-02-04T08:19:28Z ecraven: jcowan: sorry I forgot again, you have a list of all Schemes that claim to be interested in supporting r7rs-small somewhere, right? 2021-02-04T08:20:24Z ecraven: mangol: chez has generalized set!? 2021-02-04T08:21:32Z mangol: ecraven: it does; search for identifier-syntax in https://www.scheme.com/tspl4/syntax.html 2021-02-04T08:23:41Z mangol: however, i'm not sure whether chez supports (set! (something in parentheses) value) or only (set! identifier value) 2021-02-04T08:24:08Z mangol: Per's generalized set SRFI (https://srfi.schemers.org/srfi-17/srfi-17.html) does tha latter, which is customary Common Lisp style 2021-02-04T08:24:15Z ecraven: I still don't believe in identifier-syntax, it somehow feels strange if a simple identifier reference is *not* actually a reference but can be anything 2021-02-04T08:24:36Z ecraven: you mean the former? 2021-02-04T08:25:09Z mangol: yes the former :) should really get some coffee 2021-02-04T08:25:09Z ecraven: I've implemented that a few times (non-portably), and quite like the idea.. so (set! (car (cdr x)) 3), I find nice 2021-02-04T08:25:29Z ecraven: (set! car-of-x 3) which magically expands, I don't like that ;) 2021-02-04T08:25:54Z mangol: yes, (set! (foo-ref foo key) val) it's a very natural combinarion of lisp's existing features 2021-02-04T08:26:26Z ecraven: I don't use set! much, so maybe that's why I don't feel the pain 2021-02-04T08:26:42Z ecraven: with records, it would be nice though, but with records, I'd want generic methods for accessors anyway :-/ 2021-02-04T08:27:03Z mangol: i can relate to being wary of identifier syntax, but recall that the social custom around defining a macro is that whoever writes the macro takes care to write it so it works in a non-disruptive and seamless way 2021-02-04T08:27:48Z ecraven: I can see the similarity, but somehow (to me) it feels more ok to make *application* mean multiple things than to make *reference* mean multiple things 2021-02-04T08:28:11Z ecraven: what's a good use case for identifier syntax? 2021-02-04T08:28:22Z mangol: your worry is a recursive version of the standard worry of people new to lisp/scheme that ordinary macros are a confusing version or procedure calls 2021-02-04T08:28:27Z ecraven: defining x++ to mean (set! x (+ x 1)) is useless, as it doesn't generalise 2021-02-04T08:28:42Z ecraven: mangol: I'm not sure that's true, but it might be ;) 2021-02-04T08:29:20Z mangol: i had the same worry when learning common lisp as you have now, and once i started using identifier syntax in that language, it soon passed 2021-02-04T08:29:34Z ecraven: what do you use it for? 2021-02-04T08:29:52Z mangol: it can be very convenient in complicated code where you have a subexpression you're using all the time. then it simplifies the notation 2021-02-04T08:30:04Z mangol: so when you read the code, the focus is on the essentials 2021-02-04T08:30:14Z smazga quit (Ping timeout: 265 seconds) 2021-02-04T08:30:23Z ecraven: I can see it being used for example for parameters, so I don't have to write `(param)' to get the value, but plain `param' suffices. 2021-02-04T08:30:33Z ecraven: so it's a bit like special getters/setters support in other languages 2021-02-04T08:30:34Z mangol: it's mostly useful in a local context (inside one procedure, say). less useful globally 2021-02-04T08:31:53Z mangol: your x++ example is actually a good one, if you imagine a numerical algorithm (e.g. cryptographic hash or some linear algebra thing) that does it all over the place 2021-02-04T08:32:21Z ecraven: I can see it being very useful in a local context.. 2021-02-04T08:32:30Z ecraven: globally, I think I just haven't seen a useful use case 2021-02-04T08:32:55Z mangol: the param example might also be good from a code compatibility standpoint. the point is that it frees you to choose whether you want to define something as an identifier or a procedure call according to the situation 2021-02-04T08:33:37Z mangol: it's good for code evolution without breaking API. if something has been historically defined as a variable and you go "wait, it needs to be a parameter after all" 2021-02-04T08:34:00Z mangol: but people are already using it as a constant variable 2021-02-04T08:34:33Z smazga joined #scheme 2021-02-04T08:35:39Z ecraven: at least you don't get the problems you get with passing around procedure values, as you can't use quoted identifiers without `eval' anyway 2021-02-04T08:36:46Z mangol: true. unless the identifier syntax expands to a procedure :D 2021-02-04T08:37:37Z ecraven: no, I mean you can't pass around `set!' (as it is syntax), but for identifiers, as soon as you quote them they are "useless" anyway, so it doesn't matter what they would expand to.. 2021-02-04T08:39:58Z mangol: so you mean to say that it doesn't matter that we "lose" the ability to pass it around 2021-02-04T08:40:18Z ecraven: to me, it seems to be much less of a problem than it is with "normal" syntax 2021-02-04T08:40:37Z ecraven: for example, I'd love to use (apply or my-list) 2021-02-04T08:40:43Z mangol: good point. i'm inclined to agree 2021-02-04T08:41:33Z mangol: i wonder how often it confuses newbie--intermediate scheme programmers that (and ...) and (or ...) are basically if-statements 2021-02-04T08:42:14Z mangol: and that tail calls are pertinent in the same way as with `if`/`cond` branches 2021-02-04T08:42:36Z mangol: wow, just learned that R6RS has "variable tranformers" in the standard: https://standards.scheme.org/official/r6rs-lib.pdf page 51 2021-02-04T08:43:33Z mangol: i frequently feel we are doing the R6RS folks a disservice by not studying the details of that standard more carefully 2021-02-04T08:44:19Z ecraven: well, r7rs-large seems to go in a similar direction that r6rs went, so maybe some day they can be united... 2021-02-04T08:44:41Z ecraven: personally, I prefer the r7rs-small / -large thing to the way r6rs does things 2021-02-04T08:44:52Z ecraven: but I'm not a (serious) implementor anyway 2021-02-04T08:45:10Z mangol: indeed. i increasingly feel r6rs and r7rs should be combined into one standard that is heavily modularized into small libraries 2021-02-04T08:45:49Z mangol: the technical feat would be useful in itself, but more importantly, it has big social implications that they are separate standards 2021-02-04T08:46:16Z ecraven: indeed, and r7rs-large (or r6rs) are actually large enough to write useful *portable* programs 2021-02-04T08:46:21Z mangol: as a signifier to scheme outsiders; and within the scheme community, politics aside, it has a major effect on information flow 2021-02-04T08:46:28Z mangol: yes, they are 2021-02-04T08:47:21Z mangol: for example, if R-combined-RS had variable transformers, they would be much more widely known than if only one of the stanards has them 2021-02-04T08:47:48Z mangol: there would be one obvious place to point to and say "here's everything that Scheme can do by default" 2021-02-04T08:48:13Z mangol: of course small implementations would have only subsets of those capabilities, but that's to be expected 2021-02-04T08:49:16Z mangol: but there is a persistent pattern that information doesn't flow between R6RS and R7RS users as much as it should 2021-02-04T08:49:26Z mangol: not caused by any ill will from either side. it's just Conway's Law 2021-02-04T08:49:59Z mangol: IMHO we need a social engineering hack to fix that situation 2021-02-04T08:51:53Z pankajsg quit (Quit: Konversation terminated!) 2021-02-04T08:52:25Z mangol: the social challenge is that R7RS people value having a small standard, and a separate large standard. 2021-02-04T08:52:45Z mangol: whereas R6RS people are like "we value a large standard, but we already have a perfectly good one" 2021-02-04T08:53:18Z mangol: i wonder if peace could be brokered on the grounds of "how about a modular standard that has all the stuff both of you already have, but opt-in" 2021-02-04T08:54:02Z mangol: we could define well-known subsets of the full module set as recommendations or "profiles" as some industrial standards have. or they could evolve organically 2021-02-04T08:55:01Z ecraven: I think at some point the problem is, who's going to do all that work? jcowan and the others are amazing with r7rs-large, but as there's probably no money to be made with this, people have other more pressing needs than a unified standard 2021-02-04T08:55:25Z mangol: the other social challenge is the desire to move past R6RS. a uniting standard cannot be based on the foundation of moving past it. many good schemers love it. 2021-02-04T08:56:00Z mangol: so everything in R6RS has to be kept. but it can be factored into small optional libraries so people who feel there's too much in R6RS can drop parts of it. 2021-02-04T08:56:19Z ecraven: well, there are some parts that are just incompatible between r6rs and r7rs, so you *have* to change some 2021-02-04T08:56:50Z mangol: not many incompatibilities if your criterion is that useful programs are portable 2021-02-04T08:57:05Z marusich quit (Quit: Leaving) 2021-02-04T08:57:28Z Major_Biscuit joined #scheme 2021-02-04T08:57:32Z mangol: indeed a combined standard would be a huge amount of work. but it has to be done at some point to heal scheme community. 2021-02-04T08:57:41Z mangol: 10 years from now? 25 years? 2021-02-04T08:57:45Z mangol: *15 years? 2021-02-04T08:58:00Z amirouche joined #scheme 2021-02-04T08:58:21Z ecraven: well, I'm no expert, but historically, the 2021-02-04T08:58:30Z ecraven: "community" has always been a lot of smaller groups 2021-02-04T08:58:45Z ecraven: it's not like other languages (almost all with a single implementation or standard) 2021-02-04T08:58:56Z ecraven: is there even one other language like Scheme in this respect? 2021-02-04T08:59:20Z marusich joined #scheme 2021-02-04T09:00:15Z mangol: C and C++ have different standards in use at the same time. however, in their case the new standards are mostly supersets of the old ones 2021-02-04T09:00:32Z amirouche quit (Client Quit) 2021-02-04T09:01:09Z mangol: you may be right that the scheme "split" is unique. it's probably not, but if some other language has it, probably quite obscure 2021-02-04T09:01:43Z mangol: anyway, the tragedy is that R6RS and R7RS code is actually surprisingly compatible. with some care you can already write portable code 2021-02-04T09:02:12Z mangol: as for the strictness of error handling and the semantics, that can be optionalized too. 2021-02-04T09:02:40Z mangol: R6RS says "you must be strict" to the point a strictly standards-conforming REPL is difficult or impossible. 2021-02-04T09:02:42Z ecraven: well, I only have a simple veneer over chez and all the benchmarks run fine ;) 2021-02-04T09:03:04Z mangol: R7RS goes to the other extreme and says errors can cause demons to fly out of your nose 2021-02-04T09:03:21Z mangol: once again, there's no middle ground. way to R6RS one extreme, R7RS way to the other extreme 2021-02-04T09:03:37Z ecraven: yea, I lament the fact that REPL-based development in general is getting very hard on all implementations :-/ CL has a level of introspection and mutability that no Scheme I know of has (though MIT/GNU Scheme comes closer than the others I've tried) 2021-02-04T09:03:38Z mangol: lol @ word order 2021-02-04T09:03:43Z mangol: *my word order 2021-02-04T09:04:59Z mangol: getting very hard, or has always been hard? 2021-02-04T09:05:14Z ecraven: probably the latter 2021-02-04T09:06:00Z mangol: yes, scheme seems to be like ML in that respect - always had a respect, but we're expected to compile real programs in batch 2021-02-04T09:06:20Z mangol: *had a REPL. coffee time for real 2021-02-04T09:08:04Z hendursa1 joined #scheme 2021-02-04T09:09:47Z mangol: anyway, a combined standard should be shipped first as a portable implementation that runs on every serious scheme implementation we already have 2021-02-04T09:09:55Z mangol: possibly with patches to the implementations, ideally not 2021-02-04T09:10:20Z mangol: it would be a mistake to go "hey here's a new 400-page document", please implement it 2021-02-04T09:10:25Z ecraven: I don't disagree, but that's a *lot* of work ;) 2021-02-04T09:10:37Z mangol: we have a lot of time if we don't set ourselves a deadline 2021-02-04T09:10:37Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-04T09:10:54Z ecraven: one of my ulterior motives with the benchmarks and the coverage tests is to get PRs going for the different implementations ;) 2021-02-04T09:11:06Z mangol: laudable 2021-02-04T09:12:25Z aeth quit (Ping timeout: 240 seconds) 2021-02-04T09:13:50Z marusich quit (Quit: Leaving) 2021-02-04T09:14:31Z aeth joined #scheme 2021-02-04T09:15:14Z mangol: i think the split can be productively viewed as technical debt. as long as we have it, it puts a tax on morale, information flow, comprehensibility and interoperability 2021-02-04T09:15:41Z mangol: as with all technical debt, there's rarely a strict deadline to fix it, but the longer it goes on, the more debt is accrued 2021-02-04T09:16:44Z mangol: like all technical debt, fixing it is gnarly and largely thankless work that everyone tries to put off as long as possible 2021-02-04T09:17:00Z mangol: and takes time away from seemingly more urgent activities 2021-02-04T09:19:22Z ecraven: hm.. noeither mosh nor picrin build for me :-/ 2021-02-04T09:21:05Z mangol: https://github.com/scheme-containers/mosh 2021-02-04T09:21:06Z mangol: https://github.com/scheme-containers/picrin 2021-02-04T09:21:30Z mangol: can you manage to build them by replicating the build steps in those dockerfiles? 2021-02-04T09:22:15Z ecraven: picrin might be related to newer gcc versions, that debian you are using has a much older gcc than my arch linux 2021-02-04T09:22:19Z ecraven: I'll play around, thanks! 2021-02-04T09:24:01Z ecraven: I get src/load_piclib.c:15:20: error: invalid initializer, probably due to pic_value port = ... not being a constant expression 2021-02-04T09:24:38Z amirouche joined #scheme 2021-02-04T09:25:01Z mangol: hope it works out! 2021-02-04T09:25:38Z mangol: if you need GCC portability patches to picrin, omasanori has done all the latest patches to https://github.com/picrin-scheme/picrin and he has been on GH last month 2021-02-04T09:26:03Z mangol: so it might be possible to contact him and get PRs merged 2021-02-04T09:26:17Z ecraven: I see no commits to master since june 2017? 2021-02-04T09:27:07Z ecraven: aaand husk fails too 2021-02-04T09:27:53Z mangol: correct, latest in 2017. https://github.com/picrin-scheme/picrin/commits/master 2021-02-04T09:29:14Z mangol: about husk, please email justin (who is now actively working on cyclone scheme, but husk is his previous project) 2021-02-04T09:29:28Z ecraven: yea, he's here sometimes 2021-02-04T09:30:01Z mangol: neat! 2021-02-04T09:31:54Z mangol: anyway, it's now 2021. R-combined-R-us in 2025? 2021-02-04T09:32:05Z joast quit (Ping timeout: 240 seconds) 2021-02-04T09:32:34Z ecraven: hehe, we'll see 2021-02-04T09:33:01Z mangol: i'll see if i can find enough energy to try and work out the possibility of getting it done. it'll take a lot even if spread out over a span of years. 2021-02-04T09:33:58Z mangol: i'm willing to risk everyone hating me to get it done though. i like risk and i don't really have better way to spend my already questionable reputation around here 2021-02-04T09:34:23Z mangol: but scheme.org has to be solid first. one risky community-wide project at a time 2021-02-04T09:35:03Z ecraven: personally, I'd wait a bit for r7rs-large to be "done", then look into what the simplest way to "merge" the two ;) 2021-02-04T09:35:09Z ecraven: CL did that decades ago, I think ;) 2021-02-04T09:35:52Z mangol: there's no getting around the fact that both R6RS and R7RS-large are contentious entities. we have to come to terms with that. 2021-02-04T09:36:15Z mangol: difference being that R6RS is a contentious entity set in stone in 2007. 2021-02-04T09:36:30Z mangol: R7RS-large doesn't have a clear deadline to be set in stone. 2021-02-04T09:37:10Z mangol: if we have to do R7RS-large, _and_ R-combines-RS, _and_ both have to be set in stone for us to move on from them 2021-02-04T09:37:14Z mangol: that's gonna take a while 2021-02-04T09:38:12Z mangol: the lack of a solid plan is what worries me 2021-02-04T09:38:51Z mangol: it's fine if it takes 10 years, but can we be reasonably sure that once those 10 years are up, we've reached a standard that unites the community and serves everyone in it 2021-02-04T09:39:53Z mangol: i've been searching for the right markers and i don't see them. R6RS was the R6RS team's vsion. R7RS-large is WG2's vision (where group cohesion varies a lot). 2021-02-04T09:40:11Z mangol: the main point of a standard is agreement. that's what it says on the tin. 2021-02-04T09:40:33Z mangol: both R6RS and R7RS-large are about pursuing the vision of a subgroup of the Scheme community 2021-02-04T09:41:20Z mangol: i would care if people shoot the messenger but i'm not wired to be that patient 2021-02-04T09:43:04Z mangol: IMHO a Scheme standard should start from taking everything that's standardized (i.e. typeset on the nice TeX template) and that people are still actively using 2021-02-04T09:43:27Z mangol: and leaving nothing out. and then figuring out how to partition all that stuff into modules that implementors can take or leave 2021-02-04T09:43:37Z badkins joined #scheme 2021-02-04T09:43:53Z mangol: once that's done, then we can think about whether to add more features 2021-02-04T09:45:45Z mangol: it says a lot that Kawa is not on track to be an R7RS-large implementation, for example. Kawa already does R7RS-small, and as a big happy JVM Scheme, it would be the ideal implementation to host a large language 2021-02-04T09:46:16Z mangol: and Kawa is not R6RS-compliant either. implementors want to provide a large language, but can't agree on which one 2021-02-04T09:47:07Z mangol: as a model, Common Lisp is an admirable feat of political compromise. the lisp community does not easily agree on things. 2021-02-04T09:47:34Z mangol: most of the ugly parts of Common Lisp can be put down to the fact that it isn't modularized. it has a complete package system, 2021-02-04T09:47:48Z mangol: but they don't actually use it on the standard itself 2021-02-04T09:47:51Z mangol: for whatever reason 2021-02-04T09:48:03Z badkins quit (Ping timeout: 246 seconds) 2021-02-04T09:48:12Z mangol: so new implementors can't opt out of stuff that turned out to be questionable in hindsight 2021-02-04T09:48:44Z mangol: the fact that CL has generic functions and a hierarchical type system built in adds to the situation that it's difficult to take parts out 2021-02-04T09:49:28Z mangol: scheme is in a much better position to modularize, and i think we should do that even more aggressively than R6RS did. R7RS-large is at about the right level of modularity, but we could go even more fine-grained 2021-02-04T09:51:20Z mdhughes: On modularity, my CHICKEN programs have 20-50 imports each. That's too damn much modularity. 2021-02-04T09:51:56Z mdhughes: Chez has 2-4, (chezscheme), a couple SRFIs, my library. 2021-02-04T09:52:15Z ecraven: well, at some point, it would be nice if you had "levels", to aggregate the modules, otherwise you lose all portability 2021-02-04T09:52:34Z mdhughes: I don't need to import srfi-69 if hashtables are already in. 2021-02-04T09:52:55Z ecraven: you do, if you want that code to run on anything non-chez :P 2021-02-04T09:53:43Z mdhughes: I don't. Any R6RS will have those, they'll maybe change (chezscheme) to (rnrs) or their impl's main library. 2021-02-04T09:55:33Z mangol: ecraven: exactly. the fine-grained modules can be grouped into collections (called "profiles" in some formal standards) 2021-02-04T09:56:02Z ecraven: mdhughes: ah, yea, for r6rs that is entirely true 2021-02-04T09:56:02Z mangol: either the standards document can specify the profiles. or good profiles can be found experimentally by the community afterwards. 2021-02-04T09:56:05Z mdhughes: "technically" R6 might be strict, but in practice every R6 is batteries-included enough to get work done. 2021-02-04T09:56:52Z mdhughes: Porting to Gerbil was trivial, except for the things that weren't standard, FFI and [] syntax. 2021-02-04T09:57:05Z mangol: in fact R6RS already has (import (rnrs)) which imports a whole slew of fine-grained modules 2021-02-04T09:57:54Z mangol: we should do more of that 2021-02-04T09:58:24Z mangol: some people will say it's lame that Scheme has "profiles" instead "one profile that's good for everything" but the latter is not the scheme way 2021-02-04T09:58:59Z mangol: we can have an all-singing-all-dancing profile if we want to 2021-02-04T09:59:12Z mangol: just (import (scheme)) 2021-02-04T10:00:07Z mangol: but that requires that (scheme) is well defined. and that in turn requires that we ship a community-uniting document out the door in a finite amount of time 2021-02-04T10:00:27Z mangol: and adding new untested features to RnRS is at odds with that goal 2021-02-04T10:00:58Z mangol: all of the libraries (new data structures, etc.) going into R7RS-large are fine. but i'm not convinced that the RnRS procee is the right vehicle for them. 2021-02-04T10:01:27Z mangol: they are untested code. they do have unit tests, but people haven't written applications using them. not using them individually, and especially not using them in combination. 2021-02-04T10:01:49Z mangol: R7RS-large is on track to receive the same criticism that R6RS received upon release from some of Scheme's sharpest minds. 2021-02-04T10:02:00Z mangol: namely that it's a big pile of unproven stuff. 2021-02-04T10:02:25Z mdhughes: Yeah, most SRFIs I read have no use case, and I wouldn't put them in my programs. 2021-02-04T10:02:36Z ecraven: it's a hard problem.. ideally, the standard would just define enough to make writing portable code possible, then you can just write the actual libraries in portable Scheme. 2021-02-04T10:02:38Z mangol: whereas something like hash-tables (SRFIs, and R6RS hashtables) is a data structure that has been used to write thousands of real programs. so obviously it belongs in a RnRS report. 2021-02-04T10:02:47Z mdhughes: Nothing should be accepted unless it's not just tested, but in use in a real program. 2021-02-04T10:03:39Z mdhughes: Which also requires that more people use Scheme to code real things, and not to code new Schemes. 2021-02-04T10:04:26Z mangol: mdhughes: i think you echo the silent sentiment of lots of schemers who are currently not actively involved in the RnRS process 2021-02-04T10:04:45Z ecraven: the problem is, if you cannot write portable libraries, how will you ever *get* that code? 2021-02-04T10:04:47Z mdhughes: LISP is a truly awful language, the community's not great, but they actually use it for stuff. 2021-02-04T10:05:19Z mangol: ecraven: in practice, the portability of scheme code is already excellent. people just don't know about it. 2021-02-04T10:05:21Z mdhughes: (I mean here Common LISP, SBCL and such) 2021-02-04T10:05:31Z ecraven: mangol: I disagree. for example, networking 2021-02-04T10:05:46Z mangol: if we ignore RnRS for a bit, and focus only on implementaitons, it's possible to write code that runs on a dozen implementations 2021-02-04T10:06:01Z mangol: sockets take a lot (cond-expand ...) as do many other things 2021-02-04T10:06:04Z ecraven: mangol: certain kinds of code. try graphics, or networking 2021-02-04T10:06:25Z ecraven: well, if I cond-expand for each implementation, that doesn't meet my definition of "portable code" :P 2021-02-04T10:06:31Z mdhughes: Networking, threading, and GUIs are totally impl-specific, but at least that makes some sense, since the underlying tech might be POSIX, Java, JavaScript, etc. 2021-02-04T10:06:47Z mangol: ecraven: ok, we are using different definitions of portable :) 2021-02-04T10:06:55Z ecraven: I'm not sure I agree, there are some simple networking concepts that should be portable.. 2021-02-04T10:07:20Z mdhughes: Now build them in a compiles-to-JavaScript Scheme. 2021-02-04T10:07:24Z ecraven: mangol: "portable" to me means that at least most of the code runs unmodified on different Schemes. maybe I should use another word 2021-02-04T10:07:41Z mangol: we're arguing semantics :) 2021-02-04T10:07:44Z ecraven: mdhughes: javascript can do networking. 2021-02-04T10:08:02Z mangol: from an RnRS point of view, i'm not convinced that RnRS is the right vehicle for things like graphics, sockets, and many of the data structures that go into R7RS-large 2021-02-04T10:08:08Z mdhughes: JS can make AJAX calls, and WebSockets which are a special case of HTTP/keep-alive. 2021-02-04T10:08:09Z ecraven: I'm talking about opening a tcp / udp socket and getting a binary port, that should be possible in most backends 2021-02-04T10:08:46Z ecraven: the problem is, if you cannot write portable code for those things, it's hard to get actually useful programs done (outside of "pure computation") 2021-02-04T10:09:19Z ecraven: re compiling-to-js, that's fine, those implementations will then just not support the "normal" socket interface. but there should still *be* one 2021-02-04T10:09:39Z ecraven: I'm just talking about the API, the implementation can be different for each Scheme implementation, but the *functions* that you call should be the same 2021-02-04T10:10:06Z ecraven: *any* other language I know has some default way of interfacing with sockets... 2021-02-04T10:10:14Z mdhughes: There's no equivalent of open/select in JS. 2021-02-04T10:10:24Z ecraven: FFI would be the other thing I'd like to advocate, but that's a mess in general ;) 2021-02-04T10:10:47Z mdhughes: You can do that on JVM, mostly, but it also behaves differently because it's tied into the threading model. 2021-02-04T10:11:06Z ecraven: mdhughes: that's fine, just don't implement that part. 2021-02-04T10:11:44Z mdhughes: Then it's not a "spec", or at least not a very useful one. You end up cutting until you're down to minikanren. 2021-02-04T10:12:48Z ecraven: mdhughes: I don't agree, you can run networking code on any system that supports whatever definition of networking we decide on. 2021-02-04T10:13:09Z ecraven: right now, you can't use networking code on more than one implementation 2021-02-04T10:13:22Z ecraven: I've tried, r7rs-swank needs it, *every* Scheme I've tried has different primitives 2021-02-04T10:13:28Z mdhughes: ecraven: That's just not correct. You cannot port your TCP code to a JS-backed impl. 2021-02-04T10:13:48Z mangol: ecraven: you raise a good point. i have an unpopular off-the-wall plan for that as well. 2021-02-04T10:13:51Z ecraven: mdhughes: which is fine, you can't port your dom-manipulation code from a js-backed implementation to a native one 2021-02-04T10:14:08Z mdhughes: Right. Those are not portable things, and they don't belong in the spec. 2021-02-04T10:14:27Z ecraven: I'm trying to say: if we cannot have a totally generic solution, let's at least try to get one that works for many systems. 2021-02-04T10:14:42Z mangol: for practical stuff like socket, graphics, data structures, we should have a community-wide library collection that is much faster-moving, much more relaxed, than RnRS. 2021-02-04T10:14:52Z mdhughes: They might make good SRFIs, if they have at least one impl that supports it and it's tested and used on something. 2021-02-04T10:15:05Z mangol: every year, we release a stable version of that community API so people can write programs that don't break. 2021-02-04T10:15:21Z mangol: meanwhile, the bleeding edge version of the API can keep changing 2021-02-04T10:15:38Z mangol: because there's no way in hell any living person can design all those APIs and not make design mistakes 2021-02-04T10:15:46Z mdhughes: I'd love to have a graphics SRFI that isn't just SICP's little language, with a picture of a racist embedded. 2021-02-04T10:15:51Z ecraven: if you have portable sockets, there are way more options.. you can talk to some graphics toolkits over a socket (in totally portable Scheme), thanks to bytevectors 2021-02-04T10:16:11Z mangol: and yearly editions solve another pain point of SRFI and especially RnRS process: the need to be comprehensive. 2021-02-04T10:16:13Z ecraven: but as long as you don't have sockets, things are really hard :-/ 2021-02-04T10:16:22Z ecraven: mdhughes: who is that? 2021-02-04T10:16:27Z ecraven: don't think I've read that srfi 2021-02-04T10:16:39Z mangol: no living person can design perfect comprehensive libraries up front. it doesn't make sense to structure a design process around that assumption 2021-02-04T10:17:32Z mangol: if the API can grow and change every year, we can start with a humble networking or graphics API with only a few procedures that are immediately useful 2021-02-04T10:17:41Z mangol: than adapt from there according to the requirements of actual programs 2021-02-04T10:18:13Z mangol: thinking from first principles, the RnRS process is about putting limited person-hours to turn out a document. that's the hard limit. 2021-02-04T10:18:38Z mangol: it follows that a good RnRS is whatever that set of people is humanly capable of turning out in that space of time without making a mess. 2021-02-04T10:18:53Z mangol: and while retaining community-wide agreement, as it says on the tin ("standard"). 2021-02-04T10:19:12Z mangol: everything else is optional, and quite likely best kept outside the remit of RnRS 2021-02-04T10:19:26Z mangol: because the above problem by itself is hard enough 2021-02-04T10:20:37Z mangol: the day-to-day work of making a standard should be about reconciling detail differences in how implementations approach things that already exist and are in use 2021-02-04T10:21:00Z ecraven: maybe 2021-02-04T10:21:02Z mangol: that's the kind of work that can move fast and keep good momentum, while representing the whole community 2021-02-04T10:21:15Z ecraven: I should give a simple networking SRFI a try, I already have the code from r7rs-swank :P 2021-02-04T10:21:38Z mangol: the kind of work where someone has a grand unproven idea about adding something to the language is of a qualitatively different character. not fit for a community-wide standardization process. 2021-02-04T10:22:41Z mdhughes: ecraven: Rogers, MIT's founder. https://srfi.schemers.org/srfi-203/srfi-203.html 2021-02-04T10:22:49Z mdhughes: https://www.blackhistory.mit.edu/story/william-b-rogers 2021-02-04T10:22:51Z pankajsg joined #scheme 2021-02-04T10:23:07Z ecraven: thanks, never heard of him, I'll read up on that 2021-02-04T10:23:12Z mangol: unless the whole community has the same idea simultaneously (i.e. "it was in the air at the time", "part of the zeitgeist"). and even then it's much better to try out in individual implementations first. 2021-02-04T10:24:26Z mangol: R6RS had new unproven ideas, and R7RS-large now has new unproven ideas. the effect is that they are not community standards. 2021-02-04T10:24:52Z mangol: R5RS And R7RS-small don't have much in the way of unproven ideas, and hence the community has enthusiastically adopted them. 2021-02-04T10:25:27Z mangol: there's no reason an R-combined-RS can't be enthusiastically adopted, even if large, if it's (A) modular, and (B) all the modules are about stuff that already exists in prior standards, or in lots of implementations 2021-02-04T10:25:40Z mdhughes: Python's PEP system works well, they pretty much always have proven, working code, community use of it in experimental patches, and then it's integrated. 2021-02-04T10:26:39Z mangol: yes, PEPs are great. but some experienced Python programmers are of the opinion is that the standard library is where good community libraries go to die 2021-02-04T10:26:43Z mdhughes: But there's just one impl there, more or less. Cython, IronPython, Jython lag long behind CPython. 2021-02-04T10:26:48Z mangol: as in, are no longer evolving to meet new needs 2021-02-04T10:27:28Z mangol: and the Common Lisp community continually talks about modernizing ANSI CL without actually doing it. 2021-02-04T10:28:09Z mangol: by adding networking and stuff. it won't work. i think a lot of people fundamentally misunderstand what a language standard is a good vehicle for. 2021-02-04T10:28:34Z pankajsg quit (Ping timeout: 276 seconds) 2021-02-04T10:28:35Z mangol: a standard is a very heavyweight social process. that kinda thing doesn't scale to the complexity of a complete language ecosystem 2021-02-04T10:28:50Z mangol: with integrations to external systems like networks, graphics, subprocesses, the works 2021-02-04T10:29:04Z mangol: XML, JSON, YAML, CSS, SQL, ... 2021-02-04T10:29:34Z mangol: it's like pushing a boulder uphill 2021-02-04T10:30:06Z mangol: should be left to an ongoing, much more relaxed process that is much more forgiving of mistakes and oversights 2021-02-04T10:30:11Z ecraven: mangol: sorry to repeat myself, but all of those (maybe apart from SQL, if by that you mean actual database interfaces) can be written portably right now in r7rs-small (even if tedious, as text manipulation isn't that well supported out of the box), but you need *networking* to actually *use* them ;) 2021-02-04T10:30:55Z mangol: once again, we're arguing the semantics of "portable" 2021-02-04T10:31:22Z mangol: to me, a codebase that can use different 5 socket interfaces using cond-expand is portable 2021-02-04T10:31:23Z ecraven: hm.. I'll need to look into srfi-106, not sure who supports that 2021-02-04T10:31:39Z mangol: it would be better if there was one socket interface, but it's not a hard requirement for useful code 2021-02-04T10:31:43Z ecraven: mangol: what's a word for being able to run the exact same code on multiple implementations? 2021-02-04T10:32:00Z mangol: standard? :D :D 2021-02-04T10:32:16Z ecraven: hehe, so I want a *standard* socket / networking interface 2021-02-04T10:32:18Z mangol: standards-based 2021-02-04T10:32:42Z mangol: yes. and we all want it. but the thing is, i don't think we can get it. not in the sense of RnRS standard. 2021-02-04T10:33:05Z mangol: i want a pony but i don't want to drive 2 hours to the stables and pay to feed it, etc. 2021-02-04T10:33:22Z ArneBab quit (Remote host closed the connection) 2021-02-04T10:33:27Z mangol: i'm still free to want a pony and still free to feel disappointed that i can't afford the money+time investment 2021-02-04T10:33:40Z mangol: maybe i can rent time to ride someone else's pony 2021-02-04T10:34:36Z ArneBab joined #scheme 2021-02-04T10:34:36Z ArneBab quit (Changing host) 2021-02-04T10:34:36Z ArneBab joined #scheme 2021-02-04T10:34:52Z mangol: i think we'd do well to be more realistic about the carrying capacity of the RnRS design process, and what kinds of things can get community buy-in 2021-02-04T10:35:38Z mangol: i hope the reason we're anxious to place such a heavy load on RnRS Scheme is that we despair for lack of other ways to standardize things community-wide 2021-02-04T10:36:27Z mangol: "I really, really want a standard way to use feature X. If I get it into RnRS, it's a done deal. If I don't get it into RnRS, I have no recourse. That makes me sad. I'll never have portable X." 2021-02-04T10:36:56Z mangol: if that's all there is to is, i have a new kind of design process to sell yo. 2021-02-04T10:38:10Z mangol: that complements RnRS and builds on RnRS but does not replace it. 2021-02-04T10:38:42Z mangol: if we adopt it, the RnRS process can get back to doing what it does best. establishing agreement close to the core language. 2021-02-04T10:39:26Z mangol: then RnRS can move at a faster, more predictable pace, we can set realistic goals about getting the next RnRS done in a particular time frame. 2021-02-04T10:39:34Z imode quit (Ping timeout: 258 seconds) 2021-02-04T10:39:45Z mangol: and sell that to implementors. all scheme implementors, not just a select few. 2021-02-04T10:41:45Z mangol: and all the fancy unproven features that used to go into R6RS, and now go into R7RS-large, could go into the lighter-weight design process. 2021-02-04T10:42:28Z mangol: R7RS-large is already well modularized into libraries, so no work done on R7RS-large would go to waste. the new design process could pick up right where it let off. 2021-02-04T10:42:31Z mangol: *left off 2021-02-04T10:43:19Z mangol: once again, thinking from first principles, what does it mean for the Immutable deques 2021-02-04T10:43:35Z mangol: library to be standardized in R7RS-large? what are the practical implications? 2021-02-04T10:44:11Z mangol: it means you can use immutable deques in any of a set of N scheme implementations in the year 20XX and onward. 2021-02-04T10:44:23Z mangol: using the same interface. 2021-02-04T10:44:54Z mangol: once we phrase it like that, it's clear that there are other ways that we can let people use immutable deques in a wide variety of Scheme implementations 2021-02-04T10:45:25Z ecraven: I think it's important to keep track of the fact that - given a well-defined language core - the libraries themselves are totally portable, so there's no *need* to add them to the standard, as you can just run them on any implementation anyway. 2021-02-04T10:45:38Z ecraven: the "problem" are libraries that can *not* be written on top of the standard 2021-02-04T10:45:56Z mangol: ways which don't involve waiting until 20XX (to be determined), and don't block the main job of RnRS, establishing greater agreement on the core language and shipping that agreement on a TeX template 2021-02-04T10:46:50Z mangol: ecraven: exactly. anything that's easy to implement efficiently in portable code shouldn't go into RnRS 2021-02-04T10:47:04Z mangol: the exception being things that were already in an earlier RnRS, which should be kept 2021-02-04T10:47:10Z ecraven: it could go in, just to define the API, but the need is much less pressing, imho 2021-02-04T10:47:23Z mangol: because taking out existing things just alienates people 2021-02-04T10:48:18Z ecraven: there's no reason why we can't have a red-black-tree API in RnRS, but I'd say it is not as important as some others, as those can be implemented on top of the existing functions fine (I think ;) 2021-02-04T10:50:11Z rgherdt quit (Remote host closed the connection) 2021-02-04T10:51:48Z mangol: it's important to work from the assumption that once we put something into RnRS, we can never take it out again 2021-02-04T10:52:23Z mangol: R7RS took things out of R6RS and it led to a 15-year technical and social split 2021-02-04T10:53:00Z mangol: it's a liability to scheme that R7RS-large is growing. the more it grows, the bigger the liability. 2021-02-04T10:53:09Z mangol: somebody has to say it, so i do. 2021-02-04T10:53:31Z ecraven: well, R8RS doesn't have to be an extension of R7RS-large ;) 2021-02-04T10:53:48Z ecraven: maybe we get R8RS profile 'large' 2021-02-04T10:53:53Z mangol: indeed, it doesn't have to be. but there's a clear reason why: because R7RS-large is not yet finalized. 2021-02-04T10:53:53Z ecraven: among many other profiles 2021-02-04T10:54:13Z mangol: if R7RS-large was already finalized, then R8RS would have the moral imperative to keep everything in R7RS-large. 2021-02-04T10:54:15Z mdhughes: R8RS will be two R4RS in a trenchcoat. R9RS will be three R3RS. Eventually we'll just have MacLISP again. 2021-02-04T10:54:21Z mangol: lol 2021-02-04T10:56:33Z mangol: in any case, eventually, whether that's 1 year from now or 5 or 10 or 15 or 20 years from now, some people in the scheme community have to get up and decide to be good stewards of the community as a whole 2021-02-04T10:56:55Z mangol: and there's only one way to do that: keep everything in R5RS, and R6RS, and R7RS-small, without throwing anything out. 2021-02-04T10:57:03Z ecraven: I do not agree ;) 2021-02-04T10:57:19Z mangol: and the only way to keep all that stuff without going nuts is to heavily factor it into optional modules 2021-02-04T10:57:29Z ecraven: ah, now that I agree with ;) 2021-02-04T10:57:35Z mangol: :D 2021-02-04T10:57:36Z mangol: see 2021-02-04T10:58:04Z mangol: optional modules are The Scheme Way. that's the writing on the wall 2021-02-04T10:58:11Z mangol: scheme has always excelled at subsetting 2021-02-04T10:58:57Z mangol: we're in a much luckier place than Common Lisp when it comes to revising and revitalizing the standard 2021-02-04T10:59:25Z mangol: from a technical standpoint, we are in an ideal place to unite the community 2021-02-04T11:00:11Z mangol: scheme's fantastic library and macro expander, which happily R6RS and R7RS seem to agree on all the practically salient points, is an extreme help here 2021-02-04T11:01:00Z ecraven: that I also agree on, I don't understand how CL could ever happen (and be successful too ;) 2021-02-04T11:02:31Z mangol: people close to the process say it was "politics, not art" :) 2021-02-04T11:02:54Z mangol: then again, i would say politics is an art. an extremely important one 2021-02-04T11:03:16Z mangol: including programming language politics 2021-02-04T11:08:34Z ecraven: thanks for the interesting thoughts, I'll be afk for a bit, need to find food :D 2021-02-04T11:11:26Z mangol: same situation here :D :D 2021-02-04T11:11:56Z mangol: after all, caffeine is only one of the essential food groups 2021-02-04T11:12:34Z mangol: with no disrespect to the other members of the methylxanthines family. 2021-02-04T11:13:14Z mangol: see, when you split methylxanthines and hold only one of them as representative of the whole family, it just makes the other ones jealous and ambivalent. 2021-02-04T11:13:58Z mangol: and endless debate over whether a coffee-only or chocolate-only diet is superior 2021-02-04T11:14:31Z mangol: obviously a healthy diet includes both coffee and chocolate 2021-02-04T11:29:13Z notzmv quit (Remote host closed the connection) 2021-02-04T11:29:42Z notzmv joined #scheme 2021-02-04T11:53:55Z Anonymous_ quit (Remote host closed the connection) 2021-02-04T12:09:30Z amirouche quit (Quit: WeeChat 2.8) 2021-02-04T12:22:52Z bitmapper joined #scheme 2021-02-04T12:27:52Z amirouche joined #scheme 2021-02-04T12:29:25Z ecraven: a seed and a legume, who would say that's unhealthy? :D 2021-02-04T12:29:37Z rgherdt joined #scheme 2021-02-04T12:33:48Z badkins joined #scheme 2021-02-04T12:40:36Z badkins quit (Ping timeout: 265 seconds) 2021-02-04T12:44:37Z f8l: I don’t drink coffee, and I try to avoid eating chocolate. My diet does not complain about its health. 2021-02-04T13:04:12Z mangol: maybe RnRS should provide the seeds and legumes of scheme, and coffee and chocolate should be left to the more relaxed process 2021-02-04T13:05:52Z mangol: as far as i can tell, there are no fundamental technical obstacles. it would just be a major change in direction, and hence a major social engineering feat. 2021-02-04T13:06:57Z mangol: the art is to structure things such that everyone gets what they want. i think it can be done. 2021-02-04T13:07:37Z ecraven: mangol: the problem is getting people to agree on what is and what isn't necessary in the "core" ;) 2021-02-04T13:08:42Z mangol: ecraven: thankfully, that has been decided for us (if we listen to the implicit lessons told by scheme history): what should go into the core is everything in the R5RS, R6RS, and R7RS-small 2021-02-04T13:09:36Z mangol: it would be very hard to design a language core from scratch, but the aggregate scheme community is only really asking for us to organize what we already have in a form where everyone can gather around the same TeX document 2021-02-04T13:09:50Z mangol: instead of favoring different TeX documents, and all the implications that that has 2021-02-04T13:10:26Z mangol: if we can pull of that feat (which is very significant in itself) we have done well for ourselves and served our community well under demanding circumstances 2021-02-04T13:10:35Z ecraven: I'm arguing that "just" r5-7rs is not enough :P 2021-02-04T13:10:41Z mangol: any new features we add on top of that basic, is "extra credit" as techers say :) 2021-02-04T13:11:23Z ecraven: ah, so you are arguing for "only" a unification RnRs, that "just" creates a core + libraries which offer everything in r5-7rs 2021-02-04T13:14:14Z pflanze quit (Read error: Connection reset by peer) 2021-02-04T13:15:06Z pflanze joined #scheme 2021-02-04T13:15:55Z mangol: yes, exactly :) 2021-02-04T13:16:29Z mangol: i'm not opposed to adding things like keyword arguments, and immutable versions of scheme's classic data types, but that's extra credit 2021-02-04T13:16:50Z mangol: those would be great, but the more important task is unifying what we already have 2021-02-04T13:16:56Z ecraven: ah, keyword arguments.. that's a hill to die on :P 2021-02-04T13:17:21Z mangol: there's a way to do keyword args so that everyone gets what they want. by cleverly leaving some things implementation-defined. 2021-02-04T13:17:39Z ecraven: well, will the same code run if implementations decide differently? 2021-02-04T13:17:45Z ecraven: otherwise, it's not worth much :P 2021-02-04T13:17:50Z mangol: but it needs to be done in core RnRS because it requires a change to Scheme's procedure call syntax. can't be done in a library. 2021-02-04T13:18:11Z mangol: yes, that's possible as far as i can tell. 2021-02-04T13:19:07Z mangol: at the same time, a large library collection in the spirit of R7RS-large is clearly in demand as well 2021-02-04T13:19:45Z mangol: the key mindset shift required to pull this all off, would be to convince the R7RS-large and other large-language advocates that large libraries don't need to be supplied by RnRS 2021-02-04T13:20:05Z ecraven: nice, so many Schemes that implement R7RS-small! https://ecraven.github.io/r7rs-coverage/ 2021-02-04T13:20:05Z mangol: and can be supplied by a much more lightweight, faster-moving process involving more people and more experimentation 2021-02-04T13:20:20Z mangol: exactly, because R7RS-small sticks to the essentials of scheme! :) 2021-02-04T13:20:34Z mangol: that's why it's popular, and its niche, relatively uncontroversial 2021-02-04T13:20:52Z ecraven: do you know EuLisp? 2021-02-04T13:21:15Z mangol: only by name 2021-02-04T13:22:07Z ecraven: it had different levels, level-0 was what R5/7RS want to be, a small core. level-1 then built on that, expanding it with lots of libraries (but no core features) 2021-02-04T13:22:35Z ecraven: as far as I know (which - I concede - isn't very far), level-1 was implemented (or at least implementable) entirely in level-0 2021-02-04T13:25:15Z mangol: that sounds like a good approach. but for a language the size of R6RS and R7RS-large, that approach simultaneously goes too far, and doesn't go far enough. 2021-02-04T13:25:23Z ecraven: so some things (like `map') could be moved out of the core, but some others (like sockets :P) could be moved in 2021-02-04T13:25:41Z mangol: the solution is to have only one level of the language, but split it into small modules. 2021-02-04T13:25:59Z ecraven: why not have a "core" profile, and then all the rest above that? 2021-02-04T13:26:23Z mangol: well, the (scheme base) library from R7RS-small could be considered a core profile 2021-02-04T13:26:59Z mangol: but the split between R7RS-small and R7RS-large is already cause for confusion. they are standardized at different paces (different by 7 years and counting) 2021-02-04T13:27:25Z mangol: and the split is quite coarse-grained. R7RS-small must be implemented in full, and optionally also R7RS-large in full 2021-02-04T13:27:55Z mangol: it should be possible to implement only selected parts of the combination R7RS-small + R7RS-large. 2021-02-04T13:28:19Z mangol: indeed, that's what people already do, because that's the practical way to implement Scheme. RnRS should explicitly encourage this style that we use anyway. 2021-02-04T13:28:59Z mangol: and each RnRS for n = 3, 4, 5, 6, 7, 8, ... should ship all at once, with all the modules in the same spec (even though most of them are optional) 2021-02-04T13:29:40Z mangol: since it's very hard to write one spec shipped all at once, that has a ton of modules in it, the process would also encourage people to keep the number of modules low 2021-02-04T13:30:04Z mangol: and move inessential but still useful features to be handled by a more relaxed process 2021-02-04T13:30:53Z mangol: R7RS-large in its current form, to me, should team up with and hang out with SLIB, schemepunk, yuni, spells, ... library collections like that. 2021-02-04T13:31:20Z mangol: the deep syntax SRFIs (macro systems, keyword arguments, ...) should be kept in the RnRS process 2021-02-04T13:32:54Z mangol: if we could combine the R7RS-large data structure SRFIs, SLIB, schemepunk, yuni, spells all into one huge library with a formal yearly or twice-yearly release process 2021-02-04T13:33:22Z mangol: and ship an R8RS that unites R5RS, R6RS, R7RS-small, and the R7RS-large syntax SRFIs 2021-02-04T13:33:47Z mangol: that's what would really get Scheme going as one community 2021-02-04T13:34:42Z mangol: the fact that R7RS-large is one monolithic standard already to be implemented all at once, already has ramifications on things like macro systems 2021-02-04T13:34:43Z ecraven: well, do you think r6rs people will like the r7rs-large syntax extensions in "their" language? 2021-02-04T13:35:13Z mangol: there's been debate on what macro system to add to R7RS-large in addition to syntax-rules. should it be syntax-case? explicit renaming? implicit renaming? 2021-02-04T13:35:31Z ecraven: syntactic closures! 2021-02-04T13:35:53Z mangol: if we have one R8RS, with all of those macro systems (all of them have been already used to write real code in numerous Scheme implementations for years) 2021-02-04T13:36:11Z ecraven: ah, but then a new implementation would have to implement *all* of them 2021-02-04T13:36:23Z mangol: and each of them is an optional library, independent of the others, then we don't have to have debates like that 2021-02-04T13:36:44Z mangol: a new implementation wouldn't need to have any of them because they are all optional 2021-02-04T13:37:18Z mangol: "market pressure" would dictate which macro systems are implemented in practice. if users keep asking for something repeatedly, many implementors will add it 2021-02-04T13:37:40Z mangol: that's already the situation: some schemes have syntax-rules only, some have syntax-case and other er-macro-transformer / ir-... 2021-02-04T13:37:47Z ecraven: well, that way lies total fragmentation. now I cannot use your library because you use one of the macro systems my implementation doesn't support 2021-02-04T13:38:02Z mangol: that situation already exists in Scheme 2021-02-04T13:38:14Z mangol: and it's already solved by market demand 2021-02-04T13:38:47Z mangol: momentum is important in any design process, certainly including the RnRS process 2021-02-04T13:38:55Z Oxyd: The ideal way would be to standardise on just one low-level macro system and then people can implement all their favourite high-level macro systems as portable libraries. You don't need to standardise those because people don't need a standard in order to just download their favourite implementation off the internet. 2021-02-04T13:39:50Z ecraven: it is? I don't see any single macro system "winning" 2021-02-04T13:39:56Z ecraven: I think I've heard that no-one but a handful of people understand the syntax-case implementation (of which there is only one which has been ported to other systems) 2021-02-04T13:40:03Z Major_Biscuit quit (Ping timeout: 265 seconds) 2021-02-04T13:41:12Z mangol: Oxyd: that's an excellent idea if it's technically possible to pull it off. i'm not good enough at macros to say whether it is. 2021-02-04T13:41:39Z mangol: ecraven: probably right about syntax-case :) psyntax is probably the implementation you're referring to 2021-02-04T13:41:58Z Oxyd: I believe that's how most Schemes are implemented anyway. The interpreter supports some sort of low-level system and the rest is implemented as Scheme code on top of that. 2021-02-04T13:42:03Z mangol: that's also an excellent example of why an ambitious standard needs to aggressively make parts optional 2021-02-04T13:42:05Z ecraven: I'm not entirely sure it would be a good idea to standardise it, *if* indeed the situation is as I've heard ;) 2021-02-04T13:42:59Z mangol: ecraven: IMHO that's too late :) R6RS already standardized it, so we are now stuck with it. 2021-02-04T13:43:04Z notzmv quit (Remote host closed the connection) 2021-02-04T13:43:40Z mangol: but we can make syntax-case an optional library so that TinyScheme doesn't need to ship it 2021-02-04T13:44:08Z mangol: even syntax-rules could be an optional library. there are no parts in core Scheme that strictly depend on syntax-rules being present. 2021-02-04T13:45:19Z mangol: and if for some reason, 15 years from now, the scheme community discovers that foo-macro-transformer is a subpar way to do macros, and everything it does can be done better by some other macro system, 2021-02-04T13:45:56Z gzj joined #scheme 2021-02-04T13:46:02Z mangol: then R9RS can add an advisory note that "we have foo-macro-transformer but nobody will hate you if you don't implement it". and R10RS can drop that module since no-one has used it in 10 years 2021-02-04T13:46:45Z Oxyd: That's a shitty way to write a standard. Either something is required by a standard, or it isn't. Saying it is but not really just makes the whole standard look like a joke. 2021-02-04T13:48:49Z mangol: well, the prior art is that R5RS and R7RS-small were both an obvious success. both are small enough that there is no pressing need to modularize. 2021-02-04T13:49:18Z mangol: and crucially, both R5RS and R7RS-small are _still_ subsetted by implementations all the time. that looks an awful lot like a de facto modularization of the standard 2021-02-04T13:49:48Z mangol: R6RS wasn't modularized in the sense of having optional parts, and it drove a wedge smack dab in the middle of the community for 15 years! 2021-02-04T13:50:05Z mangol: which R7RS-large tries to rectify, driving a similar (but less pronounced) wedge 2021-02-04T13:50:40Z mangol: against that backdrop, a standard that has all of that same stuff but lets the market decide on which options win and which usage profiles are formed, 2021-02-04T13:50:54Z mangol: doesn't look all that bad. not to mention that that's what implementors are already doing in practice 2021-02-04T13:53:00Z mangol: except R6RS implementors, who do much less of it. but R6RS implementors won't retroactively optionalize and extend R6RS to accommodate the langauge that R7RS implementors want to offer 2021-02-04T13:53:24Z mangol: i just don't see any way to get the whole community behind one RnRS without pervasive use of options 2021-02-04T13:53:58Z cubik joined #scheme 2021-02-04T13:55:32Z Oxyd: What's the point of doing that, though? You write code and you have no guarantee it'll run on all RnRS implementations because they're all free to just not implement some of those parts that your program uses. 2021-02-04T13:58:44Z mangol: that's already the level of guarantee you get for substantial, practical programs 2021-02-04T13:59:19Z Major_Biscuit joined #scheme 2021-02-04T13:59:36Z mangol: people already say their Scheme implementation is an R6RS or R7RS implementation, and then just leave a few parts unimplemented 2021-02-04T13:59:53Z ecraven: thus r7rs-coverage :P 2021-02-04T14:00:21Z mangol: exactly. the "which parts to implement" problem can be solved by giving information to the user community about which implementations support what 2021-02-04T14:00:32Z lortabac joined #scheme 2021-02-04T14:00:51Z mangol: using tools such as r7rs-coverage to make it easy to compare implementations 2021-02-04T14:01:03Z Oxyd: Well those people are wrong. If it doesn't implement all the required parts, then it's not a conforming RnRS implementation. And not all valid RnRS programs will run on it. That's precisely the problem. I don't see how your modularisation idea solves that. 2021-02-04T14:01:52Z Oxyd: Ideally, you'd know that something calling itself an RnRS implementation means that you can use all of RnRS. That's the whole point of having these reports. 2021-02-04T14:02:08Z mangol: full conformance to a big standard is not the decisive factor for a useful programming environment 2021-02-04T14:02:20Z mangol: that's not the point of having the reports 2021-02-04T14:02:24Z Oxyd: If we want to switch to webpages detailing which Schemes implement which parts, then maybe we can just get rid of the reports completely. 2021-02-04T14:02:40Z Oxyd: No, that's precisely the point of having the reports. 2021-02-04T14:03:07Z Oxyd: If that is not meant to be the point, the let's just get rid of them. 2021-02-04T14:04:10Z gzj quit (Read error: Connection reset by peer) 2021-02-04T14:04:31Z gzj joined #scheme 2021-02-04T14:05:11Z gzj quit (Remote host closed the connection) 2021-02-04T14:05:34Z gzj joined #scheme 2021-02-04T14:08:10Z gzj quit (Remote host closed the connection) 2021-02-04T14:08:17Z ecraven: hm.. anyone here familiar with the tinyscheme codebase? it seems to have problems with calling (read) while loading a file. 2021-02-04T14:08:32Z gzj joined #scheme 2021-02-04T14:09:11Z gzj quit (Remote host closed the connection) 2021-02-04T14:09:26Z pflanze quit (Read error: Connection reset by peer) 2021-02-04T14:09:33Z gzj joined #scheme 2021-02-04T14:09:39Z mangol: ecraven: IIRC TinyScheme's reader is implemented using a gnarly C state machine. good luck :) 2021-02-04T14:09:55Z ecraven: hehe, I'm not fixing it, just noticing ;) 2021-02-04T14:10:04Z ecraven: the stalin egg hasn't been ported to chicken5 yet :-/ 2021-02-04T14:10:05Z mangol: Oxyd: the black-and-white thinking you espose is not followed in practice, and yet mysteriously people are writing useful scheme code :) 2021-02-04T14:10:12Z skapata joined #scheme 2021-02-04T14:10:28Z pflanze joined #scheme 2021-02-04T14:10:36Z mangol: based on the RnRS reports that we have so far, even though they are often not fully implemented 2021-02-04T14:11:07Z gzj quit (Remote host closed the connection) 2021-02-04T14:11:30Z gzj joined #scheme 2021-02-04T14:11:48Z Oxyd: You appear to be confused about the role of standards. You certainly don't need a standard to “write useful Scheme code”. You can simply download an implementation, follow its documentation and write useful code for that and you don't even have to know that RnRS exists. The problem is if you want to write code that's not chained to a single implementation. Then you need to write your code 2021-02-04T14:11:50Z Oxyd: against a particular standard, and the implementations have to follow that standard fully if they are to run your program. “Mostly compliant” doesn't cut it. 2021-02-04T14:12:51Z mangol: i am not confused about the practical role of standards. i may be confused about the Platonic Form of a standard that doesn't exist anywhere in nature 2021-02-04T14:13:10Z gzj quit (Remote host closed the connection) 2021-02-04T14:13:31Z gzj joined #scheme 2021-02-04T14:14:21Z mmmattyx joined #scheme 2021-02-04T14:14:37Z mangol: the practical value of a Scheme standard is that _when_ any two implementations do thing X, they do it the same way. _if_ only some implementations do thing X, and others don't, that's fine. _unless_ thing X is something totally essential 2021-02-04T14:15:11Z gzj quit (Remote host closed the connection) 2021-02-04T14:15:32Z mangol: that's track record of what the RnRS standards deliver so far, and it works well. 2021-02-04T14:15:33Z gzj joined #scheme 2021-02-04T14:16:10Z gzj quit (Remote host closed the connection) 2021-02-04T14:16:20Z mangol: if a scheme implementor really doesn't want to add feature X, it's hard to persuade them to add it by invoking the authority of RnRS. empirically, they'll just boycott that edition of RnRS 2021-02-04T14:17:32Z Oxyd: Which is completely fine. But that Scheme shouldn't be labelled as RnRS Scheme so that people aren't confused into thinking that their RnRS programs will work on it. 2021-02-04T14:18:13Z mangol: "RnRS program" is not a practical stand-in for "useful program" 2021-02-04T14:18:27Z Oxyd: Correct. 2021-02-04T14:19:02Z Oxyd: And indeed, RnRS doesn't define what a “useful program is”. It merely defines what “an RnRS program” is. 2021-02-04T14:19:17Z mangol: as it stands, RnRS is actively getting in the way of useful programming due to the R6RS/R7RS split, and due to the fact that R7RS-large focusing on nice-to-have but inessential libraries is holding back evolution of the core language 2021-02-04T14:19:37Z mangol: IMHO that's the first priority to fix 2021-02-04T14:20:28Z Oxyd: I agree. Useful libraries should be left up to third parties, not bundled with the language. 2021-02-04T14:20:37Z mangol: great :) 2021-02-04T14:21:08Z mangol: but i would argue that we have a responsibility to the people who wrote the earlier RnRS reports, and the programmers who rely on them, to carry forward those parts of the language 2021-02-04T14:21:47Z mangol: and combining R6RS + R7RS into one language leads to a franken-language _unless_ we modularize everything 2021-02-04T14:25:14Z mangol: happily, all of R6RS, R7RS-small, and R7RS-large are already well modularized internally. those reports just say "it's true that we went to the trouble of splitting all our stuff into neat modules, but that doesn't mean implementors or users should actually care about those module boundaries" 2021-02-04T14:25:23Z mangol: "pay no attention to the modules behind the curtain" 2021-02-04T14:27:39Z mangol: Will Clinger wrote "R7RS Considered Unifier of Previous Standards". his technical points are astute, but if his title is correct, why do i keep typing "-r 6" and "-r 7" into scheme implementations all day? 2021-02-04T14:27:44Z mangol: and caring about which standard i use 2021-02-04T14:28:25Z mangol: his paper is a commendable exploration of the problem, as is Takashi Kato's similar paper, but they don't go far enough 2021-02-04T14:28:47Z jcowan: Because the commitment to a particular standard is like the commitment to a particular Scheme: it is tribal, not technical. 2021-02-04T14:29:20Z jcowan: and the same for the commitment to a particular Lisp or a particular programming language. 2021-02-04T14:30:09Z badkins joined #scheme 2021-02-04T14:31:08Z ecraven: jcowan: at least for r7rs, things aren't looking so bad! just tried to update things, some of those misses may still be my fault: https://ecraven.github.io/r7rs-coverage/ 2021-02-04T14:32:02Z joast joined #scheme 2021-02-04T14:32:51Z jcowan: Oxyd: Conformance to a standard is never going to be exact. I encourage every implementer to document "derogations from the standard", points at which their implementation does things differently. 2021-02-04T14:33:20Z jcowan: Portability does not mean, and has never meant, that you can pick up code, even conforming code, and have it guaranteed to work without any adjustments. 2021-02-04T14:34:16Z badkins quit (Ping timeout: 240 seconds) 2021-02-04T14:34:53Z jcowan: Long ago, I was working with a member of another dharma line to get a rather large non-interactive program (I forget if it was a server or a CLI program) ported from some Unix variety to Windows. I sold him on the best way to do this being Interix (the distant ancestor of WSL). 2021-02-04T14:36:44Z jcowan: We set up the Interix environment on a Windows machine and ran 'make'. At that stage of my existence, I expected it to just compile and link without further ado. But there were some glitches, partly from version skew in gcc, partly for other reasons I forget now. 2021-02-04T14:37:05Z jcowan: I said to him, "This isn't very portable, is it." 2021-02-04T14:37:23Z jcowan: He replied "Are you kidding? Porting C code usually takes days to weeks." 2021-02-04T14:37:38Z jcowan: We fixed the problems within a few hours. 2021-02-04T14:40:03Z jcowan: As far as R6 vs R7, the question is "Whose base library is this?", where "base library" can be roughly defined as "the library that defines `define`". 2021-02-04T14:48:33Z epony quit (Remote host closed the connection) 2021-02-04T14:51:45Z epony joined #scheme 2021-02-04T15:06:12Z mirrorbird joined #scheme 2021-02-04T15:07:12Z madage quit (Quit: leaving) 2021-02-04T15:10:30Z mangol: if commitment is tribal, we should find a way to unite the tribes. if we can take the things we already have and structure them so that everyone gets what they want, 2021-02-04T15:10:49Z mangol: though perhaps not in the way they expected to get it, we can unite the scheme standards. 2021-02-04T15:11:22Z mangol: i don't see technical obstacles. i see social obstacles, but i'm wired to doubt that they are formidable. 2021-02-04T15:12:34Z mangol: we now have scheme.org, and within a few days of asking, 12 implementations now have a foo.scheme.org redirect for themselves 2021-02-04T15:12:44Z mangol: people want scheme to be one thing they can get behind 2021-02-04T15:18:37Z aeth: of the big three (Racket, Guile, Chicken), only Chicken seems to have it 2021-02-04T15:19:28Z aeth: Chez no, Kawa yes, Chibi yes. 2021-02-04T15:19:37Z mangol: i sent mail to Andy Wingo of Guile; he hasn't replied yet. we haven't yet asked Chez. of Racket, we haven't asked and i'm not sure whether they want one; we can ask once we have the rest 2021-02-04T15:20:19Z aeth: Hmm, and MIT/GNU Scheme is mit.scheme.org, which I guess makes sense. 2021-02-04T15:21:07Z mangol: as with GNU/Linux -> Linux, MIT Scheme is what everyone calls it. and they also have a mit-scheme.org redirect previously registered 2021-02-04T15:30:14Z raingloom joined #scheme 2021-02-04T15:31:45Z amirouche quit (Ping timeout: 240 seconds) 2021-02-04T15:40:27Z amirouche joined #scheme 2021-02-04T15:46:57Z mirrorbird quit (Ping timeout: 272 seconds) 2021-02-04T15:52:32Z badkins joined #scheme 2021-02-04T15:55:33Z brainfunnel joined #scheme 2021-02-04T16:03:44Z imode joined #scheme 2021-02-04T16:08:26Z jcowan: Not to mention that there are two other GNU Schemes, Guile and Kawa 2021-02-04T16:10:08Z jcowan: (in the sense that they are listed on https://www.gnu.org/software/software.html, not merely that they use GNU licenses_ 2021-02-04T16:10:26Z aeth: GNU has at least two CLs (CLISP, GCL), at least three Schemes (Guile, Kawa, MIT), and at least one other Lisp (Emacs Lisp). 2021-02-04T16:11:10Z aeth: Probably just those 6 but I'm not going to go through each of those packages to verify that. 2021-02-04T16:11:26Z klovett_ joined #scheme 2021-02-04T16:14:57Z klovett quit (Ping timeout: 264 seconds) 2021-02-04T16:18:19Z Steeve joined #scheme 2021-02-04T16:25:45Z raingloom quit (Ping timeout: 240 seconds) 2021-02-04T16:39:33Z mirrorbird joined #scheme 2021-02-04T16:39:36Z ManDay joined #scheme 2021-02-04T16:40:36Z iv4nshm4k0v: ... And then there's GNU SLIB as well... 2021-02-04T16:53:16Z Riastradh: duncanm: Yes, obviously we'll need to use MAP_JIT, but the issue is that currently compiled code blocks live in the same pages of the heap as everything else that's writable. So it will be necessary to store compiled blocks in separately allocated pages, which requires teaching the garbage collector about them. 2021-02-04T16:54:03Z duncanm: Ah 2021-02-04T16:55:38Z jcowan: Saying "Sure, link to me" hardly constitutes a union of tribes. 2021-02-04T16:55:54Z justinethier joined #scheme 2021-02-04T16:56:13Z jcowan: Did you get any indication from those chez Chez why they turned it down? 2021-02-04T17:00:25Z gwatt: jcowan: they said "we haven't yet asked Chez" 2021-02-04T17:01:08Z jcowan: Oh, I was confused. 2021-02-04T17:01:57Z justinethier: ecraven - Husk should be good to go now, had to upload a new version with some compilation fixes to Hackage 2021-02-04T17:02:31Z justinethier: I doubt husk will stack up very well against other schemes in the benchmarks though :( 2021-02-04T17:02:47Z jcowan: As for macro systems, there is pretty good empirical evidence that you can't implement syntax-case on top of er or vice versa. 2021-02-04T17:02:50Z smazga quit (Quit: leaving) 2021-02-04T17:03:26Z acarrico joined #scheme 2021-02-04T17:03:42Z jcowan: It may well be that we cannot find common ground, but we'll see what the voters have to sayl 2021-02-04T17:04:12Z gwatt: I'm pretty sure you can implement er on top of syntax-case 2021-02-04T17:04:30Z Zipheir: Speaking of which, I'm guessing that voting on the Orange ballot can happen pretty soon. 2021-02-04T17:07:49Z ecraven: justinethier: thanks! 2021-02-04T17:07:53Z amirouche quit (Ping timeout: 265 seconds) 2021-02-04T17:08:00Z ecraven: justinethier: I'm at least as interested in r7rs-coverage as in r7rs-benchmarks ;) 2021-02-04T17:08:19Z ecraven: imho it's at least as important.. if you *only* want fast, you can always use stalin :P 2021-02-04T17:08:31Z ecraven: (not that I can get that to compile on this machine without lots of hoop-jumping) 2021-02-04T17:08:34Z justinethier: Good point :) 2021-02-04T17:09:28Z ecraven: I like the benchmarks, but I'd love to get something quantitative going as well, comparing actually useful features 2021-02-04T17:15:20Z justinethier: Both are useful. Coverage would be especially helpful to assess how well each system supports R7RS large 2021-02-04T17:23:04Z amirouche joined #scheme 2021-02-04T17:25:24Z mangol: jcowan: linking is not a union of tribes. it's an indication that if there's easy way to unite, they will. 2021-02-04T17:25:54Z Zipheir: AFAIK chibi is the only Scheme so far to provide the R7RS-large libraries under both their SRFI names and their (scheme FOO) names. 2021-02-04T17:25:55Z mangol: in my view, the work of standardization is to build that way for them. like a big sign that says "unite here, see how easy it is. we did the work for you" 2021-02-04T17:26:31Z mangol: in practice, that requires an ongoing dialog with implementors throughout the standardization process 2021-02-04T17:26:32Z justinethier quit (Quit: Connection closed) 2021-02-04T17:28:15Z mangol: RnRS is currently having that dialog. but R6RS implementors are left out of it. 2021-02-04T17:28:50Z justinethier joined #scheme 2021-02-04T17:29:31Z Zipheir: Since R7 is more or less backwards-compatible, it's not like they've been forced out. 2021-02-04T17:30:51Z Zipheir: The main drivers behind R6 seem to live on an island somewhere. I've never seen them on any Scheme-related mls, channels, etc. 2021-02-04T17:31:06Z mangol: R6RS implementors are not of the opinion that (library ...) and syntax-case and condition objects are old-style code and R7RS is the new style. 2021-02-04T17:31:53Z Zipheir: I don't think that's a big difference. s/library/define-library/, and move on. 2021-02-04T17:32:10Z mangol: yes, it's painful that there are two different ways to do the same thing, and that people are AWOL or grumpy and you don't know what they think or what they want. 2021-02-04T17:32:11Z Zipheir: I'm perfectly happy to provide multiple library definition files, anyway. 2021-02-04T17:32:38Z badkins quit (Remote host closed the connection) 2021-02-04T17:32:46Z mangol: the point of standardization is agreement, and the point of agreement is to put aside social/personal differences like that so technical compatibility can be achieved 2021-02-04T17:32:48Z euandreh quit (Ping timeout: 258 seconds) 2021-02-04T17:32:50Z elliott_ quit (Ping timeout: 272 seconds) 2021-02-04T17:33:39Z Zipheir: mangol: I think it's fair enough to say that's the opposite of the R6RS approach. 2021-02-04T17:33:44Z mangol: doesn't matter. 2021-02-04T17:33:48Z mangol: R6RS is set in stone. 2021-02-04T17:33:54Z mangol: nothing can change that 2021-02-04T17:34:06Z mangol: R7RS-large is not yet set in stone. 2021-02-04T17:34:20Z elliott_ joined #scheme 2021-02-04T17:34:21Z mangol: we still have options 2021-02-04T17:34:56Z Zipheir: (Not that it was driven by "social/personal differences", but that it was something of a "this is the new Scheme" statement.) 2021-02-04T17:35:10Z badkins joined #scheme 2021-02-04T17:35:49Z mangol: yes, they acted against the interests of the scheme community taken as a whole. but it's been 13 years. we can't go back in time and tell them to act different. 2021-02-04T17:36:33Z mangol: what we can do, is consciously decide whether we want to repeat that move with R7RS-large or ship something that the whole scheme community can get behind. 2021-02-04T17:37:09Z mangol: "that will never work" is a fair objection, but i'd be willing to try exhausting all the avenues before giving up. we have many options left before finalizing anything 2021-02-04T17:38:44Z Zipheir: Right. 2021-02-04T17:39:16Z Riastradh: i'mma draw a scheme from a stone and thereby become king 2021-02-04T17:39:17Z Zipheir: The main fight is against apathy, the combined "there's no point"/"why did they choose *that*?" responses. 2021-02-04T17:40:16Z amirouche: Cython is not an implementation of Python 2021-02-04T17:40:19Z amirouche backlogs 2021-02-04T17:40:28Z badkins quit (Ping timeout: 258 seconds) 2021-02-04T17:40:49Z Zipheir: As with the SRFI process, we don't have enough people with enough time, and the people who aren't involved kvetch about things they didn't comment on when they could. 2021-02-04T17:41:40Z Zipheir: Maybe we can fix it with merch-bribery, as AAG suggests. 2021-02-04T17:43:20Z mangol: regrettably, bribery cannot fix exhaustion 2021-02-04T17:43:57Z mangol: i'm not at all apathetic about our chances of uniting R6RS and R7RS 2021-02-04T17:44:27Z justinethier quit (Quit: Connection closed) 2021-02-04T17:45:06Z mangol: but it requires taking everything set on the nice TeX template since R5RS and saying "this is good", whether you like saying so or not. 2021-02-04T17:45:37Z mangol: and finding a way to make it all work 2021-02-04T17:46:12Z ManDay quit (Quit: WeeChat 3.0) 2021-02-04T17:46:52Z Riastradh: `the lambda of the lake, her arms clad in purest shimmering symbols, held aloft continuation from the bottom of the stack, signifying by define providence that I, Arthur Gleckler, was to continue the computation -- THAT is why I am your king' 2021-02-04T17:48:35Z mangol: fulfill the prophecy 2021-02-04T17:49:31Z mangol: as for why people are exhausted to varying degrees by the SRFI process, that's a different but related problem. 2021-02-04T17:49:44Z mangol: SRFI is much lighter than RnRS in the sense that a SRFI's scope is way more limited. 2021-02-04T17:50:07Z mangol: but it's similarly heavyweight in that you write a comprehensive document in one go, ship it out the door, and it's final. 2021-02-04T17:50:16Z mangol: that puts a lot of pressure on getting things right at once 2021-02-04T17:50:54Z mangol: that's a good thing for RnRS (when RnRS sticks close to the core language) because a core language has to be a stable bedrock that everything is built on 2021-02-04T17:51:02Z wasamasa: speaking of which 2021-02-04T17:51:04Z mangol: but it's not necessary for higher level libraries 2021-02-04T17:51:24Z wasamasa: amirouche: could you please enlighten me what the outstanding issue is with https://github.com/scheme-requests-for-implementation/srfi-167/pull/14#issuecomment-771082099 2021-02-04T17:52:40Z wasamasa: amirouche: worrying about performance, fine, I worry about spec-conformant behavior here :P 2021-02-04T17:52:46Z mangol: the current idea of building the next RnRS by shipping it part by part as SRFIs is a clever and effective one 2021-02-04T17:53:17Z mangol: but it doesn't fix the scope creep of RnRS toward ever higher-level libraries while neglecting its main remit of compatibility close to the core of Scheme 2021-02-04T17:54:08Z Zipheir: It seems like versioning of library specs is a good idea. 2021-02-04T17:54:10Z mangol: as said, those high-level libraries are great and there is demand for them, but RnRS is the most daunting process imaginable for creating them 2021-02-04T17:54:31Z wasamasa: Zipheir: yes indeed, I've noticed that with the above SRFI, it was almost, but not really usable 2021-02-04T17:55:36Z amirouche: wasamasa: your wording is what I had in mind. 2021-02-04T17:55:43Z wasamasa: hum 2021-02-04T17:55:44Z Major_Biscuit quit (Ping timeout: 265 seconds) 2021-02-04T17:55:44Z Zipheir: Other languages simply declare certain specs "stable" and continue to fine-tune the rest. 2021-02-04T17:55:53Z wasamasa: that's great 2021-02-04T17:56:08Z Riastradh: i declare myself `stable' and fine-tune the rest 2021-02-04T17:56:25Z amirouche: and leave any new features to downstream 2021-02-04T17:56:59Z wasamasa: amirouche: maybe being a tiny bit clearer that it may not raise an exception for a missing key 2021-02-04T17:57:01Z Zipheir: amirouche: And new features can then be integrated upstream without breaking everything, in theory, if the spec is allowed to continue to change. 2021-02-04T17:57:24Z amirouche: wasamasa: yes 2021-02-04T17:57:27Z wasamasa: alright 2021-02-04T17:59:04Z amirouche: overal I agree with mangol, I also agree with ecraven that sockets are a missing piece to help with portability. 2021-02-04T17:59:39Z amirouche: (I think it was mentioned, but it seems to me having a two c ffi profiles would be a good thing) 2021-02-04T18:00:32Z Zipheir: FFI totally sucks and no number of libraries will never be really satisfactory. 2021-02-04T18:00:38Z seepel joined #scheme 2021-02-04T18:00:39Z Zipheir: Oops, ever, even. 2021-02-04T18:00:47Z choas quit (Read error: Connection reset by peer) 2021-02-04T18:00:56Z wasamasa: ever seen this thing: https://github.com/skeeto/elisp-ffi 2021-02-04T18:01:06Z wasamasa: it's a funny hack 2021-02-04T18:01:08Z badkins joined #scheme 2021-02-04T18:01:09Z amirouche: I think that R7RS-large is a good thing, setting library specications in stone for things as complex or diverse such as OKVS or JSON. 2021-02-04T18:01:45Z choas joined #scheme 2021-02-04T18:01:47Z amirouche: I mean having a common OKVS is nice, but being able to evolve the interface is better. 2021-02-04T18:02:06Z wasamasa: versioned SRFIs could be useful 2021-02-04T18:02:16Z wasamasa: like, suppose that HTTP SRFI that's occasionally talked about 2021-02-04T18:02:29Z wasamasa: start out simple, iron out all the bugs, release a new and more useful version 2021-02-04T18:02:33Z choas quit (Read error: Connection reset by peer) 2021-02-04T18:02:48Z wasamasa: that I'd have a lot less reservations with than an unchanging SRFI 2021-02-04T18:03:08Z amirouche: yep maybe versioned SRFIs could be a good thing. What I am not completly ready to do is "throw away SRFI process" because it has lot of momentum and people know about it. 2021-02-04T18:03:30Z amirouche: If a new process is started, it should play nice with SRFI. 2021-02-04T18:03:33Z mangol: perhaps i might interest you in periodic versions? for example, yearly :D 2021-02-04T18:03:35Z wasamasa: not sure about the naming though 2021-02-04T18:03:37Z Zipheir: Maybe a suggestion of SRFI versions on srfi-discuss would be a way to raise the possibility. 2021-02-04T18:03:44Z wasamasa: maybe like with SCPs 2021-02-04T18:03:58Z raingloom joined #scheme 2021-02-04T18:04:19Z mangol: my favorite data point is OpenBSD 2021-02-04T18:04:20Z Zipheir: (import (srfi SRFI-NUMBER VERSION-NUMBER)) 2021-02-04T18:04:29Z wasamasa: SRFI-111 is the start, SRFI-111-1 and SRFI-111-2 would be related ones 2021-02-04T18:04:29Z amirouche: mangol: yes, yearly version would work. I think starting a new effort from scratch, a separate entity, is a lot of social and marketing effort 2021-02-04T18:04:47Z mangol: openbsd releases a version every six months. always on the same date. 2021-02-04T18:05:07Z mangol: instead of planning some milestone that the versions will have, they simply ship whatever is stable at that time. 2021-02-04T18:05:17Z wasamasa: not sure about (import (srfi NUMBER VERSION)) as we already have things like (import (srfi NUMBER NAME)) or (import (srfi NUMBER test)) 2021-02-04T18:05:32Z amirouche: mangol: do they have LTS versions? how do they handle deprecation? 2021-02-04T18:06:38Z amirouche: Maybe C FFI is the wrong level of abstraction. 2021-02-04T18:06:54Z Zipheir: It is. 2021-02-04T18:07:55Z amirouche: Not having a common socket interface is painful. And thinking about making it working across OS outside POSIX... is very daunting. 2021-02-04T18:08:06Z Zipheir: amirouche: They don't do LTS, and you need to keep on top of new versions. IIRC there's no trivial way to "skip" releases when upgrading. 2021-02-04T18:08:47Z amirouche: Zipheir: does it mean, every 6 month, one must upgrade? 2021-02-04T18:09:04Z Zipheir: Pretty much. 2021-02-04T18:09:33Z Zipheir: If you want to keep getting patches, that is. 2021-02-04T18:09:38Z amirouche: That is much different from usual way that i consider the _lazy_ way, that boils down to "not upgrade at all" 2021-02-04T18:10:05Z Zipheir: You can do that with OpenBSD, if you don't care about recent fixes. 2021-02-04T18:10:06Z mangol: amirouche: i don't think OpenBSD has LTS versions, but they probably backport security fixes to old versions 2021-02-04T18:10:08Z hyiltiz quit (Ping timeout: 256 seconds) 2021-02-04T18:10:30Z hyiltiz joined #scheme 2021-02-04T18:10:30Z hyiltiz quit (Changing host) 2021-02-04T18:10:30Z hyiltiz joined #scheme 2021-02-04T18:10:53Z mangol: anyway, for Scheme libraries, what we would be standardizing yearly (or twice-yearly, etc.) is the API, not the implementation 2021-02-04T18:11:06Z mangol: standardizing = releasing a stable version 2021-02-04T18:11:16Z amirouche: we could do yearly release anyway, but at some point if industry catch on, they will want Long Term Support release, that is the common idiom in the industry. 2021-02-04T18:11:25Z mangol: so bugs and optimizations can be done to the implementation of a stable release after that date if people care enough 2021-02-04T18:11:29Z amirouche: Another pain point with SRFI: the absence of CI. 2021-02-04T18:11:47Z Zipheir: That's entirely an implementation issue. 2021-02-04T18:11:47Z choas joined #scheme 2021-02-04T18:11:47Z amirouche: (or even cross scheme CI = my dream) 2021-02-04T18:12:03Z Zipheir: The critical thing is and always should be a good specification. 2021-02-04T18:12:17Z amirouche: specification is moving target? 2021-02-04T18:12:31Z mangol: amirouche: agreed. i'm skeptical that good specifications can be written waterfall-style in one go. 2021-02-04T18:13:03Z mangol: unless the spec is a generalization of proven stuff that already exists. good SRFIs tend to be like that. 2021-02-04T18:13:08Z Zipheir: Sure. But that doesn't mean the entire specification should be changing constantly. 2021-02-04T18:13:28Z mangol: Zipheir: i predict there's social pressure against drastic changes 2021-02-04T18:13:29Z amirouche: Also, SRFI style specification are too short or terse for use as documentation by users. 2021-02-04T18:13:31Z Zipheir: (And there's no testing English.) 2021-02-04T18:13:43Z mangol: amirouche: i also agree with you on documentation 2021-02-04T18:15:20Z mangol: the SRFI process should stay with us for sure, but empirically, the best SRFIs are tightly scoped and ideally codify existing practices. 2021-02-04T18:15:42Z Steeve quit (Quit: end) 2021-02-04T18:15:53Z mangol: big SRFIs that invent lots of new stuff tend to be the daunting ones, with varying success. 2021-02-04T18:16:15Z mangol: that kinda thing is best left to a design process that lets us add things piecemeal, and fix mistakes later 2021-02-04T18:17:06Z amirouche: maybe, the problem is that we think in terms of "standard" and "specification", that is daunting for many devs (me included before 2 or 3 years back) 2021-02-04T18:17:27Z amirouche: if we think / speak in terms of portable libraries, people will find that more relatable. 2021-02-04T18:17:33Z mangol: agree completely. 2021-02-04T18:18:17Z mangol: to be more precisely, specifications should be written based on existing libraries, not the other way around. or written at the same time, so both can be changed later. 2021-02-04T18:18:42Z amirouche: what is the difference between specification and documentation? 2021-02-04T18:18:57Z mangol: documentation is nicer to read :) 2021-02-04T18:19:10Z mangol: "specification is in serif font, documentation is in sans-serif font" 2021-02-04T18:19:11Z ecraven: RnRS are plenty nice to read ;) 2021-02-04T18:19:20Z amirouche: In many instance, I see the Python doc missing some significant information like big O complexity that may be included in PEP. 2021-02-04T18:19:24Z mangol: i agree though. RnRS are a pleasure to read 2021-02-04T18:19:59Z amirouche: (in fact, I do not remember reading about big O complexiy in python doc) 2021-02-04T18:20:07Z madage joined #scheme 2021-02-04T18:20:14Z Zipheir: Thinking in terms of specifications is a good discipline of programming. 2021-02-04T18:20:45Z mangol: IMHO good programming requires a mix of different approaches. some problems are so vague that there's nothing to make a specification of 2021-02-04T18:20:51Z ecraven: I think R7RS did very well by adding a library / module system... now the main thing I'm still missing is networking / sockets (which might be possible to specify) and FFI (which I doubt is even possible to specify satisfactorily) 2021-02-04T18:21:05Z amirouche: I agree with ecraven 2021-02-04T18:21:23Z amirouche: and mangol 2021-02-04T18:21:28Z amirouche: but not Zipheir :P 2021-02-04T18:21:33Z amirouche: because. 2021-02-04T18:21:52Z Zipheir: amirouche: On what point? 2021-02-04T18:22:04Z amirouche: That was a joke. 2021-02-04T18:22:08Z amirouche: trying to be a joke. 2021-02-04T18:22:12Z Zipheir: Ah, ok. 2021-02-04T18:22:59Z amirouche: Specification is really important as starting point, but I take the example of OKVS, it is difficult maybe impossible to figure how it is useful even if you may be able to implement it based on the document. 2021-02-04T18:23:41Z Zipheir: Well, those details are always going to be difficult to state clearly. 2021-02-04T18:23:42Z amirouche: Things like red-black tree are very useful and essential, and stand on their own, they do not require more explanation or more precisly explaining every situation where you can use it is impossible 2021-02-04T18:24:16Z amirouche: I think what I miss in SRFI documennts is how-tos or cookbook. 2021-02-04T18:24:22Z Zipheir: When I talk about specifications, I mean clear statements (in some language) of what computations you're talking about. 2021-02-04T18:24:36Z Zipheir: (More SRFIs should have formal semantics, incidentally.) 2021-02-04T18:24:51Z ecraven: I still believe that the core language should be as small as possible (but no smaller). I wouldn't mind moving `map' to (scheme list), but instead gaining (scheme socket) or (scheme network) :P also, some standard way to version libraries would be great, there are some things missing from srfi 13 or srfi 1 that should really be added :-/ 2021-02-04T18:25:16Z mangol: ecraven: we agree :) 2021-02-04T18:25:31Z mangol: happily, R6RS and R7RS already have good implementations of those ideas 2021-02-04T18:25:38Z ecraven: are there other languages that define their APIs as statically as this? the standard libraries of python or java keep evolving 2021-02-04T18:25:52Z Zipheir: SRFI 13 is essentially an "old version" of SRFI 152. 2021-02-04T18:26:03Z amirouche: I was under the impression that library versioning was impossible or never worked in practice. 2021-02-04T18:26:18Z amirouche: what is the difference between versioning and renaming? 2021-02-04T18:26:29Z Zipheir: Perception. 2021-02-04T18:26:31Z mangol: people don't use R6RS library versions in practice. but they can be made to work. 2021-02-04T18:26:49Z mangol: in R6RS, the library version is the (1 2 3) part in (import (foo bar baz (1 2 3))) 2021-02-04T18:27:10Z amirouche: I mean, what would be the point to specifically add version to libraries, instead of using `(scheme list 1)`, `(scheme list 2)` ... 2021-02-04T18:27:28Z mangol: it doesn't matter that much which way it is done 2021-02-04T18:27:32Z amirouche: (if / when number are accepted as library names) 2021-02-04T18:27:47Z ecraven: amirouche: they are, just not in r6rs 2021-02-04T18:28:07Z ecraven: many r7rs srfis are like (srfi 54321) 2021-02-04T18:28:24Z mangol: if we did a combined R6RS + R7RS, we could fix the little oversights like the fact that R6RS doesn't allow numbers in library names and doesn't have (include ...) 2021-02-04T18:28:43Z amirouche: yes? 2021-02-04T18:29:00Z Zipheir: Combining the R6RS and R7RS semantics would be an interesting challenge. 2021-02-04T18:29:05Z ecraven: mangol: the main question being, would any r6rs implementors follow those "small fixes" 2021-02-04T18:29:11Z mangol: Zipheir: see http://andykeep.com/SchemeWorkshop2015/papers/sfpw1-2015-clinger.pdf 2021-02-04T18:29:12Z Anonymous_ joined #scheme 2021-02-04T18:29:27Z amirouche: Still, there is many subjects in R7RS-large roadmap that should be broadly discussed. 2021-02-04T18:29:45Z Zipheir: mangol: Yeah, I've read that a few times. It's quite handy. 2021-02-04T18:29:45Z mangol: Zipheir: see also in R6RS too 2021-02-04T18:29:56Z mangol: Zipheir: http://www.schemeworkshop.org/2014/papers/Kato2014.pdf 2021-02-04T18:30:27Z amirouche: oh, while I think about it, what is the goal of this converation? 2021-02-04T18:30:28Z Zipheir: But I'm thinking of the formal semantics. R6 completely reworked them, using operational semantics. R7 went back to the R5RS denotational semantics without making any additions, IIRC. 2021-02-04T18:30:36Z Zipheir: amirouche: Good question. 2021-02-04T18:30:41Z ecraven: amirouche: venting :P 2021-02-04T18:30:50Z amirouche: ecraven: :D 2021-02-04T18:30:53Z mangol: amirouche: IMHO one of the main problems with R7RS-large in its current forms, is that people can't seem to agree on a roadmap and timeline 2021-02-04T18:31:13Z Zipheir: At some point, the R7RS exception system needs to be given formal semantics... anyway. 2021-02-04T18:31:54Z mangol: Zipheir: i think that's the kind of thing that RnRS process should concentrate on 2021-02-04T18:32:06Z mangol: while preserving full backward compatibility with R6RS exceptions 2021-02-04T18:32:14Z amirouche: mangol: the problem I think about, is that how do you help schemers gather to discuss say macros, outside the RnRS process? 2021-02-04T18:32:31Z mangol: amirouche: i agree that core stuff like macros should be discussed in the RnRS process 2021-02-04T18:32:57Z mangol: but something like bitvectors, queues, sockets or graphics is not core 2021-02-04T18:32:59Z ecraven: I think everything that can be implemented on top of the core doesn't need to be a part of the standard. 2021-02-04T18:33:07Z amirouche: mangol: I agree. 2021-02-04T18:33:15Z amirouche: Agreed. 2021-02-04T18:33:16Z ecraven: I'd argue that bitvectors might be, if they have custom syntax 2021-02-04T18:33:27Z amirouche: but again custom syntax... ;) 2021-02-04T18:33:46Z ecraven: and sockets I consider central to any language in this day and age 2021-02-04T18:34:11Z mangol: sockets are not a language construct in the way that ports or continuations are 2021-02-04T18:34:14Z amirouche: ecraven: I will send you sockets for next secret santa, i promise ;) 2021-02-04T18:34:27Z amirouche: +1 mangol 2021-02-04T18:34:53Z mangol: if we had infinitely many people, who are infinitely smart, we should do everything in RnRS, including strong AI 2021-02-04T18:34:55Z ecraven: ah, custom ports, another relevant thing 2021-02-04T18:35:16Z mangol: the reason we should aggressively cut things out of RnRS process, is because we have finite people, time, and smarts 2021-02-04T18:35:42Z mangol: the one job that RnRS can do, and nothing else can, is compatibility 2021-02-04T18:36:04Z mangol: currently it's not doing that job 2021-02-04T18:36:13Z mangol: while taking on more and more nice-to-have stuff 2021-02-04T18:36:33Z mangol: like a household that is maxing out their credit card on luxuries while not paying utility bills 2021-02-04T18:37:18Z mangol: if RnRS doesn't handle R5RS+R6RS+R7RS compatibility, nothing else can handle it 2021-02-04T18:37:30Z mangol: if RnRS doesn't handle sockets or queues, we can work something out 2021-02-04T18:37:37Z euandreh joined #scheme 2021-02-04T18:40:52Z Zipheir: The economic metaphor doesn't make any sense. 2021-02-04T18:41:14Z mangol: in our case, we're spending time, not money. 2021-02-04T18:41:18Z mangol: time and morale. 2021-02-04T18:41:21Z Zipheir: It's fundamentally a question of standarization philosophy. There's nothing unusual about incompatible standards. 2021-02-04T18:41:58Z mangol: for the same language? 2021-02-04T18:42:00Z Zipheir: The R6RS and R7RS semantics may be incompatible, but we'll need people who understand both to figure out what to do about it. 2021-02-04T18:42:31Z amirouche: +1 Zipheir 2021-02-04T18:43:41Z mangol: indeed. we have at least 2 papers about R6RS-R7RS compat, and several good people to work on it. if there's a will, there's a way. 2021-02-04T18:43:46Z Zipheir: mangol: Sure. Ever heard of C89 and C99? 2021-02-04T18:43:51Z amirouche: I do not think compatibility between RnRS is an interesting goal. Today, my gold for RnRS would be to have the best abstraction / tooling / procedures / forms etc... for Scheme so that implementations can build upon that in a way that is compatible. 2021-02-04T18:44:29Z amirouche: compatibility between implementations is more important, than compatibility between RnRS. 2021-02-04T18:44:53Z mangol: amirouche: but one half of people would like to have that for R7RS, and the other half for R6RS 2021-02-04T18:45:09Z mangol: i agree that compatibility between implementations is the main thing. but that's what RnRS is supposed to accomplish 2021-02-04T18:45:33Z amirouche: I do not think there is still a big technical split between R7RS and R6RS 2021-02-04T18:45:41Z mangol: Zipheir: isn't C99 a compatible superset of C89? 2021-02-04T18:45:42Z amirouche: maybe [ ] syntax 2021-02-04T18:46:25Z Zipheir: mangol: Sure, but then, R7 is a (mostly) compatible superset of R6. 2021-02-04T18:47:00Z Zipheir: Well, ignoring the formal semantics. 2021-02-04T18:47:28Z mangol: Zipheir: R7RS doesn't have syntax-case, identifier syntax, condition system, custom ports, transcoders, ... 2021-02-04T18:47:58Z Zipheir: I was only talking about the core languages. 2021-02-04T18:48:10Z mangol: if R7RS-large is on track to have those things, in a way that's compatible with R6RS on a surface syntax level and not only as in "similar semantics are described somewhere in the spec" that's good 2021-02-04T18:48:14Z Zipheir: There's definitely a lot of mismatches with the libraries. 2021-02-04T18:48:35Z mangol: those mismatches would be the core competency of RnRS 2021-02-04T18:48:39Z mangol: sorting them out 2021-02-04T18:49:01Z amirouche: but again compatibility is not a good goal, the best thing is the good thing. 2021-02-04T18:49:03Z X-Scale: " mangol: Sure. Ever heard of C89 and C99?" <- that makes me remember an interview to Dennis Ritchie around 2000, who was actively involved in the developmentof C89 from 1983 to 1988. 2021-02-04T18:49:05Z mangol: or should be at any rate. up until R5RS there doesn't seem to have been controversy over that 2021-02-04T18:49:13Z X-Scale: LinuxWorld.com: C99, the recently ratified ANSI/ISO C standard, contains several new features, such as restricted pointers, variadic macros, bool, and new libraries for complex and type-generic arithmetic. Are you satisfied with C99? 2021-02-04T18:49:17Z X-Scale: Dennis Ritchie: I was satisfied with the 1989/1990 ANSI/ISO standard. The new C99 standard is much bulkier, and though the committee has signaled that much of their time was spent in resisting feature-suggestions, there are still plenty of accepted ones to digest. I certainly don't desire additional ones, and the most obvious reaction is that I wish they had resisted more firmly. 2021-02-04T18:49:40Z Zipheir: It's always the same story. 2021-02-04T18:50:02Z amirouche: what story? 2021-02-04T18:50:10Z mangol: X-Scale: thanks for the quotes! 2021-02-04T18:50:24Z Zipheir: The original designers think that revisions add too much, usually. 2021-02-04T18:50:53Z amirouche: anyway, it is not our choice to decide where RnRS will go. 2021-02-04T18:50:56Z mangol: yes. but for the people who come later, the salient fact is that those revisions already exist and are immutable 2021-02-04T18:51:41Z amirouche: it seems to me, R7RS is a better R6RS, it might miss some stuff like syntax-case etc... but it is not off-road. What we can do is create that portable set of tested libraries with yearly specifications. 2021-02-04T18:51:53Z mangol: R7RS-large is on track to receive the same criticism that R6RS received 2021-02-04T18:52:06Z amirouche: not necessarly. 2021-02-04T18:52:07Z mangol: that it adds too many idiosyncratic things that its designers personally like 2021-02-04T18:52:40Z amirouche: again, where outside RnRS can the conversation happen? 2021-02-04T18:52:45Z mangol: R7RS-large is just the return of R6RS. now we have two incompatible standards that please their designers 2021-02-04T18:52:55Z ecraven: but isn't all of R7RS-large optional? it's all libraries that may or may not be implemented? 2021-02-04T18:53:13Z mangol: well, John has gone out of his way to solicit feedback on R7RS-large, which is absolutely wonderful 2021-02-04T18:53:29Z Zipheir: Yes, subsets are definitely allowed, which is a major difference from R6. 2021-02-04T18:53:50Z mangol: i didn't know that R7RS is designed to be subsetted 2021-02-04T18:53:55Z mangol: in a formal sense 2021-02-04T18:54:51Z amirouche needs food. 2021-02-04T18:55:22Z Zipheir: Well, not formally, but jcowan has encouraged the idea several times in my memory. 2021-02-04T18:55:27Z mangol: if all the libraries in R7RS-large are optional, that solves part of the problem. 2021-02-04T18:56:04Z mangol: the other part is that a standard vitally needs 1) backward compatibility and 2) a realistic deadline, or at least convincing momentum toward completion 2021-02-04T18:57:01Z mangol: point 2) implies a convincing scope that makes sense given wishes coming from the community (not from inside the standards committee) and available manpower 2021-02-04T18:57:07Z jcowan: The easiest way for two tribes to unite is for one to slaughter the other (and kill all the males and pregnant females and reduce the remaining females to sexual slavery). 2021-02-04T18:57:28Z Zipheir: o_O 2021-02-04T18:57:49Z jcowan: All the libs in R7RS-small are optional except base, but AFAIK there is no Scheme that claims conformance yet provides only some of them. 2021-02-04T18:58:05Z gwatt: woah there cowan the barbarian 2021-02-04T18:58:13Z Zipheir: lol 2021-02-04T18:58:23Z mangol: lol 2021-02-04T18:58:45Z jcowan: /slaughter/s/and/or 2021-02-04T18:58:47Z Zipheir: mangol: (1) requires adopting the R6RS operational semantics and bringing them into line with R7. 2021-02-04T18:59:53Z mangol: Zipheir: i'm not well versed in the finer points, but compatibility of useful code is good enough. i'm under the impression that R6 is quite strict 2021-02-04T19:00:03Z Zipheir: IMO this would be a Good Thing, but I don't know of anyone who's planning to do it. (I'm going to have to learn a bit more before I volunteer, and I'd probably ask Oleg for help.) 2021-02-04T19:00:50Z mangol: i'm extremely happy if even one person is signing up to try and unite R6RS and R7RS 2021-02-04T19:01:21Z mangol: but ideally we'd get a few of the people who know both stanrdards. someone like Oleg would be awesome to have 2021-02-04T19:01:22Z jcowan: It's my view that the very low upgrade rate to R6 is a result of its strictness. Most R6 systems are either newly created or are associated with members of the R6 editorial committee. 2021-02-04T19:02:01Z mangol: jcowan: now we're talking! so if new RnRS can be compatible with R6RS programs, but be more lax about the semantics as required, we have something good 2021-02-04T19:02:03Z jcowan: The reason Larceny works is that it's a non-strict implementation of R6RS. 2021-02-04T19:02:08Z badkins quit (Remote host closed the connection) 2021-02-04T19:02:54Z mangol: that seems perfectly fine 2021-02-04T19:03:14Z gwatt: jcowan: I think guile also qualifies as that 2021-02-04T19:03:29Z jcowan: Indeed. 2021-02-04T19:03:53Z mangol: maybe even strictness levels can be optional to some degree. i have no idea whether that would work, or be worth the effort. 2021-02-04T19:04:22Z jcowan: Note in particular Clinger's discussion (in the same paper) of portability vs. interoperability 2021-02-04T19:04:30Z mangol: if we want to unite R6RS and R7RS-small, that already requires that lax error handling be a permitted implementation strategy. 2021-02-04T19:04:58Z gwatt: IIRC, guile takes the view that strictly conforming R6RS code will work as expected, but that non-conforming code may not. 2021-02-04T19:05:35Z gwatt: ("may not work as expected" meaning they are free to do whatever they want, not throw the specific condition that R6RS mandates) 2021-02-04T19:06:05Z jcowan: "Portability and interoperability are two different things, and often come into conflict with each other. When programming languages are specified, portability can be increased (and interoperability diminished) by inventing some specific semantics for all corner cases while forbidding extensions to standard syntax and procedures. Interoperability can be increased (and portability diminished) by leaving unimportant corner 2021-02-04T19:06:06Z jcowan: cases unspecified while allowing implementations to generalize syntax and semantics in ways that simplify interoperation with other standards and components." 2021-02-04T19:06:31Z jcowan: Larceny is weaker than Guile in that respect 2021-02-04T19:08:42Z mangol: jcowan: would you agree that combining R6RS + R7RS can lead to a technically reasonable standard as long as there's social agreement to get it done? 2021-02-04T19:09:02Z jcowan: Do you mean R7RS-small? 2021-02-04T19:09:32Z mangol: yes, so far. the reason being that R5RS + R6RS + R7RS-small are the standards that are set in stone, whereas R7RS-large is still open 2021-02-04T19:10:19Z jcowan: In particular Larceny does not always raise the R6RSly correct exception, and sometimes does not raise one at all. 2021-02-04T19:10:27Z mangol: though since scheme implementations have not standardized on syntax-case, it would be very interesting to add things like explicit renaming 2021-02-04T19:10:48Z mangol: as options for a macro system 2021-02-04T19:10:48Z ecraven: I think macro systems are on the list for R7RS-large 2021-02-04T19:10:54Z mangol: ecraven: yes, they are 2021-02-04T19:11:09Z mangol: ecraven: keyword arguments are or were also in serious consideration 2021-02-04T19:11:20Z jcowan: They are. The votes will be for syntax-case and ER separately, so that the standard may end up with either or both or neither. 2021-02-04T19:11:25Z mangol: and some other syntax/macro system things 2021-02-04T19:11:44Z mangol: RnRS is definitely the right vehicle for that kind of thing that is so close to the language core 2021-02-04T19:11:57Z jcowan: https://github.com/johnwcowan/r7rs-work/blob/master/ColorDockets.md 2021-02-04T19:12:53Z jcowan: The reason for adding portable libraries to R7RS-large, and beginning with them, is to build confidence in the process and to provide something that people can use right away even before implementers adopt it. 2021-02-04T19:17:36Z amirouche quit (Ping timeout: 240 seconds) 2021-02-04T19:19:47Z ecraven: why is there a ".0" in +nan.0? 2021-02-04T19:20:08Z jcowan: Makes it look more inexact, I guess. 2021-02-04T19:22:06Z jcowan: The sign is required because nan.0 would be a valid identifier whereas (per R6RS) +nan.0 is not. -nan.0 is also supported, but does not necessarily imply the sign bit is different. 2021-02-04T19:23:09Z mangol: jcowan: while portable libraries are great to have, i worry about putting many of them in RnRS because i believe design should start from the assumption that R(n+1)RS supports everything in RnRS 2021-02-04T19:23:27Z amirouche joined #scheme 2021-02-04T19:27:00Z klovett_ quit (Remote host closed the connection) 2021-02-04T19:28:11Z badkins joined #scheme 2021-02-04T19:28:41Z jcowan: When I was first appointed chair of the R7RS-large WG, the Steering Committee asked me to write a charter, and that was one of the things I provided in it: backward compatibility with R6. However, they immediately shot that down, instructing me not to be bound by R6 but only to make sure that I considered it. 2021-02-04T19:29:00Z mangol: whoa 2021-02-04T19:29:11Z mangol: that's a very strong stance from the steering committee 2021-02-04T19:29:12Z jcowan: The R7 process began, after all, because a bunch of Scheme elders thought that R6 was a Great Big Mistake. 2021-02-04T19:30:20Z Zipheir: And, presumably, the R6 authors consider R7 a Great Big Mistake. 2021-02-04T19:30:24Z mangol: so does that mean we need to sneak R6RS compatibility past them or can we go ahead and do it out in the open? :D i'm a horrible person 2021-02-04T19:30:33Z ecraven: when nan-boxing, does it matter whether I use signalling or quiet nans? 2021-02-04T19:32:17Z mangol: joking aside, did the steering committee consider the option that the R6RS features can be parcelled out into options that don't need to be implemented? 2021-02-04T19:33:32Z mangol: because it's hard to imagine that the community of present and future scheme users wouldn't be greatly helped by a high degree of compatibility in the full-featured scheme implementations 2021-02-04T19:35:13Z Zipheir: I'd rather just have R7RS compatibility layers in the existing non-R7 Schemes. Less work. 2021-02-04T19:35:17Z jcowan: There's actually quite a lot of compat: see the list of changes in the back of R7 2021-02-04T19:35:32Z jcowan: ecraven: I recommend signaling NaNs. 2021-02-04T19:35:42Z mangol: yes, there is. and that makes it all the more appealing to go the extra mile to full compat 2021-02-04T19:36:27Z mangol: the social and information-flow split is probably a bigger issue than the technical split 2021-02-04T19:37:42Z mangol: Zipheir: please take a look at https://github.com/okuoku/yuni which is close to what you want 2021-02-04T19:37:45Z ecraven: jcowan: why? just so I notice if they actually hit the "FPU" (whatever that's called nowadays ;) 2021-02-04T19:38:02Z ecraven: jcowan: did you get around to working on your nan-boxing implementation? 2021-02-04T19:38:09Z mangol: yuni is also a good demonstration that having full compat on the RnRS and Scheme implementation level would make interop easier 2021-02-04T19:39:23Z mario-goulart: The way r6rs was approved always looked a bit iffy to me. A lot of "yes" votes without justification (even this one http://www.r6rs.org/ratification/results.html#X4 ) or weak arguments, and a lot of "no" votes from experienced Scheme implementors with solid arguments. 2021-02-04T19:40:47Z jcowan: R6 SC: Bawden, Steele, Wand. R6 Editors: Clinger [removed himself], Dybvig, Flatt, Sperber, van Straaten. R7 SC: Clinger, Feeley, Hanson, Rees, Shivers. R7-small editors: Shinn, Cowan, Gleckler. You'll notice the lack of overlap. 2021-02-04T19:42:02Z jcowan: That's why I was absolutely determined to do R7 entirely in the open. Anyone who wanted to keep track, could. Some people were scared off by the original flood of messages, and others realized that they weren't going to get anything as radical as they wanted and walked out. 2021-02-04T19:44:07Z mangol: it seems that you made exactly the right call on both counts (open and conservative approach) 2021-02-04T19:45:44Z gwatt: mario-goulart: IIRC the SC wanted justifcations for NO votes, so you're going to see more YES votes with little to no explanation. If every vote required justification you'd probably see more interesting responses. 2021-02-04T19:47:34Z mario-goulart: That's already a sign of impartiality, IMO. 2021-02-04T19:48:11Z mangol: was it surprising or expected that R6RS implementations haven't gone anywhere, and still have many users? 2021-02-04T19:52:39Z Zipheir: "You don't need to explain if you agree with us, only if you disagree." Umm... 2021-02-04T19:52:58Z Zipheir: Sounds like a great way to establish groupthink. 2021-02-04T19:54:32Z klovett joined #scheme 2021-02-04T19:55:43Z phillbush joined #scheme 2021-02-04T19:56:27Z gwatt: I think it makes sense though. Pieces went through individual consideration and discussion. You can look at the srfi site to see some of them. 2021-02-04T19:56:43Z gwatt: Here's the srfi for r6rs' library syntax: https://srfi.schemers.org/srfi-83/srfi-83.html 2021-02-04T19:57:06Z mario-goulart: s/impartiality/partiality/ (dumb mistake) 2021-02-04T19:57:19Z amirouche quit (Ping timeout: 276 seconds) 2021-02-04T19:59:23Z jcowan: mangol: Not surprising to me. What *is* surprising is that there has been so much adoption of R7RS-small. 2021-02-04T20:00:42Z jcowan: The logic of asking for explanations on No votes only is that No voters probably want something to change, where as Yes voters more or less by definition do not. In R7-small we asked for but did not require explanations from every voter. 2021-02-04T20:03:46Z Zipheir: Yeah, that makes sense. 2021-02-04T20:07:52Z jcowan: ecraven: No, but because when what you are doing, like (fxsqrt -1), wants to return a NaN, it will return a quiet NaN in practice. So using only signaling NaNs, of which there are more than enough, guarantees that there is no problem even on a processor that returns different NaNs for different fails. 2021-02-04T20:12:28Z jcowan: When implementing a Scheme you want to favor pointers rather than doubles, so a pointer has high bits 0 and a double doesn't, but you have to add or subtract a constant to convert between a machine double and an immediate double. 2021-02-04T20:14:00Z jcowan: "Pointer" of course includes fixnums, chars, true/false/eof/undef, and (if you want them) 32-bit immediate floats on 64-bit systems. 2021-02-04T20:14:03Z amirouche joined #scheme 2021-02-04T20:15:11Z jcowan: See https://wingolog.org/archives/2011/05/18/value-representation-in-javascript-implementations up through comment #9 2021-02-04T20:15:56Z gravicappa quit (Ping timeout: 256 seconds) 2021-02-04T20:18:32Z amirouche quit (Client Quit) 2021-02-04T20:19:15Z klovett_ joined #scheme 2021-02-04T20:22:10Z Riastradh: ecraven: (flo:nan-payload +nan.123) 2021-02-04T20:22:10Z Riastradh: ;Value: 123 2021-02-04T20:22:45Z klovett quit (Ping timeout: 240 seconds) 2021-02-04T20:23:36Z ecraven: nice! thanks 2021-02-04T20:24:00Z ecraven: what kinds of NaNs does normal floating-point usage produce? 2021-02-04T20:26:52Z ecraven: 32 bit immediate floats would be useful for opengl code, for example 2021-02-04T20:27:36Z ecraven: Riastradh: weren't you thinking about trying something with nan-boxing for MIT/GNU Scheme? 2021-02-04T20:27:44Z ecraven: (a year or two ago, I think?) 2021-02-04T20:31:58Z jobol quit (Quit: Leaving) 2021-02-04T20:34:35Z cubik quit (Quit: Leaving.) 2021-02-04T20:35:02Z jcowan: ecraven: Two cases: "there is no such real number", as with (sqrt -1.0), and "any real number is possible", as in (/ 0.0 0.0) 2021-02-04T20:35:07Z jcowan: s/sqrt/fxsqrt 2021-02-04T20:35:37Z ecraven: but which exact NaN payload will be generated? or is that undefined? 2021-02-04T20:38:13Z ngz joined #scheme 2021-02-04T20:52:26Z mangol: jcowan: to get clear on the most important point, what do you think are the prospects of getting optional R6RS compatibility into R7RS-large so that most practical code using things like (library ...) and (syntax-case) runs unmodified? 2021-02-04T20:52:44Z mangol: and the general principle of factoring the language into optional libraries 2021-02-04T20:52:45Z Anonymous_ quit (Ping timeout: 264 seconds) 2021-02-04T20:53:42Z jcowan: It's already factored into optional libraries, and there is no reason not to add the r6rs libs *other than base*. 2021-02-04T20:54:01Z mangol: does the steering committee think it's heretical to add R6RS base? 2021-02-04T20:54:30Z jcowan: No, it's just that you can't have two libs without those -r6/-r7 switches. 2021-02-04T20:54:35Z jcowan: s/libs/base libs 2021-02-04T20:54:49Z mangol: what's the incompatibility? 2021-02-04T20:55:07Z jcowan: You'd have to go through item by item to find out. 2021-02-04T20:55:40Z mangol: the implementation can't detect "#!r6rs" or (import (rnrs (6))) and adjust accordingly? 2021-02-04T20:55:40Z gwatt: in library or program forms, wouldn't you have to explicitly import which libraries you want? 2021-02-04T20:56:20Z jcowan: Oh sure. But then there is no need to have a unified *standard*, it suffices to have implementations like Larceny or Sagittarius that provide both. 2021-02-04T20:56:21Z gwatt: Also, since the library definition forms are different you could key off (library ...) vs. (define-library ...) 2021-02-04T20:56:45Z mangol: gwatt: yes. and even library source files can start with #!r6rs 2021-02-04T20:57:38Z mangol: i can't remember whether #!r6rs is supposed to affect the read syntax only. but again, no need for a new RnRS to pedantically copy every detail of R6RS semantics 2021-02-04T20:57:57Z jcowan: If not, then the main objective of R6RS, which is portability, is shot. 2021-02-04T20:58:04Z jcowan: (Arguably it's shot anyhow.) 2021-02-04T20:58:23Z jcowan: These things are what Larceny already does. 2021-02-04T20:58:23Z mangol: +1 on "it's shot anyhow" 2021-02-04T20:58:33Z Blukunfando quit (Remote host closed the connection) 2021-02-04T20:58:58Z klovett joined #scheme 2021-02-04T20:59:16Z mangol: and people who really care about this flavor of portability can still run their code on existing R6RS implementations that take it the most seriously 2021-02-04T20:59:23Z jcowan: CL implementations have had a very long period of coevolutiom, plus a bigger standard to start with. 2021-02-04T20:59:59Z jcowan: Then what do you think the actual benefit of a united standard is, given that most implementations won't support it? It seems like a solution in search of a problem. 2021-02-04T21:00:32Z mangol: in what sense do you mean they won't support it? 2021-02-04T21:02:27Z jcowan: Chibi helped launch R7 because it was a day-0 implementation and it was small enough that it wasn't hard to make an R7, hence we have lots. 2021-02-04T21:02:52Z klovett_ quit (Ping timeout: 258 seconds) 2021-02-04T21:03:23Z mmmattyx quit (Quit: Connection closed for inactivity) 2021-02-04T21:04:04Z jcowan: There was a similar but smaller explosion of R6 impls, but the only ones with substantial mindshare now are the pre-existing Racket, Chez, and Guile. Larceny is also pre-existing. 2021-02-04T21:05:10Z jcowan: Iron and Loko are potentially long-term niche players 2021-02-04T21:06:42Z skapata quit (Quit: Leaving) 2021-02-04T21:08:53Z mangol: can't RnRS fill in the gaps so people can write source files in R6RS or R7RS style, and pass them to the same Scheme implementations without worrying about command line flags and other stuff 2021-02-04T21:09:55Z gwatt: jcowan: schism is also potentially r6rs: https://github.com/google/schism 2021-02-04T21:09:56Z mangol: i don't understand where the hard parts are (other than strict interpretation of R6RS semantics, which all potential R6RS/R7RS uniters seem to agree is a requirement that can be relaxed) 2021-02-04T21:11:02Z jcowan: Conditions are the most obviously problematic thing, because R6 conditions are tightly integrated into R6 records, which is not the case for non-R6 conditions. 2021-02-04T21:11:34Z mangol: has someone investigated that problem in detail? 2021-02-04T21:11:56Z gwatt: mangol: syntax-case is also controversial 2021-02-04T21:12:16Z mangol: gwatt: it is indeed, but it seems to be pretty well isolated from the rest of the language 2021-02-04T21:12:38Z jcowan: I know that Guile once had two separate exception systems, native and R6. Now both have the same underpinnings so that you can throw with R6 and catch with native or vice versa, but there are still two separate condition hierarchies. 2021-02-04T21:12:44Z mangol: and lots of practical R6RS libraries don't depend on syntax-case 2021-02-04T21:13:08Z mangol: so you still could run all that R6 code on combined implementations that omit syntax-case 2021-02-04T21:14:02Z jcowan: The R6-specific I/O system is also an issue. 2021-02-04T21:14:33Z jcowan: it encapsulates the R5 system but is not well integrated with it. I'm trying to avoid that problem in R7. 2021-02-04T21:15:30Z jcowan: I would say there are no non-R6 condition systems that are exapted to have R6 running on top of them. 2021-02-04T21:15:30Z mangol: I/O system = text and binary ports, custom ports, transcoders? 2021-02-04T21:15:59Z jcowan: Yes. I have as much as possible abstracted that into SRFIs (text vs. binary is already in r7) 2021-02-04T21:16:26Z jcowan: but whether it will be voted into r7 is an open question. 2021-02-04T21:17:28Z ecraven: not sure about transcoders, but custom ports are definitely something I'd want 2021-02-04T21:19:13Z mangol: does the interop problem with R6/R7 conditions boil down to R7 being able to throw any object, whereas R6 can only catch condition objects? 2021-02-04T21:23:39Z mangol: nope, R6RS allows non-condition objects to be raised 2021-02-04T21:31:46Z mangol: are these the I/O system SRFIs: SRFI 181 (Custom ports), SRFI 186 (Transcoders and transcoded ports), SRFI 192 (Port Positioning) 2021-02-04T21:32:36Z jcowan: Yes. 2021-02-04T21:33:25Z jcowan: No, the issues are that all standard conditions are records with a specified single-inheritance hierarchy, which is not the case in other systems, and even if it is, the hierarchy is often different. 2021-02-04T21:33:40Z jcowan: And that specified fields are available. 2021-02-04T21:38:03Z jcowan: Actually the second point is not much of a problem. 2021-02-04T21:39:37Z mangol: (looking at r6rs-lib.pdf page 28) e.g. &violation is a subtype of &serious, which is a subtype of &condition 2021-02-04T21:41:14Z mangol: the way to test for a &violation object is to call (violation? foo) 2021-02-04T21:41:53Z mangol: but section 6.4 gives record inspection procedures which presumably should also tell that foo is a &violation and also a &serious &condition 2021-02-04T21:43:27Z Riastradh: ecraven: In theory the hardware can use the bits of the NaN for retrospective diagnostic information; in practice, I don't know any offhand that do, so the distinction is mostly quiet vs signalling. 2021-02-04T21:43:55Z mangol: if foo is some kind of R7RS-implementation-defined object that satisfies `violation?` but doesn't show the right stuff to record inspection, i can see how it's a R6RS-R7RS compatibility problem in esoteric cases 2021-02-04T21:44:09Z Riastradh: ecraven: I thought about doing nanboxing for MIT Scheme but I didn't do it (although I did rework the amd64 ABI to be less bad). 2021-02-04T21:44:39Z Riastradh: I think the effort would be better spent on SIMD operations. 2021-02-04T21:45:41Z Riastradh: (also apparently effort is needed to avoid W|X in the MIT Scheme heap -- shoulda been done a long time ago but never had the round tuits) 2021-02-04T21:52:36Z skapata joined #scheme 2021-02-04T21:55:21Z jcowan: Or to divide the heap into W or X, I suppose 2021-02-04T21:57:44Z badkins quit (Remote host closed the connection) 2021-02-04T21:58:01Z phillbush quit (Quit: Leaving) 2021-02-04T22:01:02Z badkins joined #scheme 2021-02-04T22:05:22Z seepel quit (Remote host closed the connection) 2021-02-04T22:05:44Z badkins quit (Ping timeout: 258 seconds) 2021-02-04T22:05:49Z seepel joined #scheme 2021-02-04T22:13:11Z mangol: jcowan: do you suppose we could try to work out the compatibility problems by writing SRFIs about one part of it at a time, as you've done for ports? 2021-02-04T22:13:32Z mangol: maybe with more than one SRFI for one part in some cases to compare alternative approaches 2021-02-04T22:14:19Z mangol: that would be a low friction way to start since the SRFI process is already set up for that kind of thing 2021-02-04T22:15:27Z jcowan: Sure, why not. 2021-02-04T22:15:28Z mangol: if some SRFI seems promising at the inital draft phase but turns out to have irredeemable problems, it can be withdrawn, as SRFI 177 was. not much of a loss. 2021-02-04T22:15:46Z mangol: i'm very glad that we spent the time on 177 even though it was withdrawn. learned a lot. 2021-02-04T22:16:13Z jcowan: In some cases, like hashtables, SRFI 125 gives you everything modulo the names, which are trivial to fix 2021-02-04T22:16:44Z mangol: yeah if it's only about names that can always be fixed by exporting two sets of names. not a big deal if compatibility is gaied. 2021-02-04T22:16:47Z mangol: gained 2021-02-04T22:17:08Z mangol: semantic incompatibility is the big deal 2021-02-04T22:17:18Z mangol: where that is tricky to fix 2021-02-04T22:21:52Z Riastradh: jcowan: Yes, obviously that's what we need to do; but, devils, details, &c. 2021-02-04T22:23:03Z jcowan: There's also the irritating issue of bytevector-copy!, where I think (and Larceny agrees) the R7RS order is the Right Thing. There are some other cases like `error` where renaming isn't enough, but it's possible to have a single procedure that provides both calling conventions. 2021-02-04T22:23:58Z badkins joined #scheme 2021-02-04T22:28:32Z badkins quit (Ping timeout: 256 seconds) 2021-02-04T22:57:24Z elliott_ quit (Read error: Connection reset by peer) 2021-02-04T22:57:57Z elliott_ joined #scheme 2021-02-04T23:03:11Z jcowan: mangol: I recommending working through http://larcenists.org/Documentation/Documentation0.99/user-manual.pdf pp. 5-31, which tells you exactly how Larceny integrates R6 and R7-small. 2021-02-04T23:12:22Z civodul quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-04T23:30:18Z duncanm: jcowan: do you know if Will Clinger responds to e-mails? I wrote him awhile back but didn't hear back 2021-02-04T23:30:35Z duncanm: I was hoping to get a copy of MacScheme + Toolsmith 2021-02-04T23:30:39Z jcowan: He has retired, so responses may be slow 2021-02-04T23:38:55Z jcowan: mangol: There are also some useful Larceny wiki pages: https://github.com/larcenists/larceny/wiki/ConformanceModes, DeprecatedR6RSSyntaxAndProcedures, DeprecatedR7RSSyntaxAndProcedures, R7RSconversion, RecordsConversion. 2021-02-04T23:48:38Z ngz quit (Ping timeout: 264 seconds) 2021-02-04T23:50:00Z aeth_ joined #scheme 2021-02-04T23:50:49Z rgherdt quit (Ping timeout: 272 seconds) 2021-02-04T23:50:52Z aeth quit (Disconnected by services) 2021-02-04T23:50:55Z aeth_ is now known as aeth 2021-02-05T00:03:33Z badkins joined #scheme 2021-02-05T00:14:15Z euandreh quit (Ping timeout: 272 seconds) 2021-02-05T00:25:07Z badkins quit (Remote host closed the connection) 2021-02-05T00:26:51Z badkins joined #scheme 2021-02-05T00:31:06Z badkins quit (Ping timeout: 246 seconds) 2021-02-05T00:36:59Z c7d9_ joined #scheme 2021-02-05T00:40:17Z c7d9 quit (Ping timeout: 265 seconds) 2021-02-05T00:41:22Z badkins joined #scheme 2021-02-05T01:03:41Z mdhughes: Yikes, y'all had a few days of conversation while I was out. 2021-02-05T01:04:59Z mdhughes: My main concerns with R7RS are: 1) The "spec" is too permissive, so in practice it introduces random bugs when you try to port. R6RS I can pretty much guarantee does what the damn spec says. 2021-02-05T01:05:38Z mdhughes: 2) Random changes in terminology. library, hashtable, etc. didn't need to be changed. That's just producers pissing in the soup so it tastes familiar. 2021-02-05T01:06:54Z mdhughes: 3) R7 doesn't define useful macro systems. We have useful macro systems. Copy those over, be done with it. 2021-02-05T01:08:03Z mdhughes: 4) Enormous amount of wasted duplicate effort instead of making new, useful libraries. Someday we'll get a POSIX system? We could have that NOW. 2021-02-05T01:16:55Z euandreh joined #scheme 2021-02-05T01:57:49Z notzmv joined #scheme 2021-02-05T01:59:28Z phillbush joined #scheme 2021-02-05T02:00:24Z jcowan: Those plus the user manual plus the R7RS Considered paper pretty much should serve as guidelines for what would be needed to make R6+R7RS 2021-02-05T02:02:28Z jcowan: Portability between implementations was the main concern of the R6RS editors, but in practice that now means you can write code that ports to Chez, Racket, and Guile (although code written *for* Chez, Racket, or Guile will not port to the other two) 2021-02-05T02:03:38Z jcowan: 2) A lot of the differences between R6 and R7 are reverting to what existing R5 implementations did that were randomly changed by R6. 2021-02-05T02:04:11Z jcowan: 3) R7 didn't do low-level macros because there are too many incompatible low-level macro systems. (Syntax-rules is not useless.) 2021-02-05T02:04:20Z jcowan: 4) Politics is the art of the possible. 2021-02-05T02:04:21Z jcowan: mdhughes: ^^ 2021-02-05T02:09:00Z alelos- quit (Ping timeout: 272 seconds) 2021-02-05T02:17:22Z alelos joined #scheme 2021-02-05T02:41:36Z aeth: 0) Nobody will need portable code ever again when they can just run it in Airship Scheme when Airship Scheme is ready. 2021-02-05T02:41:39Z aeth: :-p 2021-02-05T02:48:13Z brainfunnel quit (Quit: thanks, bye!) 2021-02-05T02:48:18Z elflng quit (Read error: No route to host) 2021-02-05T02:53:51Z elflng joined #scheme 2021-02-05T02:54:41Z badkins quit (Remote host closed the connection) 2021-02-05T02:59:59Z badkins joined #scheme 2021-02-05T03:01:03Z badkins quit (Remote host closed the connection) 2021-02-05T03:01:12Z badkins joined #scheme 2021-02-05T03:01:36Z aquijoule__ joined #scheme 2021-02-05T03:02:04Z badkins quit (Remote host closed the connection) 2021-02-05T03:02:50Z badkins joined #scheme 2021-02-05T03:02:53Z mdhughes: "code that only ports to" three of the highest-quality impls on the most platforms. 2021-02-05T03:03:08Z mdhughes: Oh, what have the Romans ever given us? 2021-02-05T03:04:19Z aquijoule_ quit (Ping timeout: 265 seconds) 2021-02-05T03:07:02Z marusich joined #scheme 2021-02-05T03:08:28Z seepel quit (Ping timeout: 256 seconds) 2021-02-05T03:19:25Z Anonymous_ joined #scheme 2021-02-05T03:26:09Z mirrorbird quit (Ping timeout: 272 seconds) 2021-02-05T03:30:21Z klovett quit (Remote host closed the connection) 2021-02-05T03:30:58Z klovett joined #scheme 2021-02-05T03:31:56Z marusich quit (Ping timeout: 240 seconds) 2021-02-05T03:33:33Z Zipheir: With an R7 compatibility layer for those three we'd get a lot more portability. 2021-02-05T03:34:02Z Zipheir: Guile and Racket already have some R7 support; probably not Chez, I'm guessing. 2021-02-05T03:34:58Z Zipheir: Since Chez and Gambit are reputedly the fast ones, R7 layers for those would be a worthwhile project. 2021-02-05T03:38:18Z Zipheir: ("the fast ones" among all Schemes, not just R6 Schemes. My thoughts wandered on.) 2021-02-05T03:40:15Z aeth: the fast ones? 2021-02-05T03:40:43Z aeth: maybe, but there's only one benchmark set afaik 2021-02-05T03:49:30Z Zipheir: Given that Chez is being used as a backend for Idris and, now, Racket, it seems some people think it's fast. 2021-02-05T03:49:31Z rudybot joined #scheme 2021-02-05T03:57:59Z klovett quit (Remote host closed the connection) 2021-02-05T03:58:17Z klovett joined #scheme 2021-02-05T03:58:23Z marusich joined #scheme 2021-02-05T04:07:36Z raingloom quit (Ping timeout: 240 seconds) 2021-02-05T04:11:15Z notzmv quit (Remote host closed the connection) 2021-02-05T04:13:16Z phillbush quit (Quit: Leaving) 2021-02-05T04:23:11Z jcowan: "Three things: our language, our law, and our will!" 2021-02-05T04:24:37Z mdhughes: https://www.youtube.com/watch?v=Qc7HmhrgTuQ 2021-02-05T04:27:00Z gravicappa joined #scheme 2021-02-05T04:33:40Z acarrico quit (Ping timeout: 258 seconds) 2021-02-05T04:38:27Z phillbush joined #scheme 2021-02-05T04:47:50Z dieggsy: let's rewrite chicken over gambit 2021-02-05T04:47:57Z dieggsy: (i'm joking, that's a joke.) 2021-02-05T04:54:57Z marusich quit (Ping timeout: 256 seconds) 2021-02-05T04:55:59Z mdhughes: No, no, rewrite Chibi over Gambit, because Chibi's preposterously slow. 2021-02-05T04:56:06Z badkins quit (Remote host closed the connection) 2021-02-05T04:56:43Z badkins joined #scheme 2021-02-05T04:57:00Z sp1ff` joined #scheme 2021-02-05T04:58:15Z notzmv joined #scheme 2021-02-05T04:58:30Z emacsomancer quit (Ping timeout: 246 seconds) 2021-02-05T04:58:55Z ByronJohnson quit (Ping timeout: 256 seconds) 2021-02-05T04:58:58Z skapata quit (Remote host closed the connection) 2021-02-05T04:59:10Z ByronJohnson joined #scheme 2021-02-05T04:59:37Z marusich joined #scheme 2021-02-05T05:00:10Z dieggsy: mdhughes: lol, but chibi is aiming for something different than speed right? i've not really used it at all 2021-02-05T05:00:15Z sp1ff quit (Ping timeout: 246 seconds) 2021-02-05T05:01:22Z mdhughes: I get the impression from jcowan's use of it that it's a spec flagship. But if so, it really needs someone competent to look at the internals and make it usable. 2021-02-05T05:01:42Z jcowan: Usable for what exactly? 2021-02-05T05:01:51Z mdhughes: As a Scheme. For programming. 2021-02-05T05:02:01Z badkins quit (Ping timeout: 276 seconds) 2021-02-05T05:02:22Z mdhughes: That is, I dunno if everyone's aware, the point of most programming languages. To solve problems. 2021-02-05T05:03:01Z Zipheir: Does chibi not ... compute? 2021-02-05T05:03:25Z mdhughes: Obviously there's joke languages, and teaching languages that only exist as transforms of some other lang, but generally: If I write a program, will I get results before the expansion of the Sun makes it irrelevant? 2021-02-05T05:04:44Z Zipheir: It depends entirely on the program, in any language. That's far too general. 2021-02-05T05:05:26Z terpri quit (Ping timeout: 264 seconds) 2021-02-05T05:06:21Z mdhughes: On https://ecraven.github.io/r7rs-benchmarks/ Chibi's middle of the slow Schemes 2021-02-05T05:06:34Z marusich quit (Ping timeout: 276 seconds) 2021-02-05T05:07:16Z dieggsy: it also depends on the use case no? it may have other desirable features? again, i don't know chibi 2021-02-05T05:07:53Z mdhughes: Other than standards, not really. It eats memory like popcorn. 2021-02-05T05:08:20Z emacsomancer joined #scheme 2021-02-05T05:09:02Z dieggsy: i think a lot of chicken's code is inspired by or taken from chibi like irregex 2021-02-05T05:09:03Z mdhughes: Like, I have and will again use tinyscheme as an embedded scripting language, because while it's slow (maybe not as slow as Chibi? Maybe.), it uses a tiny, fixed amount of RAM which is useful. 2021-02-05T05:09:16Z dieggsy: er, not a lot, a few key packages/modules here and there 2021-02-05T05:09:46Z dieggsy: so it seems there's at least useful stuff implemented in the language? 2021-02-05T05:09:50Z mdhughes: Then it's a prime candidate then for rewriting the back end to be usable. 2021-02-05T05:11:20Z dieggsy: wow: "TinyScheme was used as the core of Direct Revenue's adware, making it the world's most widely distributed Scheme runtime" lol 2021-02-05T05:11:35Z emacsomancer quit (Excess Flood) 2021-02-05T05:12:03Z mdhughes: Yeah, quite annoying. And I don't like GIMP much either, but at the time it was a great scripted images solution. 2021-02-05T05:12:55Z Zipheir: IIUC chibi's main goal is Lua-style embedding. 2021-02-05T05:13:15Z Zipheir: And space efficiency, apparently. 2021-02-05T05:13:39Z phillbush quit (Quit: Leaving) 2021-02-05T05:15:59Z emacsomancer joined #scheme 2021-02-05T05:16:15Z Zipheir: GIMP's TinyScheme scripting is still very useful, although the embedding is awful and they're slowly moving to Python-only, I think. 2021-02-05T05:19:53Z Garbanzo joined #scheme 2021-02-05T05:29:19Z terpri joined #scheme 2021-02-05T05:52:20Z sm2n quit (Quit: Leaving) 2021-02-05T05:54:25Z sm2n joined #scheme 2021-02-05T06:11:18Z gravicappa quit (Ping timeout: 246 seconds) 2021-02-05T06:18:01Z codingquark_ is now known as codingquark 2021-02-05T06:20:26Z euandreh quit (Ping timeout: 264 seconds) 2021-02-05T06:27:24Z cubik joined #scheme 2021-02-05T06:34:35Z marusich joined #scheme 2021-02-05T06:49:52Z marusich quit (Quit: Leaving) 2021-02-05T06:58:21Z badkins joined #scheme 2021-02-05T07:02:25Z badkins quit (Ping timeout: 240 seconds) 2021-02-05T07:26:28Z cubik quit (Quit: Leaving.) 2021-02-05T07:27:44Z hendursa1 quit (Remote host closed the connection) 2021-02-05T07:28:54Z hendursa1 joined #scheme 2021-02-05T07:29:35Z jobol joined #scheme 2021-02-05T07:32:29Z mangol: jcowan: thank you very much for the links! i'll peruse them 2021-02-05T07:33:13Z mangol: the above discussion shows why each RnRS should be backward-compatible with all the previous ones that people are still using, 2021-02-05T07:33:31Z mangol: and why RnRS should ship all the popular macro systems as options 2021-02-05T07:34:02Z mangol: because we can never get people to agree on which RnRS or macro system should win 2021-02-05T07:34:04Z ecraven: I know I'm partly responsible for the benchmarks, but not everything needs to be fast.. sometimes, it's at least as important to have other features... 2021-02-05T07:34:14Z Garbanzo quit (Ping timeout: 264 seconds) 2021-02-05T07:34:51Z ecraven: unfortunately, I haven't taken the time to do an analysis of those "other features" for each Scheme 2021-02-05T07:39:12Z mangol: yeah. one of scheme's main strengths is the variety of implementations. there's one for almost any use case you can think of. 2021-02-05T07:39:39Z ecraven: for example, it may be nice that chez is one of the fastest, but it does not (currently) run on aarch64 natively... 2021-02-05T07:40:03Z ecraven: chibi may be slower than guile, but guile definitely is several orders of magnitude *larger* 2021-02-05T07:40:49Z ecraven: last time I tested it, chibi was about half as fast as lua for some simple graphics code, mostly calling out to C, so that might be fast enough for integration in a game engine, for example 2021-02-05T07:41:51Z mangol: just so. but pointing out subtle distinctions like "sometimes portable or easy-to-embed is more important than being fastest" is not conducive to tribalizing on an IRC channel :p 2021-02-05T07:42:11Z ecraven: I'm not saying *more important*, just saying there are *other* measures but speed 2021-02-05T07:42:31Z ecraven: unfortunately I only have the benchmarks page to point to at the moment, but I've been planning to measure *other* things for a long time 2021-02-05T07:42:56Z ecraven: for example, maximum memory usage for the benchmark runs should really be there. startup time, compile time, things like that 2021-02-05T07:43:02Z mangol: good point 2021-02-05T07:43:14Z ecraven: stalin's *code* may be fast, but the time waiting for it to compile sure seems longest of all the implementations 2021-02-05T07:43:44Z ecraven: and then, after all that, there's a *huge* difference in the available REPLs and support for interactive development 2021-02-05T07:43:53Z ecraven: for example, chez 2021-02-05T07:44:09Z ecraven: "compiles away" everything not exported from a library, so you cannot even introspect those procedures and values 2021-02-05T07:44:30Z ecraven: MIT/GNU gives you way more access and possibilities to work with code. 2021-02-05T07:44:37Z mangol: precisely. programming language advocates seem to no longer grasp of the concept of "fast enough for the job" 2021-02-05T07:44:59Z mangol: or "enough features for the job" 2021-02-05T07:45:17Z ecraven: thus my wish for the possibility to *develop* on a Scheme that supports debugging and developping, and then *running* your code on some other (compatible!) Scheme that optimises more 2021-02-05T07:46:01Z mangol: that's what RnRS ideally accomplishes :) 2021-02-05T07:46:05Z ecraven: of course it would be nice to have the fastest and the most developer-friendly Scheme implementation be the same one, but I've come to doubt that is possible (unless one implementation wants to support two different "sub-implementations") 2021-02-05T07:46:09Z ecraven: ideally ;) 2021-02-05T07:47:26Z mangol: the reason RnRS doesn't entirely accomplish (the core language part of) that job, seems to be the same reason that leads to implementation wars (mostly among people who aren't core developers of these implementations, interestingly; the devs are quite chill and amicable nowadays) 2021-02-05T07:48:41Z mangol: namely. a schemer really likes his favorite implementations or RnRS edition, and when someone points out some advantage of another one, they go "i once looked at that thing and it obviously sucked and i don't understand why anyone would want it over my choice that is obviously superior in every way, which i can prove with math" 2021-02-05T07:50:58Z mangol: then the advocate of another RnRS or implementation goes "no, _his_ choice sucks, and his math is wrong!" 2021-02-05T07:51:18Z mangol: that goes on for a while, then everyone gets tired of the discussion and no-one writes any code or specs :D 2021-02-05T07:53:42Z titanbiscuit quit (Ping timeout: 246 seconds) 2021-02-05T07:56:28Z retropikzel joined #scheme 2021-02-05T07:58:05Z titanbiscuit joined #scheme 2021-02-05T07:58:49Z cubik joined #scheme 2021-02-05T08:01:45Z imode quit (Ping timeout: 240 seconds) 2021-02-05T08:03:58Z civodul joined #scheme 2021-02-05T08:06:55Z Major_Biscuit joined #scheme 2021-02-05T08:13:10Z mangol: Zipheir: Racket is based on Chez mainly for maintainability reasons. Chez is very fast too, but not as much faster than the old Racket as you might think. 2021-02-05T08:14:07Z mangol: Zipheir: the compatibility shims you suggest so R7RS implementations can load R6RS code (or vice versa) are a good idea, but would really benefit from tighter integration between R6RS and R7RS styles in the spec itself 2021-02-05T08:21:36Z ex_nihilo joined #scheme 2021-02-05T08:23:16Z rgherdt joined #scheme 2021-02-05T08:23:17Z mdhughes: Chez doesn't "compile away" code that's used by anything, but obviously it doesn't let you break library encapsulation, because that would be terrible! 2021-02-05T08:28:20Z euandreh joined #scheme 2021-02-05T08:30:00Z titanbiscuit quit (K-Lined) 2021-02-05T08:41:24Z ecraven: mdhughes: have you ever used the repl for CL development? you can do magical things 2021-02-05T08:42:40Z mdhughes: I don't want to be digging in a library's guts unless I'm writing it. magic screwing around with stuff I don't need to is less fun than writing my code. 2021-02-05T08:51:39Z mirrorbird joined #scheme 2021-02-05T08:54:54Z ecraven: mdhughes: that's not what I'm suggesting. I'm just saying that sometimes it can be very useful if your implementation allows you to do that kind of thing. and most of the time I'm developing *some* library.. 2021-02-05T08:55:41Z mdhughes: If I need access to internals in dev, I'll just export those, and remove the exports later. 2021-02-05T08:56:40Z ecraven: how is that easier than just being able to directly "enter" the library and do stuff there? 2021-02-05T08:56:50Z ecraven: I'm not saying *every* implementation should support this, just that this is something valuable to development 2021-02-05T08:58:59Z badkins joined #scheme 2021-02-05T08:59:41Z ecraven: also, "just export" means you have to restart the entire program, and you may need to "just export" several levels deep 2021-02-05T09:00:55Z mdhughes: Sure, but this is Chez, where restarts are almost instant, not CHICKEN where I can go get a cup of coffee, bathroom break, possibly a nap, and it'll be done compiling. Only trouble is if I've written a lot of REPL state, I have to pull it out of chezhistory first. 2021-02-05T09:02:34Z mdhughes: The other thing is, you can keep your library outer and inner in 2 files, and then (load "lib-inner.ss") 2021-02-05T09:02:58Z ecraven: and again, this does only work for libraries you directly use, not indirectly 2021-02-05T09:02:59Z mdhughes: I don't generally do that, because fuck .h files, but it works if you're in there all the time. 2021-02-05T09:03:16Z badkins quit (Ping timeout: 240 seconds) 2021-02-05T09:04:00Z mdhughes: Anyway, that's an "angels dancing on pinheads" level problem to me. The Chez REPL having a real editor instead of readline-clone like almost everyone else, is the big win. 2021-02-05T09:07:19Z ecraven: hehe, now that's something I totally don't care about, as I use slime/swank to interact with it. that's better than any other repl I know 2021-02-05T09:07:52Z mangol: what is the point of these "one true way" proclamations? 2021-02-05T09:08:19Z hendursaga joined #scheme 2021-02-05T09:08:55Z ecraven: did 2021-02-05T09:09:01Z ecraven: did I proclaim "one true way"? 2021-02-05T09:10:06Z mangol: ecraven: no, mdhughes did. you struggled valiantly to convince him that the world isn't black-and-white, but to no avail :) 2021-02-05T09:10:32Z mdhughes: When did I say it was a one true way? 2021-02-05T09:10:33Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-05T09:11:02Z mdhughes: Just that I have no use for hacking on library internals. 2021-02-05T09:11:03Z mangol: maybe it just sounds like that. sorry if i misinterpreted your tone. 2021-02-05T09:11:11Z mangol: well, other people have a use for it 2021-02-05T09:11:42Z mdhughes: Maybe. And they have less strict impls they can do that on. 2021-02-05T09:12:25Z jeko joined #scheme 2021-02-05T09:12:29Z mdhughes: ecraven wants the world to be emacs. Which I would never. 2021-02-05T09:12:56Z mdhughes: Do you even know which editor I use? 2021-02-05T09:13:26Z siraben: lemme guess, ed :P 2021-02-05T09:13:47Z siraben is a big fan of Emacs 2021-02-05T09:14:13Z mdhughes: Well, sometimes. But that's more a fediverse "real name" joke. 2021-02-05T09:20:06Z ecraven: to be fair, I also like edwin or the various CL emacs clones, it's just that Emacs is the one with the most users and most libraries 2021-02-05T09:21:44Z mangol: there's an Emacs Lisp port to Edwin, but it's probably from the nineties. not sure useful it is for running new elisp packages. 2021-02-05T09:22:08Z mangol: https://www.emacswiki.org/emacs/EdWin 2021-02-05T09:22:30Z ecraven: my main gripe with edwin is lacking colour support. I can live fine with only one font, but black and white only, that's giving me a hard time 2021-02-05T09:22:59Z ecraven: I did write a patch for colors once, but it was mostly a hack, and it wouldn't help much without pervasive support in all the rest of edwin 2021-02-05T09:28:47Z mangol: MIT Scheme is still actively developed so they may be amenable to adding color support 2021-02-05T09:30:43Z mangol: Kawa also has JEmacs, can't remember whether it's in the default Kawa build or not. much of it is written in Java i think 2021-02-05T09:41:10Z mdhughes: "We got both kinds of editors in this bar, emacs and other emacs!" 2021-02-05T09:43:37Z mangol: :D 2021-02-05T09:44:04Z mangol: it's not my intent to diss non-emacs editors, and hopefully not ecraven's either. did he say something to that effect? 2021-02-05T09:44:33Z mangol: are backend protocols like swank inextricably tied to emacs? 2021-02-05T09:44:45Z ecraven: no, there is a slime for vi 2021-02-05T09:44:48Z ecraven: well, vim 2021-02-05T09:45:04Z ecraven: however, swank is explicitly a protocol for CL, so it doesn't fit Scheme perfectly 2021-02-05T09:45:21Z ecraven: however, replicating all the frontend SLIME code (which geiser is valiantly working on) is a *lot* of work 2021-02-05T09:45:57Z ecraven: ideally, we would come up with a good backend (not sure whether LSP can do everything that swank can do now), and then implement several good frontends 2021-02-05T09:46:01Z ecraven: but... time ;) 2021-02-05T09:47:37Z mangol: yeah, a good editor-neutral backend supporting all scheme features would be an awesome project 2021-02-05T09:48:33Z ecraven: I've been trying with r7rs-swank, the protocol is swank, but the features (completion, evaluation, etc.) are useful in general. at least it's a start, which shows how to achieve this for at least a few Schemes 2021-02-05T09:48:51Z mangol: ideally something where the scheme implementation can tell the editor "this REPL is now in a debugger N levels deep", "these here are eval frames" instead of having to parse text to infer that stuff 2021-02-05T09:51:16Z ecraven: all the ones I've done use internal procedures of the various schemes, no text parsing 2021-02-05T09:51:49Z mangol: excellent 2021-02-05T09:52:08Z ecraven: however, not all schemes support as much introspection as one would like ;) 2021-02-05T09:53:10Z mangol: did you contact the authors of the actively maintained ones about adding introspection? 2021-02-05T09:53:23Z mangol: or are all the non-introspection-supporting schemes the unmaintained ones 2021-02-05T09:53:40Z ecraven: only a few 2021-02-05T09:54:25Z ecraven: for example, due to chez's aggressive compiler, you "lose" a lot of information. in general, due to TCO, it is hard to reconstruct a full backtrace 2021-02-05T09:55:18Z mangol: right. that seems like an unavoidable tradeoff 2021-02-05T09:55:41Z ecraven: it should be possible, with explicit support, to fix this, but that's a lot of work for an implementation for only a gain in debugging 2021-02-05T09:56:39Z mangol: i noticed something weird when switching to scheme and writing everythign in recursive style, suddely my code didn't really have bugs anymore 2021-02-05T09:57:00Z ecraven: you can have some of mine :P 2021-02-05T09:57:03Z mangol: my bug rate has been going down over the years in general due to experience, but there was a noticeable boost with scheme 2021-02-05T09:57:31Z mangol: :D 2021-02-05T09:58:33Z mangol: i think the lack of assignment statements has a lot to do with it. with recursion you gather the values for the next step at the end and "assign" them all at once (implicitly via TCO) at the end of the step 2021-02-05T09:59:19Z mangol: so it's hard to confuse the order of the variable assignments 2021-02-05T10:01:05Z mangol: there was a list of bugs in the release (or beta?) of some of the semi-recent ID Software games, and a great number of them were off-by-one errors 2021-02-05T10:01:45Z mangol: that kind of thing is what's left when the programmers are really good 2021-02-05T10:07:04Z taw10: r.e. SLIME alternatives for non-Emacs, Conjure (https://github.com/Olical/conjure) for NeoVim is really nice. Scheme is not yet supported, but will be soon (I am tempted to try adding Guile support myself) 2021-02-05T10:09:18Z ecraven: taw10: thanks, I'll look at that. the problem 2021-02-05T10:09:50Z ecraven: I see with many of these projects is that SLIME does way more than just completion and evaluation. there's the inspector, there's good tracing support, you can show images at the REPL, and so on 2021-02-05T10:16:13Z taw10: Yes, indeed. I'm hopeful that Conjure will eventually do all of that 2021-02-05T10:18:47Z retropikzel quit (Quit: Leaving) 2021-02-05T10:20:50Z Gnuxie[m]: Mad that the colours in the pic are appropriated from Clhs 2021-02-05T10:21:05Z Gnuxie[m]: Genuinely angry 2021-02-05T10:31:13Z ecraven: taw10: what's the backend protocol? 2021-02-05T10:49:07Z ecraven: taw10: docstrings are a good thing too ;) 2021-02-05T10:51:39Z notzmv quit (Remote host closed the connection) 2021-02-05T10:53:19Z notzmv joined #scheme 2021-02-05T10:59:44Z badkins joined #scheme 2021-02-05T11:04:28Z badkins quit (Ping timeout: 256 seconds) 2021-02-05T11:07:50Z mirrorbird quit (Ping timeout: 264 seconds) 2021-02-05T11:09:32Z mirrorbird joined #scheme 2021-02-05T11:13:47Z paulj quit (Remote host closed the connection) 2021-02-05T11:22:24Z jeko: yolo schemers 2021-02-05T11:26:54Z pankajsg joined #scheme 2021-02-05T11:30:24Z mirrorbird quit (Quit: Leaving) 2021-02-05T11:38:03Z taw10: ecraven: there's a client module for each language, which starts and communicates with the REPL in whatever way 2021-02-05T11:38:20Z taw10: I don't know that much about it - I only discovered it myself last weekend 2021-02-05T11:39:24Z ecraven: taw10: from my experience, that's about the worst way to go about things.. you really need a dedicated server, not interface with the repl. you need this for multithreading, for example 2021-02-05T11:40:26Z wasamasa: Geiser just sucks 2021-02-05T11:41:01Z wasamasa: I don't see a replacement becoming a thing without proper sockets support everywhere though 2021-02-05T11:41:29Z gravicappa joined #scheme 2021-02-05T11:44:59Z ecraven: wasamasa++ ;) 2021-02-05T11:58:36Z phillbush joined #scheme 2021-02-05T12:01:49Z nilgeisw joined #scheme 2021-02-05T12:03:00Z retropikzel joined #scheme 2021-02-05T12:12:05Z badkins joined #scheme 2021-02-05T12:14:55Z madage quit (Ping timeout: 268 seconds) 2021-02-05T12:18:39Z badkins quit (Ping timeout: 258 seconds) 2021-02-05T12:46:32Z Anonymous_ quit (Remote host closed the connection) 2021-02-05T13:06:29Z brainfunnel joined #scheme 2021-02-05T13:08:03Z madage joined #scheme 2021-02-05T13:10:52Z madage quit (Remote host closed the connection) 2021-02-05T13:13:43Z jeko: good afternoon schemers! 2021-02-05T13:16:11Z madage joined #scheme 2021-02-05T13:22:56Z retropikzel quit (Quit: Leaving) 2021-02-05T13:30:32Z imode joined #scheme 2021-02-05T13:40:26Z acarrico joined #scheme 2021-02-05T13:43:32Z taw10: ecraven: sure, the client plugin can communicate in any other way that it likes 2021-02-05T13:44:14Z taw10: I don't know if the other stuff (docstrings etc) are intended to be within the project's scope, though 2021-02-05T14:30:25Z Major_Biscuit quit (Ping timeout: 240 seconds) 2021-02-05T14:48:40Z Major_Biscuit joined #scheme 2021-02-05T14:54:12Z hive-mind quit (Ping timeout: 246 seconds) 2021-02-05T14:57:20Z hive-mind joined #scheme 2021-02-05T15:06:48Z Anonymous_ joined #scheme 2021-02-05T15:07:25Z skapata joined #scheme 2021-02-05T15:08:26Z ex_nihilo quit (Ping timeout: 264 seconds) 2021-02-05T15:41:13Z acarrico quit (Ping timeout: 265 seconds) 2021-02-05T15:42:24Z ski quit (Killed (Sigyn (Spam is off topic on freenode.))) 2021-02-05T15:43:47Z jeko quit (Quit: jeko) 2021-02-05T15:46:36Z ski joined #scheme 2021-02-05T15:55:01Z brainfunnel_ joined #scheme 2021-02-05T15:56:36Z ex_nihilo joined #scheme 2021-02-05T15:57:57Z brainfunnel quit (Ping timeout: 256 seconds) 2021-02-05T15:58:17Z Vultyre quit (Quit: ZNC 1.7.5+deb4 - https://znc.in) 2021-02-05T15:58:20Z brainfunnel joined #scheme 2021-02-05T16:01:16Z Vultyre joined #scheme 2021-02-05T16:01:45Z brainfunnel_ quit (Ping timeout: 264 seconds) 2021-02-05T16:12:50Z badkins joined #scheme 2021-02-05T17:21:07Z mmmattyx joined #scheme 2021-02-05T17:37:00Z nilgeisw quit (Remote host closed the connection) 2021-02-05T17:37:35Z raingloom joined #scheme 2021-02-05T17:48:16Z rj joined #scheme 2021-02-05T18:10:09Z Major_Biscuit quit (Ping timeout: 264 seconds) 2021-02-05T18:23:26Z klovett_ joined #scheme 2021-02-05T18:25:09Z seepel joined #scheme 2021-02-05T18:26:05Z klovett quit (Ping timeout: 240 seconds) 2021-02-05T18:31:45Z rj quit (Quit: rj) 2021-02-05T18:35:56Z gravicappa quit (Ping timeout: 240 seconds) 2021-02-05T18:38:49Z rj joined #scheme 2021-02-05T18:44:41Z wasamasa: rudybot: hello there 2021-02-05T18:44:41Z rudybot: wasamasa: There's a Hello-Kitty assault rifle 2021-02-05T18:44:55Z Zipheir: rudybot: You're back! 2021-02-05T18:44:55Z rudybot: Zipheir: you could read all, change the one you're interested in, then write all back 2021-02-05T18:54:29Z badkins quit (Remote host closed the connection) 2021-02-05T18:56:17Z jobol quit (Quit: Leaving) 2021-02-05T19:01:31Z rj quit (Quit: rj) 2021-02-05T19:03:34Z rj joined #scheme 2021-02-05T19:05:04Z elliott_ quit (Ping timeout: 276 seconds) 2021-02-05T19:05:11Z rj quit (Client Quit) 2021-02-05T19:11:35Z klovett_ quit (Remote host closed the connection) 2021-02-05T19:12:13Z klovett joined #scheme 2021-02-05T19:12:24Z elliott_ joined #scheme 2021-02-05T19:25:15Z badkins joined #scheme 2021-02-05T19:26:03Z badkins quit (Remote host closed the connection) 2021-02-05T19:27:57Z badkins joined #scheme 2021-02-05T19:28:14Z ineiros quit (Ping timeout: 264 seconds) 2021-02-05T19:30:24Z mmmattyx quit (Quit: Connection closed for inactivity) 2021-02-05T19:31:39Z ineiros joined #scheme 2021-02-05T19:59:11Z seepel1 joined #scheme 2021-02-05T20:01:25Z seepel quit (Ping timeout: 240 seconds) 2021-02-05T20:02:21Z madage quit (Ping timeout: 268 seconds) 2021-02-05T20:06:49Z madage joined #scheme 2021-02-05T20:08:41Z seepel1 quit (Read error: Connection reset by peer) 2021-02-05T20:12:13Z madage quit (Ping timeout: 268 seconds) 2021-02-05T20:16:39Z amirouche joined #scheme 2021-02-05T20:16:52Z amirouche quit (Client Quit) 2021-02-05T20:17:08Z amirouche joined #scheme 2021-02-05T20:25:34Z klovett quit (Remote host closed the connection) 2021-02-05T20:25:53Z klovett joined #scheme 2021-02-05T20:32:12Z madage joined #scheme 2021-02-05T20:41:09Z ngz joined #scheme 2021-02-05T20:42:45Z X-Scale` joined #scheme 2021-02-05T20:44:11Z X-Scale quit (Ping timeout: 256 seconds) 2021-02-05T20:44:11Z X-Scale` is now known as X-Scale 2021-02-05T20:47:29Z amirouche1 joined #scheme 2021-02-05T20:48:45Z amirouche quit (Disconnected by services) 2021-02-05T20:48:51Z amirouche1 is now known as amirouche 2021-02-05T20:52:47Z amirouche: what is the revolution of today? 2021-02-05T20:52:49Z amirouche: :o) 2021-02-05T20:54:29Z amirouche: I hereby claim ports are a dubious abstraction, feared by experienced schemers, not understood by new users, and not schemey concept... port shall vanish! 2021-02-05T20:54:42Z amirouche: mangol: :D 2021-02-05T20:58:35Z amirouche: rudybot: do you think ports should vanish? 2021-02-05T20:58:41Z rudybot: amirouche: "The files are deleted before run/collecting returns, so when the ports are closed, they vanish." lovely, s/he knows the trick: on *nix one can 'delete' a file while something else is still reading it. had lots of fun with that back in the day. 2021-02-05T20:59:07Z amirouche: rudybot: you nerd! 2021-02-05T20:59:09Z rudybot: amirouche: pjb is an e-lisp nerd, he'll probably help you with that if you flash him a small amount of $ 2021-02-05T20:59:34Z amirouche: rudybot: do not call on your nerd friend to help me nerf my energy 2021-02-05T20:59:48Z rudybot: amirouche: what do you guys think about the possible HT nerf 2021-02-05T21:00:04Z amirouche: idk 2021-02-05T21:02:49Z amirouche quit (Read error: Connection reset by peer) 2021-02-05T21:17:36Z rj joined #scheme 2021-02-05T21:26:56Z rj quit (Quit: rj) 2021-02-05T21:28:24Z rj joined #scheme 2021-02-05T21:34:37Z phillbush quit (Quit: Leaving) 2021-02-05T21:38:41Z Anonymous_ quit (Remote host closed the connection) 2021-02-05T21:52:19Z cubik quit (Quit: Leaving.) 2021-02-05T21:59:58Z amirouche joined #scheme 2021-02-05T22:44:05Z Anonymous_ joined #scheme 2021-02-05T22:56:22Z civodul quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-05T23:03:20Z badkins quit (Remote host closed the connection) 2021-02-05T23:03:50Z badkins joined #scheme 2021-02-05T23:09:56Z badkins quit (Ping timeout: 240 seconds) 2021-02-05T23:10:53Z badkins joined #scheme 2021-02-05T23:35:02Z rj quit (Quit: rj) 2021-02-06T00:05:33Z klovett quit 2021-02-06T00:13:10Z aeth quit (Ping timeout: 276 seconds) 2021-02-06T00:13:11Z ngz quit (Ping timeout: 272 seconds) 2021-02-06T00:13:27Z aeth joined #scheme 2021-02-06T00:23:18Z amirouche quit (Ping timeout: 246 seconds) 2021-02-06T00:29:39Z badkins quit (Remote host closed the connection) 2021-02-06T00:29:46Z daviid` quit (Ping timeout: 272 seconds) 2021-02-06T00:30:11Z badkins joined #scheme 2021-02-06T00:34:45Z badkins quit (Ping timeout: 240 seconds) 2021-02-06T00:35:33Z c7d9 joined #scheme 2021-02-06T00:37:19Z daviid joined #scheme 2021-02-06T00:38:43Z c7d9_ quit (Ping timeout: 256 seconds) 2021-02-06T00:39:09Z rgherdt quit (Ping timeout: 272 seconds) 2021-02-06T00:42:33Z lockywolf quit (Quit: ZNC 1.7.5 - https://znc.in) 2021-02-06T00:42:49Z lockywolf_ joined #scheme 2021-02-06T00:42:51Z jcowan: does anyone know what the lightning bolt means in the R7RS benchmark output? 2021-02-06T00:46:45Z gwatt: jcowan: crashed while running 2021-02-06T00:47:20Z gwatt: You can hover over the cells and there is a tooltip popup 2021-02-06T00:48:13Z badkins joined #scheme 2021-02-06T00:53:18Z jcowan: ah, thanks 2021-02-06T00:53:32Z jcowan: so TinyScheme *always* crashes 2021-02-06T00:53:38Z jcowan chuckles 2021-02-06T01:02:24Z jcowan: I'm putting together a typeclass spec for sequences 2021-02-06T01:04:17Z jcowan: Is it worth having linear-update versions of the various functions? 2021-02-06T01:14:21Z raingloom quit (Ping timeout: 264 seconds) 2021-02-06T01:14:42Z mdhughes: TinyScheme works, but you need to use a file instead of stdin usually. 2021-02-06T01:15:20Z mdhughes: There's ways to fix that if you jiggery-pokery around in source. 2021-02-06T01:17:58Z mdhughes: So wrap it in `(with-input-from-file (car *args*) (lambda () ... ))`, pass input file, and it's fine. 2021-02-06T01:20:15Z Zipheir: jcowan: Yes. There's zero cost to providing them. 2021-02-06T01:20:56Z Zipheir: jcowan: Further, for some sequences, these might be the more efficient procedures. 2021-02-06T01:23:38Z Zipheir: (I'll definitely call vector-update! instead of vector-update, if the implementation is the usual one in Scheme.) 2021-02-06T01:28:37Z skapata quit (Ping timeout: 260 seconds) 2021-02-06T01:33:43Z richbridger joined #scheme 2021-02-06T01:35:28Z skapata joined #scheme 2021-02-06T01:36:33Z aquijoule__ quit (Ping timeout: 264 seconds) 2021-02-06T01:59:02Z jcowan: This wouldn't apply to single-element changes 2021-02-06T02:11:33Z Zipheir: Which operations would get linear updates, then? 2021-02-06T02:11:45Z Zipheir: Er, linear update variants. 2021-02-06T02:15:22Z Garbanzo joined #scheme 2021-02-06T02:18:27Z elliott_ quit (Ping timeout: 246 seconds) 2021-02-06T02:42:27Z brainfunnel quit (Quit: thanks, bye!) 2021-02-06T02:50:59Z klovett joined #scheme 2021-02-06T03:14:37Z elliott_ joined #scheme 2021-02-06T03:39:41Z jcowan: e.g.take! sets the appropriate cdr to () when dealing with lists, but otherwise is the same as take 2021-02-06T03:40:26Z jcowan: I can't actually think of any other sequence types in which take! is different from take 2021-02-06T03:46:28Z klovett quit (Remote host closed the connection) 2021-02-06T03:47:08Z klovett joined #scheme 2021-02-06T03:52:31Z elliott_ quit (Read error: Connection reset by peer) 2021-02-06T03:58:02Z elliott_ joined #scheme 2021-02-06T04:15:17Z Garbanzo quit (Quit: Leaving) 2021-02-06T04:15:24Z Zipheir: They may well be useful for other, as-yet-unknown sequence types that want to use the typeclass. 2021-02-06T04:15:33Z Garbanzo joined #scheme 2021-02-06T04:19:56Z sudden quit (Ping timeout: 240 seconds) 2021-02-06T04:20:52Z sudden joined #scheme 2021-02-06T04:30:26Z clog quit (Ping timeout: 272 seconds) 2021-02-06T04:30:40Z badkins quit (Remote host closed the connection) 2021-02-06T04:38:40Z jcowan: True. But currently there are 80 procedures, of which 25 are linear-update. 2021-02-06T04:38:46Z jcowan: That's a lot. 2021-02-06T04:39:07Z gravicappa joined #scheme 2021-02-06T04:47:12Z badkins joined #scheme 2021-02-06T04:47:23Z badkins quit (Remote host closed the connection) 2021-02-06T04:55:28Z badkins joined #scheme 2021-02-06T04:55:36Z badkins quit (Remote host closed the connection) 2021-02-06T05:00:49Z ex_nihilo quit (Quit: Leaving) 2021-02-06T05:07:10Z badkins joined #scheme 2021-02-06T05:12:25Z badkins quit (Ping timeout: 256 seconds) 2021-02-06T05:18:58Z terpri quit (Remote host closed the connection) 2021-02-06T05:23:37Z Zipheir: jcowan: That is a lot. 2021-02-06T05:26:01Z aquijoule_ joined #scheme 2021-02-06T05:27:22Z lockywolf joined #scheme 2021-02-06T05:28:08Z lockywolf_ quit (Ping timeout: 276 seconds) 2021-02-06T05:28:10Z rudybot quit (Ping timeout: 276 seconds) 2021-02-06T05:28:21Z rudybot joined #scheme 2021-02-06T05:29:04Z richbridger quit (Ping timeout: 276 seconds) 2021-02-06T05:30:57Z _apg quit (Ping timeout: 246 seconds) 2021-02-06T05:42:43Z choas quit (Read error: Connection reset by peer) 2021-02-06T05:43:46Z choas joined #scheme 2021-02-06T05:43:46Z choas quit (Read error: Connection reset by peer) 2021-02-06T05:47:02Z jcowan: https://github.com/johnwcowan/r7rs-work/blob/master/SequencesCowan.md if you want to take a look. 2021-02-06T05:48:49Z choas joined #scheme 2021-02-06T05:50:38Z Zipheir: LGTM, for the most part. Do we still need seqsets? 2021-02-06T05:54:32Z jcowan: I was wondering that. I don't think so: they are O(n2) 2021-02-06T05:55:27Z jcowan: Gone. 2021-02-06T06:02:28Z bitmapper quit (Quit: Connection closed for inactivity) 2021-02-06T06:48:52Z cubik joined #scheme 2021-02-06T07:08:32Z badkins joined #scheme 2021-02-06T07:13:43Z badkins quit (Ping timeout: 276 seconds) 2021-02-06T07:35:18Z amirouche joined #scheme 2021-02-06T07:47:49Z skapata quit (Remote host closed the connection) 2021-02-06T07:56:58Z retropikzel joined #scheme 2021-02-06T08:08:39Z ecraven: jcowan: the problem with tinyscheme is that it seems that (read) does not work if you run `tinyscheme file.scm' 2021-02-06T08:08:43Z ecraven: it always reports an error 2021-02-06T08:08:49Z ecraven: I've been trying to find a way to fix this, but haven't yet 2021-02-06T08:09:29Z ecraven: mdhughes: I'll try that, thank you 2021-02-06T08:21:33Z pankajsg quit (Ping timeout: 264 seconds) 2021-02-06T08:39:36Z imode quit (Ping timeout: 265 seconds) 2021-02-06T08:47:43Z amirouche1 joined #scheme 2021-02-06T08:50:57Z amirouche quit (Ping timeout: 264 seconds) 2021-02-06T08:56:45Z amirouche1 quit (Ping timeout: 240 seconds) 2021-02-06T08:57:07Z terpri joined #scheme 2021-02-06T08:57:09Z Melchizedek6309 joined #scheme 2021-02-06T08:58:56Z retropikzel quit (Quit: Leaving) 2021-02-06T08:59:05Z Melchizedek6809 quit (Ping timeout: 240 seconds) 2021-02-06T09:07:50Z tessier_ quit (Ping timeout: 272 seconds) 2021-02-06T09:08:28Z hendursa1 joined #scheme 2021-02-06T09:09:30Z badkins joined #scheme 2021-02-06T09:11:04Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-06T09:13:39Z retropikzel joined #scheme 2021-02-06T09:13:43Z Melchizedek6809 joined #scheme 2021-02-06T09:14:21Z badkins quit (Ping timeout: 264 seconds) 2021-02-06T09:15:59Z Melchizedek6309 quit (Ping timeout: 258 seconds) 2021-02-06T09:16:05Z Melchizedek68000 joined #scheme 2021-02-06T09:16:23Z czm joined #scheme 2021-02-06T09:18:17Z Melchizedek6809 quit (Ping timeout: 258 seconds) 2021-02-06T09:20:58Z Melchizedek68000 quit (Ping timeout: 258 seconds) 2021-02-06T09:23:49Z Melchizedek6809 joined #scheme 2021-02-06T09:24:02Z Garbanzo quit (Ping timeout: 264 seconds) 2021-02-06T09:26:42Z czm quit (Ping timeout: 240 seconds) 2021-02-06T09:34:33Z rgherdt joined #scheme 2021-02-06T09:35:49Z Melchizedek6309 joined #scheme 2021-02-06T09:37:42Z Melchizedek6809 quit (Ping timeout: 246 seconds) 2021-02-06T09:38:02Z pankajsg joined #scheme 2021-02-06T09:38:13Z Melchizedek6809 joined #scheme 2021-02-06T09:40:31Z Melchizedek6309 quit (Ping timeout: 258 seconds) 2021-02-06T09:42:59Z Melchizedek6309 joined #scheme 2021-02-06T09:43:12Z Melchizedek6809 quit (Ping timeout: 258 seconds) 2021-02-06T09:43:18Z tessier joined #scheme 2021-02-06T09:49:43Z Melchizedek6809 joined #scheme 2021-02-06T09:52:01Z Melchizedek6309 quit (Ping timeout: 258 seconds) 2021-02-06T10:19:01Z siraben: rudybot: static or dynamic types? 2021-02-06T10:19:06Z rudybot: siraben: s/dispatch/symbol-resolving(??)/ or something .. the function to call is statically looked up via the combination of the name and the apparent (static) types of the arguments. as opposed to dynamic dispatch where you can call method X on a variable with type FooClass but the variable actually holds an object of type FoooSubClass meaning the subclass's X is called 2021-02-06T10:24:08Z mdhughes: Also, call it with `tinyscheme -1 foo.scm foo.input`, no-args does something else. 2021-02-06T10:24:26Z civodul joined #scheme 2021-02-06T10:24:57Z hendursa1 quit (Remote host closed the connection) 2021-02-06T10:25:53Z hendursa1 joined #scheme 2021-02-06T10:57:44Z Melchizedek6309 joined #scheme 2021-02-06T10:59:52Z Melchizedek6809 quit (Ping timeout: 258 seconds) 2021-02-06T11:10:25Z badkins joined #scheme 2021-02-06T11:12:58Z amirouche1 joined #scheme 2021-02-06T11:15:08Z badkins quit (Ping timeout: 272 seconds) 2021-02-06T11:21:53Z amirouche1 is now known as amirouche 2021-02-06T11:27:05Z amirouche quit (Ping timeout: 240 seconds) 2021-02-06T11:29:15Z pankajsg quit (Ping timeout: 256 seconds) 2021-02-06T11:32:02Z pankajsg joined #scheme 2021-02-06T11:36:56Z Melchizedek6809 joined #scheme 2021-02-06T11:38:44Z Melchizedek6309 quit (Ping timeout: 240 seconds) 2021-02-06T11:47:33Z amirouche joined #scheme 2021-02-06T11:53:53Z klovett quit (Remote host closed the connection) 2021-02-06T11:54:09Z klovett joined #scheme 2021-02-06T12:00:47Z badkins joined #scheme 2021-02-06T12:03:40Z pankajsg quit (Read error: Connection reset by peer) 2021-02-06T12:04:26Z mangol: next level OO meme, saved for posterity from r/lispmemes: https://misc.lassi.io/2021/object-oriented-iceberg.jpeg 2021-02-06T12:05:16Z mangol: it makes one wonder, what are some of the most advanced object-oriented systems ever built? (apart from the internet) 2021-02-06T12:06:28Z pankajsg joined #scheme 2021-02-06T12:07:13Z badkins quit (Ping timeout: 256 seconds) 2021-02-06T12:10:21Z mdhughes: "advanced" is kind of irrelevant. Smalltalk was early, and it's more useful than later ones, but crippled by the runtime image design, nobody wants you to ship your whole image to them. 2021-02-06T12:10:54Z mdhughes: Objective-C is most of Smalltalk on top of C, but without the image, which is why NeXTstep and then OS X and iOS are useful. 2021-02-06T12:11:42Z mdhughes: Self's a fantastically useful little language, but had no support. JavaScript's a somewhat broken version of Self, but it runs everywhere so it's the most useful language on the planet. 2021-02-06T12:13:19Z mdhughes: I have my own Scheme OOP system, loosely based on Objective-C's. Quick dispatch of messages and messageNotUnderstood selectors. 2021-02-06T12:14:17Z mdhughes: But most of the time I just use R6RS (or SRFI-9/99) records, they're good enough for many problems. 2021-02-06T12:14:23Z z-memory joined #scheme 2021-02-06T12:14:25Z mangol: smalltalk, objective-c, and your system are all class-based, not prototype-based? and all single-inheritance? 2021-02-06T12:16:35Z mdhughes: Self & JS are prototype-based. But I generally prefer Smalltalk-like class systems. 2021-02-06T12:17:27Z mdhughes: Obvs, don't confuse that with Java's, which is cut down so much from Obj-C it lost almost all of the useful features. 2021-02-06T12:18:05Z Melchizedek6809 quit (Quit: Leaving) 2021-02-06T12:18:13Z mdhughes: The one thing Java did right is the Bean/POJO model, but almost nobody bothers to implement bean descriptors, so you can't make nice objects except by code. 2021-02-06T12:19:08Z mdhughes: Multiple implementation inheritance is a massive mistake. You so quickly hit unresolvable class diamonds. 2021-02-06T12:20:25Z mangol: did you say earlier you worked with kent beck? 2021-02-06T12:20:54Z mdhughes: Briefly, I got JUnit & XP training from him. Like, 2 weeks? 2021-02-06T12:22:05Z mdhughes: His preference for Smalltalk was very clear, but he made Java do interesting things, just much harder than it should've been. 2021-02-06T12:22:11Z mangol: how would you compare the smalltalk and lisp/scheme communities? 2021-02-06T12:23:00Z mangol: how similar or different is the thinking and problem solving style and overall attitude? 2021-02-06T12:23:09Z mdhughes: Smalltalk doesn't really have a community anymore that I know of. Every impl was a silo that couldn't work with the others, and all very very enterprise-focused. 2021-02-06T12:23:43Z mangol: right, i guess they sold to the market that java stealrollered over 2021-02-06T12:23:43Z mdhughes: There's a reason C2Wiki was for an accounting project. 2021-02-06T12:24:11Z mangol: stealrollered lol. freudian slip? 2021-02-06T12:24:20Z mdhughes: steamlol 2021-02-06T12:24:49Z mangol: just lolling around 2021-02-06T12:25:46Z mangol: is the Smalltalk attitude to solving problems and building systems similar to the lisp one? 2021-02-06T12:26:14Z mdhughes: One big difference, everything's in the IDE, even more than Java or Emacs is to LISP. 2021-02-06T12:26:41Z mangol: is going outside the IDE considered kinda heretical or uncool there? 2021-02-06T12:27:18Z mdhughes: You can hack off in the REPL in LISP, and code in ed or whatever. You literally *can't* code ST outside the IDE, because your objects don't exist outside the image. 2021-02-06T12:29:03Z mangol: isn't that similar to Lisp machines back in the day? 2021-02-06T12:29:49Z mangol: so Lisp forfeited that part whereas ST didn't. except GNU Smalltalk, but I don't know whether it has many users 2021-02-06T12:30:54Z mdhughes: Kind of, but it's more tinkertoy. LISP machines were still pretty text-oriented? I've only seen a few videos. 2021-02-06T12:31:16Z mdhughes: ST is just an object browser, drill down to a method or field editor. 2021-02-06T12:31:52Z mangol: for Scheme and Lisp, it's a good thing we have the cautionary tale of Smalltalk on what not to do (silo up), though it's not pleasant to see them fail 2021-02-06T12:33:20Z mdhughes: They had a bunch of other problems. It was a couple orders of magnitude slower than Java before fast JIT, let alone C. 2021-02-06T12:33:45Z pankajsg quit (Ping timeout: 246 seconds) 2021-02-06T12:33:53Z mdhughes: Objective-C has *very* fast message dispatch, but you still want to do tight loops in C, which happily it just lets you do. 2021-02-06T12:34:19Z pankajsg joined #scheme 2021-02-06T12:34:39Z mangol: do you know how the performance of Pharo (the current flagship smalltalk?) compares to Lisp/Scheme? 2021-02-06T12:34:41Z mdhughes: Like, when I started using Obj-C, objc_msgSend was ~80 instructions, and now it's under 30. But of course a JMP is 1. 2021-02-06T12:35:20Z mangol: ST is like microkernels. every problem in CS can be solved by adding another level of indirection 2021-02-06T12:35:21Z mdhughes: I haven't seen a benchmark of ST in a decade+. 2021-02-06T12:36:04Z mdhughes: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/smalltalk.html 2021-02-06T12:36:34Z mangol: this https://en.wikipedia.org/wiki/Mirai_(software) probably contains some of the most advanced Lisp hacks still around 2021-02-06T12:36:43Z mangol: Symbolics S-Graphics vintage 2021-02-06T12:37:18Z mangol: and ITA airfare search, but it's unlikely they use serious OOP? 2021-02-06T12:38:50Z mangol: thanks for linking the benchmark. so Visualworks is 2-100x slower than Node JS depending on the problem 2021-02-06T12:39:08Z mdhughes: And Node's a memory pig, but still compares well. 2021-02-06T12:41:10Z mangol: the pages don't say whether or not GC was triggered 2021-02-06T12:43:16Z pankajsg quit (Ping timeout: 240 seconds) 2021-02-06T12:43:25Z ecraven: mdhughes: seems to run ok, thank you 2021-02-06T12:43:33Z pankajsg joined #scheme 2021-02-06T12:43:43Z mangol: is it reasonable to assume that for something as dynamic as ST, a tracing JIT is needed for competitive performance? 2021-02-06T12:43:57Z mdhughes: ecraven: Nice! 2021-02-06T12:44:04Z ecraven: mdhughes: thought almost everything is ulimitkilled ;) 2021-02-06T12:44:20Z ecraven: I'll need to investigate, maybe I should move the "slower" Schemes into a separate benchmark, with fewer repetitions 2021-02-06T12:44:37Z mdhughes: Problem lengths might be too long, tinyscheme has very strict memory limits. 2021-02-06T12:44:43Z mangol: ecraven: good idea 2021-02-06T12:44:55Z ecraven: mdhughes: what happens if tinyscheme prints "No memory"? just a gc run? 2021-02-06T12:45:20Z mdhughes: TS does well on my stupid primes benchmark, but at a certain point it explodes. 2021-02-06T12:46:05Z mdhughes: You can try running the gc again, but it's probably out of stack, not fixable. 2021-02-06T12:46:39Z mdhughes: (gcverbose) 2021-02-06T12:46:54Z mdhughes: `(gcverbose #t) (gc)` 2021-02-06T12:49:33Z mdhughes: mangol: Presumably if $Millions were thrown at ST JIT, it'd be maybe 10-50% competitive with Java, JS/Node. But even then, it does a lot of dynamic stuff on every operation. 2021-02-06T12:50:14Z mdhughes: There's no `if` primitive, booleans have a message `if:else:` that takes two blocks, evaluates one. 2021-02-06T12:50:35Z mdhughes: Likewise, no loops, numbers have `repeat:` 2021-02-06T12:50:53Z mdhughes: (or whatever it's called, it's been a long couple whiles) 2021-02-06T12:51:40Z mangol: so `foo ifTrue:` cannot be turned into a branch instruction unless the compiler can statically infer that `foo` is a boolean, and static type inference is especially hard in ST 2021-02-06T12:51:58Z mdhughes: Yeah. It's perversely unoptimizable. 2021-02-06T12:52:47Z mangol: i wonder if anyone has tried writing a whole-program optimizing compiler for ST. though freezing the world flies in the face of ST's image (pun intended) 2021-02-06T12:53:18Z ecraven: there were good Self compilers, right? that wasn't much easier to optimize than ST, was it/ 2021-02-06T12:53:23Z mangol: http://www.strongtalk.org/ is still around 2021-02-06T12:53:44Z mangol: "It executes Smalltalk much faster than any other Smalltalk implementation, using an advanced inlining compiler based on type-feedback technology originally developed at Sun Microsystem Labs. Remarkably, code is dynamically compiled and decompiled as necessary, even while it is running, in order to maintain perfect interpreted semantics. Code can be transparently debugged and changed on-the-fly, yet will 2021-02-06T12:53:50Z mangol: still run at full speed." 2021-02-06T12:54:07Z mangol: Sun Labs is also where Self came from 2021-02-06T12:54:39Z mangol: Lars Bak, known for Google V8, worked there 2021-02-06T12:54:53Z mangol: small(talk) world 2021-02-06T12:55:38Z mdhughes: Well, for obvious reasons. SUN was running half the Internet, and people needed fast, production web servers and Internet services, that they could hack on and ship NOW. 2021-02-06T12:55:52Z mangol: also funny that Sun is mainly known for Unix which is almost the polar opposite of ST. NeWS is also from Sun Labs, so maybe the labs were exploring another direction for Sun which didn't pan out 2021-02-06T12:56:28Z mdhughes: So you couldn't use C/C++ for that, you'd be compiling all week. Perl was slow and not getting faster. 2021-02-06T12:57:38Z mdhughes: There was a ton of great graphics work at SUN, but they could never come close to SGI's laser focus. I loved them both, and seeing them die, I want to burn Oracle to the ground. 2021-02-06T12:58:00Z mdhughes: And Microsoft, but that goes without saying for just about anyone. 2021-02-06T12:59:00Z mangol: "The Strongtalk system was developed in secret in the mid-90's by a small startup company. Before the Strongtalk system could be released, the company was acquired by Sun Microsystems, Inc. to work on the Java® virtual machine. Development of Strongtalk was halted at that point" 2021-02-06T12:59:25Z mangol: indeed, don't you love this industr 2021-02-06T12:59:27Z mangol: y 2021-02-06T13:00:01Z amirouche quit (Quit: WeeChat 2.8) 2021-02-06T13:00:16Z mangol: "Strongtalk development was halted before it was fully productized, so considerable work remains to polish-up Strongtalk before it is ready to be used in real-world applications. But with the release of the virtual-machine source code, a whole new world of possibilities has opened up." 2021-02-06T13:00:35Z mangol: there is insufficient genius in open source for projects like this. that's just how it is 2021-02-06T13:01:25Z mangol: would have to pull some of the top VM hackers out of their cushy google jobs and tenure-track professorships, put five of them in a room with no telephones for a few years 2021-02-06T13:02:14Z mangol: we are lucky to have Chez, Gambit, and SBCL as open source 2021-02-06T13:02:49Z mdhughes: And Chez only because Cisco (fuckers who support China's Great Firewall) need it for something and pay Dybvig. 2021-02-06T13:03:19Z mdhughes: Chez's fantastic, but I think about the blood money funding it all the time. 2021-02-06T13:03:42Z mangol: the corporate sponsorship doesn't seem to present many practical problems so far. VM development seems pretty much no strings attached 2021-02-06T13:04:20Z mangol: every company the size of Cisco is pretty much going along with politics like that 2021-02-06T13:04:23Z mdhughes: Sure, but morally it's horrible. I'm looking the other way because I need a fast Scheme and they seem hands-off. 2021-02-06T13:05:04Z aquijoule_ quit (Ping timeout: 256 seconds) 2021-02-06T13:05:13Z mangol: other fast schemes come from universities. universities are very, very far from being politically neutral entities. 2021-02-06T13:05:25Z mdhughes: But if Microsoft made the best Scheme, I wouldn't touch it. I also don't touch GNU stuff, and they have much smaller crimes. 2021-02-06T13:06:19Z mdhughes: I was out of Java by the time Oracle bought and murdered SUN. 2021-02-06T13:20:10Z mangol: on scheme projects, there's still demand for a library collection that is faster-moving than SRFI. can and should be as portable as we can make it. 2021-02-06T13:20:43Z mangol: another person just posted on the Kawa list that he'd like something like it 2021-02-06T13:21:51Z mangol: if we have such a collection, some of its unit tests would make for good benchmarks too 2021-02-06T13:22:00Z mdhughes: Once it's stable I don't need a lot of new libraries, I can make my own. Thunderchez has SRFI, SDL, Cairo, couple others. Plenty for me. 2021-02-06T13:23:29Z mangol: are you the guy who put together thunderchez? 2021-02-06T13:25:17Z mdhughes: Oh no. 2021-02-06T13:26:29Z mangol: is thunderchez only for chez as it says on the tin? 2021-02-06T13:26:47Z mdhughes: Yes, it's mostly FFI hooks. 2021-02-06T13:27:41Z mdhughes: The SRFIs are just slightly renamed from chez-srfi project, which uses illegal : prefixes in names. 2021-02-06T13:28:59Z mangol: the scheme community should start organizing around a cross-implementation library collection, including FFI (for the time being, special-cased for each implementation) 2021-02-06T13:29:24Z mdhughes: I don't think x-impl FFI is likely. 2021-02-06T13:29:37Z mangol: and we should fix the little inconveniences in R6RS-R7RS portability like the : names 2021-02-06T13:30:05Z mdhughes: Some of the C integration could be shared, but it'd be 1% of the many many pages of FFI hooks. 2021-02-06T13:30:38Z mangol: the social challenge dominates the technical challenge 2021-02-06T13:31:43Z mangol: it's clear that SRFI is too heavy a process for Scheme's library collection to grow at a good rate with tolerance for design mistakes 2021-02-06T13:32:17Z mangol: it's equally clear that when people gather library collections for one implementation, those collections are incomplete, not documented, and languish after a few years 2021-02-06T13:32:37Z mangol: for libraries, RnRS has the same problems as SRFI, but compounded 2021-02-06T13:34:10Z mangol: with the number of people active in the Scheme community, we should have a library collection about the size of Go's standard library about now, with the degree of portability increasing steadily 2021-02-06T13:34:29Z mangol: since people hack on different collections, we're not on track to have that 2021-02-06T13:35:01Z mangol: SRFI and RnRS are perfectionist processes. perfectionism is great for the core language, but it's a death march for a library ecosystem. 2021-02-06T13:36:22Z mangol: there are zero people on the planet who can form a group around a process like SRFI and turn out a great standard library collection the size of Go's or Java's in a reasonable timeframe 2021-02-06T13:41:13Z mdhughes: Go has a corporate owner, who needs to make libraries to support very dumb kids they pluck from college and give a nerfed language to. 2021-02-06T13:41:40Z mangol: does that have practical implications for scheme? 2021-02-06T13:41:47Z mdhughes: Java has many, many corporate interests all of whom need and make support code. Though that's slowed down a lot since Oracle got it. 2021-02-06T13:42:21Z mangol: do Go's and Java's corporate backing imply that a library collection like theirs is a bad goal for Scheme to have? 2021-02-06T13:42:24Z mdhughes: There's no real corporate sponsor for Scheme, except Chez, and they seem OK with where it is. 2021-02-06T13:43:13Z mdhughes: So currently everyone makes the libraries they need and no more, and there's no constant stream of money to support them. 2021-02-06T13:43:36Z mangol: we have enough people to do something like the Go or Java stdlib. and the level of brilliance and commitment needed is not nearly as high as for making great VMs 2021-02-06T13:44:07Z mdhughes: Racket has a lot of libraries, but it's not well developed sometimes, and I suspect a lot of those are bit-rotting old. 2021-02-06T13:44:22Z mangol: yeah, Racket's collection is impressive but uneven 2021-02-06T13:44:24Z mdhughes: And CHICKEN has a ton of eggs, but they're also bit-rot old. 2021-02-06T13:44:42Z mdhughes: Maybe half of C4 eggs are in C5? 2021-02-06T13:44:48Z mangol: about right 2021-02-06T13:44:52Z mangol: cooperation (no pun intended) is the missing ingredient 2021-02-06T13:45:00Z acarrico joined #scheme 2021-02-06T13:45:29Z mangol: and also horizon beyond "these libraries get the job done for my next pet project" 2021-02-06T13:53:56Z aoh quit (Changing host) 2021-02-06T13:53:57Z aoh joined #scheme 2021-02-06T13:57:36Z richbridger joined #scheme 2021-02-06T13:58:11Z badkins joined #scheme 2021-02-06T13:58:58Z phillbush joined #scheme 2021-02-06T14:02:45Z badkins quit (Ping timeout: 240 seconds) 2021-02-06T14:05:20Z wasamasa: eggs are ported on an as-needed basis 2021-02-06T14:05:24Z wasamasa: so nothing surprising there 2021-02-06T14:07:18Z aeth quit (Ping timeout: 265 seconds) 2021-02-06T14:08:55Z aeth joined #scheme 2021-02-06T14:14:35Z mangol: good point. and many eggs are effectively under collective ownership already, even though each egg lists an individual author. often the author is agreeable or even relieved if someone else fixes something in it. 2021-02-06T14:19:42Z mangol: eggs have shared CI infrastructure, a unified documentation format, a common mailing list. 2021-02-06T14:21:15Z mangol: we should have portable eggs, but with collective ownership for everything, without boundaries between eggs (use R6RS/R7RS style libraries instead), and with yearly stable releases of the API 2021-02-06T14:21:33Z mangol: it's worth trying out 2021-02-06T14:22:38Z mangol: the collective ownership is the biggest question mark. for that to work, the initial group of people may have to be small enough and familiar enough that there's social pressure against making random changes to the detriment of the whole 2021-02-06T14:22:38Z wasamasa: well, snow is a thing 2021-02-06T14:22:50Z wasamasa: there's like one user on #chicken who actually tried it 2021-02-06T14:23:07Z wasamasa: I played with it briefly, but found plenty issues immediately 2021-02-06T14:23:45Z wasamasa: the biggest issue is that it's very much unclear which of the snowballs are usable for your implementation 2021-02-06T14:23:54Z mangol: i use snow and like it. but it's missing the social glue. we should have a SRFI-style social aspect, but much less formal. 2021-02-06T14:24:43Z mangol: good point on the portability as well. we should eventually automate that by running unit tests on multiple implementations 2021-02-06T14:25:02Z wasamasa: no, it should like, tell you what a library has been designed for 2021-02-06T14:25:15Z wasamasa: this aspect has been completely omitted from the specification 2021-02-06T14:26:18Z mangol: designed for what implementations you mean? 2021-02-06T14:26:30Z wasamasa: yes 2021-02-06T14:26:54Z wasamasa: there are a bunch using cond-expand to handle multiple implementations, but looking at that alone isn't sufficient to know on which ones it works 2021-02-06T14:27:04Z mangol: ideally that can be inferred mechanically by studying the library imports, then verified via CI unit tests 2021-02-06T14:27:53Z mangol: if we can get substantial agreement from the scheme community (or an enthusiastic subgroup, at any rate) we can work out the technical issues 2021-02-06T14:29:07Z mangol: we have tons of working Scheme Docker containers waiting to run CI jobs once someone figures out how to set up a CI server 2021-02-06T14:30:54Z bitmapper joined #scheme 2021-02-06T14:33:12Z ecraven: mdhughes: do you perhaps know things about owllisp too? I'm having trouble to get it to run my scripts, it works fine from the command line, but if started from the script, it seems to always run into timeouts 2021-02-06T14:43:14Z siiky quit (Ping timeout: 264 seconds) 2021-02-06T14:49:20Z raingloom joined #scheme 2021-02-06T14:49:23Z badkins joined #scheme 2021-02-06T14:54:59Z siiky joined #scheme 2021-02-06T15:06:56Z acarrico quit (Ping timeout: 272 seconds) 2021-02-06T15:11:09Z z-memory quit (Quit: Connection closed for inactivity) 2021-02-06T15:11:42Z klovett quit (Remote host closed the connection) 2021-02-06T15:12:11Z mirrorbird joined #scheme 2021-02-06T15:12:19Z klovett joined #scheme 2021-02-06T15:49:14Z wasamasa: I have this suspicion that scheme shares one unfortunate characteristic with ruby 2021-02-06T15:49:22Z wasamasa: I really, really hate studying other people's code 2021-02-06T15:49:40Z wasamasa: it makes it easy to write clever and incomprehensible code 2021-02-06T15:49:56Z wasamasa: like, what's the point of (define true (engine-pack (nstore-engine nstore)) #t) 2021-02-06T15:50:12Z wasamasa: engine-pack used to take an optional argument (to have variadic arguments) of things to pack 2021-02-06T15:50:18Z wasamasa: but it takes zero arguments and returns #t 2021-02-06T15:50:20Z wasamasa: what's the point 2021-02-06T15:50:24Z wasamasa: is this a programming mistake? 2021-02-06T15:50:25Z gravicappa quit (Ping timeout: 240 seconds) 2021-02-06T15:51:07Z wasamasa: I find it ridiculous how SRFI-168 claims stringly typed query languages are why scheme doesn't have a great RDBMS story, but come on, this is a fucking joke 2021-02-06T15:53:19Z wasamasa: yeah, it looks very much like a bug 2021-02-06T15:53:28Z wasamasa: makes me wonder whether the test suite has ever been run 2021-02-06T15:55:56Z skapata joined #scheme 2021-02-06T15:56:21Z _________ quit (Quit: leaving) 2021-02-06T16:07:23Z klovett quit (Remote host closed the connection) 2021-02-06T16:07:41Z klovett joined #scheme 2021-02-06T16:09:24Z aukkras joined #scheme 2021-02-06T16:10:17Z aukkras is now known as _________ 2021-02-06T16:19:19Z X-Scale` joined #scheme 2021-02-06T16:19:45Z X-Scale quit (Ping timeout: 240 seconds) 2021-02-06T16:20:04Z X-Scale` is now known as X-Scale 2021-02-06T16:29:29Z shawnw__ joined #scheme 2021-02-06T16:33:16Z Zipheir: siraben: Static ∨ dynamic types! 2021-02-06T16:33:44Z siraben: ¿por qué no los dos? 2021-02-06T16:56:43Z lavaflow quit (Ping timeout: 260 seconds) 2021-02-06T17:03:19Z Riastradh: sum types are los dos 2021-02-06T17:07:37Z lavaflow joined #scheme 2021-02-06T17:13:36Z elflng quit (Ping timeout: 272 seconds) 2021-02-06T17:18:36Z badkins_ joined #scheme 2021-02-06T17:19:14Z X-Scale` joined #scheme 2021-02-06T17:20:49Z X-Scale quit (Ping timeout: 276 seconds) 2021-02-06T17:20:50Z X-Scale` is now known as X-Scale 2021-02-06T17:21:29Z badkins quit (Ping timeout: 276 seconds) 2021-02-06T17:24:24Z madage quit (Ping timeout: 268 seconds) 2021-02-06T17:33:45Z euandreh quit (Ping timeout: 272 seconds) 2021-02-06T17:35:39Z mirrorbird quit (Ping timeout: 272 seconds) 2021-02-06T17:36:10Z Garbanzo joined #scheme 2021-02-06T17:38:58Z marusich joined #scheme 2021-02-06T18:03:24Z ecraven: hm.. does it make sense to add Schemes that don't even *say* they support r7rs to https://ecraven.github.io/r7rs-coverage? 2021-02-06T18:04:10Z ecraven: I'd have to do the same thing I do for r7rs-benchmarks, and mostly redefine `import' so it does nothing 2021-02-06T18:05:25Z euandreh joined #scheme 2021-02-06T18:08:33Z wasamasa: hm, I think I've made srfi-168 work 2021-02-06T18:08:56Z wasamasa: to think I just wanted a quick and fun web app project to demonstrate whether sqlite reigns supreme... 2021-02-06T18:08:57Z ecraven: wasamasa: that define had 3 parameters, was that intentional? 2021-02-06T18:09:21Z wasamasa: as I said, I'm very certain it's a bug 2021-02-06T18:09:34Z wasamasa: and since srfi-168 didn't land in any scheme implementation, nobody noticed it until now 2021-02-06T18:10:37Z wasamasa: I'm very close to landing it in my prefered scheme, but some annoyances above my skill grade prevent me from doing a proper release 2021-02-06T18:13:26Z ecraven: which Scheme is that? 2021-02-06T18:13:29Z wasamasa: CHICKEN 2021-02-06T18:13:52Z ecraven: should be ok to package it as an egg, right? amirouche is online here sometimes, I think 2021-02-06T18:14:17Z wasamasa: the thing is that srfi-167 is very opinionated about the API and mandates usage of certain SRFIs 2021-02-06T18:14:28Z Zipheir: Which are missing from CHICKEN? 2021-02-06T18:14:55Z wasamasa: I've had unexpected troubles implementing r6rs-style hashtables and generators accepting custom comparators 2021-02-06T18:15:32Z wasamasa: srfi-125 and srfi-126 cannot be added to the coop for that reason 2021-02-06T18:15:58Z Zipheir: Ohhh yeah. 2021-02-06T18:16:11Z euandreh quit (Ping timeout: 272 seconds) 2021-02-06T18:16:17Z Zipheir: Those are going to take some work. 2021-02-06T18:16:27Z wasamasa: and srfi-167 depends on srfi-125 which is most portably implemented in terms of srfi-126 which is incompatible with the zomg speed hacks in the existing srfi-69 implementation 2021-02-06T18:16:44Z wasamasa: so I've stubbed that part out with srfi-69 2021-02-06T18:16:47Z euandreh joined #scheme 2021-02-06T18:17:44Z wasamasa: so, the few months spent on and off making srfi-168 work can be summarized as, ignore shiny new SRFIs if you want to get stuff done 2021-02-06T18:19:41Z Zipheir: Or, if you make your hash-table library simple and not a mass of speed hacks, it can be brought up to date with shiny new designs. 2021-02-06T18:19:46Z wasamasa: well 2021-02-06T18:19:58Z wasamasa: I also tried using the bundled srfi-69 implementation and ran into different errors with that 2021-02-06T18:20:03Z wasamasa: at this point I gave up 2021-02-06T18:20:10Z Zipheir: (I can't make head or tail of CHICKEN's SRFI 69 implementation.) 2021-02-06T18:21:07Z badkins_ quit (Remote host closed the connection) 2021-02-06T18:21:24Z wasamasa: IIRC it just inflooped when running the test suite for some unholy reason 2021-02-06T18:23:12Z badkins joined #scheme 2021-02-06T18:24:49Z ecraven: is an r7rs Scheme allowed to evaluate (char? 3) to #t? 2021-02-06T18:27:33Z badkins quit (Ping timeout: 264 seconds) 2021-02-06T18:29:39Z aeth: no 2021-02-06T18:30:04Z aeth: Nothing is allowed to be both a char? and a number?; see §3.2 Disjointness of types 2021-02-06T18:33:49Z madage joined #scheme 2021-02-06T18:38:05Z ecraven: poor owl-lisp ;) 2021-02-06T18:38:27Z jcowan: mdhughes, mangol: the ST community has been extremely vibrant ever since the release of Squeak. 2021-02-06T18:39:36Z shawnw__ quit (Remote host closed the connection) 2021-02-06T18:39:39Z jcowan: It has always been true that the compiler "knows about" ifTrue: and friends, and in fact if you try to define it as a message on any other class it will simply never be called. 2021-02-06T18:39:56Z shawnw__ joined #scheme 2021-02-06T18:40:05Z jcowan: wasamasa: Really? 126 is supposed to make use of an existing 69 if there is one for precisely that reason. 2021-02-06T18:40:31Z jcowan: And shipping a ST image is no longer a big deal in the world of Docker containers. 2021-02-06T18:40:50Z wasamasa: wasn't it for the test suite, I'd have just assumed it works 2021-02-06T18:40:58Z jcowan: Huh. 2021-02-06T18:40:58Z ecraven: jcowan: that's a good point, world images don't seem bad suddenly ;D 2021-02-06T18:42:00Z Zipheir: I'd like to look at the CHICKEN hash-table situation again. 2021-02-06T18:42:02Z jcowan: Interlisp is now fully available; it's image-based but the source code files are still the SSOT even though you don't edit them. 2021-02-06T18:43:21Z Zipheir: IIRC the problem lay in the use of bound arguments for hash functions. 2021-02-06T18:43:33Z gravicappa joined #scheme 2021-02-06T18:44:22Z jcowan: Yeah, Chicken is picky about that. A special shim is probably needed because Chicken goes bonkers if the hash function returns a result outside the bounds. 2021-02-06T18:53:23Z elflng joined #scheme 2021-02-06T18:54:19Z mirrorbird joined #scheme 2021-02-06T18:55:24Z webshinra quit (Remote host closed the connection) 2021-02-06T19:07:57Z ggoes quit (Quit: WeeChat 2.3) 2021-02-06T19:10:03Z ggoes joined #scheme 2021-02-06T19:14:33Z imode joined #scheme 2021-02-06T19:16:05Z elliott_ quit (Ping timeout: 240 seconds) 2021-02-06T19:20:38Z ggoes quit (Quit: WeeChat 2.3) 2021-02-06T19:25:28Z elliott_ joined #scheme 2021-02-06T19:25:54Z ggoes joined #scheme 2021-02-06T19:31:10Z amirouche joined #scheme 2021-02-06T19:41:28Z pankajsg quit (Quit: Konversation terminated!) 2021-02-06T19:47:16Z amirouche quit (Ping timeout: 240 seconds) 2021-02-06T19:50:35Z wasamasa: the problem is that as soon as you use a custom hash table (like when combining with comparators), you get an error 2021-02-06T19:54:43Z Garbanzo_ joined #scheme 2021-02-06T19:55:47Z Garbanzo quit (Ping timeout: 260 seconds) 2021-02-06T19:56:05Z webshinra joined #scheme 2021-02-06T19:57:30Z Zipheir: It's possible a new hash-table implementation is needed. 2021-02-06T19:59:52Z Zipheir: Messing about with hash function bounds is black magic. 2021-02-06T20:04:15Z mangol: heh: https://www.lispers.net/ spent a good 5 minutes figuring out whether or not this has anything to do with lisp. seems it doesn't. 2021-02-06T20:04:52Z mangol: https://en.wikipedia.org/wiki/Locator/Identifier_Separation_Protocol looks like the concept formerly known as "roaming" 2021-02-06T20:05:45Z aeth_ joined #scheme 2021-02-06T20:05:50Z aeth quit (Disconnected by services) 2021-02-06T20:05:59Z aeth_ is now known as aeth 2021-02-06T20:06:23Z mirrorbird quit (Ping timeout: 272 seconds) 2021-02-06T20:06:28Z Zipheir: Weird. Very weird. 2021-02-06T20:07:26Z mangol: that website would make for decent vaporvawe music video material too 2021-02-06T20:07:32Z mangol: *wave 2021-02-06T20:08:15Z Zipheir: Did no-one at the IETF point out the name-clash to this working group? Even if Lisp is not a household name in the programming world, it is nonetheless pretty well-known. 2021-02-06T20:08:48Z mangol: i was wondering the same 2021-02-06T20:09:42Z ecraven: hehe, even oaklisp passes about 2/5 of the coverage tests, interesting 2021-02-06T20:10:20Z aeth_ joined #scheme 2021-02-06T20:10:26Z aeth quit (Disconnected by services) 2021-02-06T20:10:28Z mangol: https://github.com/barak is still around too. maybe coverage can increase 2021-02-06T20:10:29Z aeth_ is now known as aeth 2021-02-06T20:12:54Z gravicappa quit (Ping timeout: 256 seconds) 2021-02-06T20:16:03Z mangol: also, thread on ebay forums: "Why so many Lispers on TV?" "It's a mystery to me why there are so many more people with lisps on TV than in real life." 2021-02-06T20:16:32Z mangol: either lispers do well in life and are overrepresented in positions of influence, or media and PR paints an unrealistic picture of the value of lisp 2021-02-06T20:17:11Z mangol: or both! 2021-02-06T20:20:37Z Garbanzo_ quit (Remote host closed the connection) 2021-02-06T20:21:03Z Garbanzo_ joined #scheme 2021-02-06T20:21:38Z fantazo joined #scheme 2021-02-06T20:26:04Z raingloom quit (Ping timeout: 276 seconds) 2021-02-06T20:40:39Z webshinra quit (Read error: Connection reset by peer) 2021-02-06T20:40:49Z webshinra joined #scheme 2021-02-06T20:41:16Z Garbanzo_ quit (Quit: Leaving) 2021-02-06T20:46:26Z mirrorbird joined #scheme 2021-02-06T20:50:31Z cubik quit (Quit: Leaving.) 2021-02-06T20:59:06Z amirouche joined #scheme 2021-02-06T21:06:08Z ecraven: mangol: the main question is probably (once again) whether oaklisp *wants* to be a (partial) implementation of R7RS 2021-02-06T21:08:36Z ArneBab quit (Ping timeout: 258 seconds) 2021-02-06T21:08:49Z ArneBab joined #scheme 2021-02-06T21:08:49Z ArneBab quit (Changing host) 2021-02-06T21:08:49Z ArneBab joined #scheme 2021-02-06T21:10:24Z ecraven: unfortunate that picrin seems abandoned :-/ 2021-02-06T21:12:07Z jcowan: I think it clearly does 2021-02-06T21:12:13Z jcowan: (oaklisp) 2021-02-06T21:12:23Z ecraven: does it say so anywhere? 2021-02-06T21:12:39Z ecraven: I mean, it doesn't have `begin', so, not quite sure 2021-02-06T21:12:45Z ecraven: owl-lisp definitely does, but oaklisp? 2021-02-06T21:13:00Z badkins joined #scheme 2021-02-06T21:13:22Z jcowan: oh, sorry, collision on the hash Berkeleys 2021-02-06T21:13:40Z jcowan: oaklisp is R3RS 2021-02-06T21:13:50Z jcowan: or no, that's T 2021-02-06T21:14:10Z jcowan: "I grow old, I grow old / I shall wear the corners of my trousers rolled" (but I still step on them from time to time) 2021-02-06T21:14:56Z ecraven: mangol: ok, so you build picrin by *not* building latest master ;) I'll see whether I can package that for arch 2021-02-06T21:17:38Z jcowan: I usually only work from master if there is no other choice 2021-02-06T21:17:42Z jcowan: otherwise the latest build 2021-02-06T21:18:38Z badkins quit (Ping timeout: 256 seconds) 2021-02-06T21:21:38Z badkins joined #scheme 2021-02-06T21:32:25Z elliott_ quit (Ping timeout: 240 seconds) 2021-02-06T21:32:25Z terpri quit (Ping timeout: 240 seconds) 2021-02-06T21:32:28Z raingloom joined #scheme 2021-02-06T21:32:41Z terpri joined #scheme 2021-02-06T21:32:56Z badkins quit (Ping timeout: 240 seconds) 2021-02-06T21:50:23Z euandreh quit (Ping timeout: 258 seconds) 2021-02-06T21:52:29Z euandreh joined #scheme 2021-02-06T22:06:50Z raingloom quit (Ping timeout: 272 seconds) 2021-02-06T22:09:30Z ecraven: hm.. does picrin not support rationals? 2021-02-06T22:09:55Z wasamasa: picrin is a joke 2021-02-06T22:10:20Z wasamasa: doesn't support anything but built-in libraries 2021-02-06T22:10:55Z wasamasa: dead, too 2021-02-06T22:11:15Z amirouche quit (Quit: WeeChat 2.8) 2021-02-06T22:11:49Z ecraven: hm.. I just wanted to get all the r7rs schemes on r7rs-coverage, but maybe I should at least add some caveats for abandoned implementations 2021-02-06T22:12:21Z wasamasa: sigh, amirouche 2021-02-06T22:12:47Z wasamasa: not only did he pull arew scheme and all the code for okvs/nstore 2021-02-06T22:12:54Z wasamasa: but apparently the blog explaining how to use nstore, too 2021-02-06T22:13:06Z ecraven: why? 2021-02-06T22:13:24Z wasamasa: well, I'd rather not elaborate on that, lest I get kickbanned by a chanop 2021-02-06T22:13:36Z ecraven: ;) 2021-02-06T22:13:38Z wasamasa: because at this point I'm pissed 2021-02-06T22:14:13Z wasamasa: the punchline is of course the non-scheme projects getting more activity 2021-02-06T22:15:43Z ecraven: rapid-scheme is at least dormant too, right? 2021-02-06T22:15:48Z wasamasa: website wasn't around for long enough to get saved by archive.org 2021-02-06T22:15:54Z ecraven: hm.. not good 2021-02-06T22:16:04Z wasamasa: rapid-scheme has been superseded by, what's its name 2021-02-06T22:16:10Z wasamasa: unsyntax 2021-02-06T22:16:12Z ecraven: so there's a finished srfi with all the relevant info gone? 2021-02-06T22:16:20Z wasamasa: well, no 2021-02-06T22:16:35Z wasamasa: I've contributed a bunch of fixes to the okvs srfi and will do the same thing to the nstore srfi 2021-02-06T22:17:01Z wasamasa: my big question was, how does someone used to sql adapt to this technology and I'm annoyed that the page I've bookmarked for that is gone 2021-02-06T22:17:32Z ecraven: do you think he'll put it back online if someone asks nicely? 2021-02-06T22:17:33Z Zipheir: Does the SRFI provide any references? 2021-02-06T22:17:36Z wasamasa: it's not really a big deal because it's ultimately just a matter of getting familiar with srfi-158 2021-02-06T22:17:49Z wasamasa: I've asked a few times about okvs-related resources and none of them reappeared 2021-02-06T22:18:10Z wasamasa: which is OK, we're all doing this because we're hobbyists 2021-02-06T22:18:26Z wasamasa: but this rapid churn of throwing away information and going against the very nature of the web is stupid 2021-02-06T22:20:12Z wasamasa: hyper.dev now no longer looks like a blog, but some single page application requiring JS to click a link 2021-02-06T22:21:17Z wasamasa: and not even that works, lol 2021-02-06T22:21:56Z wasamasa: try it yourself: https://hyper.dev/0e823afa74074d9a8755f11a14771527.html 2021-02-06T22:22:16Z wasamasa: I cannot even select the text 2021-02-06T22:22:53Z wasamasa: again, I have many words for this, but I won't spell them out 2021-02-06T22:22:57Z ecraven: what about https://okvs.dev? does that help? 2021-02-06T22:23:18Z wasamasa: it's just a redirect to the above thing 2021-02-06T22:23:28Z ecraven: yea, but there seems to be some info about stuff 2021-02-06T22:23:57Z wasamasa: I went through all that and the most useful thing there is a link collection of non-links 2021-02-06T22:24:04Z ecraven: has anyone compiled swift-lispkit on linux? does that work? 2021-02-06T22:24:13Z ecraven: well, that's the new web! :P 2021-02-06T22:24:43Z wasamasa: the new web can go die in a fire 2021-02-06T22:29:25Z ecraven: hm.. so unsyntax uses chibi as a backend, thus there's no need to run the benchmarks for it 2021-02-06T22:30:48Z Zipheir: wasamasa: There's not much help in the 167 source tarball, either. No description of what structures or algorithms the implementation uses, etc. 2021-02-06T22:31:49Z wasamasa: it manages using both ordered and unordered mappings from srfi-146 2021-02-06T22:32:15Z wasamasa: but it can also be made to use an actual OKVS, I've implemented it on top of LMDB 2021-02-06T22:32:21Z ecraven: isn't there some point where it might be easier to reimplement or redesign things? 2021-02-06T22:32:32Z wasamasa: I've considered that, yes 2021-02-06T22:32:50Z wasamasa: but it seemed interesting to try out a SRFI providing an alternative to carefully designed SQL relations 2021-02-06T22:33:06Z wasamasa: especially given how useless wikipedia is on the topic of non-RDBMS systems 2021-02-06T22:34:25Z ecraven: hm.. the example at the bottom of srfi-168 doesn't look that different from sql, semantically, does it? 2021-02-06T22:34:36Z wasamasa: from trivial queries perhaps 2021-02-06T22:34:47Z ecraven: yea, there are no other examples 2021-02-06T22:34:55Z wasamasa: but I want something more complicated 2021-02-06T22:35:28Z wasamasa: I expect to finish this project in another month and then I can tell how the overall performance/ergonomics story looks like and write a scathing blog post 2021-02-06T22:35:42Z Zipheir: I can't make head or tail of the SRFI 167 interface, so I'd probably just go find something else. 2021-02-06T22:35:56Z wasamasa: the document is written in a very confusing style indeed 2021-02-06T22:36:06Z wasamasa: I've contributed a number of fixes to correct the outright wrong parts 2021-02-06T22:36:22Z wasamasa: honestly though, I get that feeling with tons of SRFI documents 2021-02-06T22:36:46Z wasamasa: and not only those, but scheme libraries in general, sometimes I wonder whether there's a competition who can design the most academic API 2021-02-06T22:37:55Z Zipheir: It's hard to design good library interfaces, especially with the time limits of the SRFI process. 2021-02-06T22:38:01Z ecraven: how is an OKVS different from a normal KVS? 2021-02-06T22:38:16Z mdhughes: ecraven: Never seen an owl lisp, they mostly hoot! 2021-02-06T22:38:17Z wasamasa: it stores data in an ordered form, thereby allowing to make range queries 2021-02-06T22:38:30Z ecraven: so it's just a KVS with faster access to the keys? 2021-02-06T22:38:38Z wasamasa: this is useful to build databases on top of it 2021-02-06T22:38:41Z wasamasa: like this nstore thing 2021-02-06T22:39:54Z ecraven: that nstore thing lets you store (conceptual) alists for keys? 2021-02-06T22:40:09Z wasamasa: any supported scheme object, yes 2021-02-06T22:41:04Z ecraven: hm.. how did that get finalized? the "definition" says: (nstore-add! transaction nstore items), but the example has (nstore-add! transaction triplestore title 'post/body body), with a totally different number of parameters? 2021-02-06T22:41:14Z ecraven: but in theory this seems interesting 2021-02-06T22:41:16Z ecraven: ;) 2021-02-06T22:41:16Z wasamasa: I've run into that and have kept notes what to fix 2021-02-06T22:41:54Z wasamasa: look at my involvement for the okvs repo: https://github.com/scheme-requests-for-implementation/srfi-167/pulls?q=author%3Awasamasa+ 2021-02-06T22:42:25Z wasamasa: it won't be that bad with nstore, I promise 2021-02-06T22:42:59Z ecraven: where in that example is the schema defined? post/body, post/title, post/keyword are used, but is there a need to *define* the schema first? 2021-02-06T22:43:13Z wasamasa: no, you only define the tuple and prefix 2021-02-06T22:43:40Z ecraven: that's the tuple? '(subject predicate object) 2021-02-06T22:43:43Z wasamasa: yes 2021-02-06T22:43:50Z wasamasa: that makes a triple store 2021-02-06T22:43:59Z ecraven: why is it called "subject predicate object"? 2021-02-06T22:44:13Z ecraven: is that "id attribute value"? 2021-02-06T22:44:47Z wasamasa: that's how I used it in my example project 2021-02-06T22:45:10Z ecraven: wow, sorry to say, but that srfi is a mess... the PREFIX argument to nstore is not described in the text, but instead DATABASE (which doesn't even occur) 2021-02-06T22:45:11Z wasamasa: EAV table the SQL people call it 2021-02-06T22:46:43Z wasamasa: https://en.wikipedia.org/wiki/Semantic_triple 2021-02-06T22:46:47Z ecraven: why does it even need those names, they never appear again? 2021-02-06T22:47:33Z wasamasa: ¯\_(ツ)_/¯ 2021-02-06T22:47:34Z ecraven: but I see how this would be interesting ;) 2021-02-06T22:47:45Z wasamasa: sure, that's how I fell for this time sink 2021-02-06T22:48:00Z mdhughes: I just use sqlite. I'd rather have a general SQL database front-end, on par with https://www.npmjs.com/package/sequelize 2021-02-06T22:48:00Z ecraven: jcowan: did you ever try to compile swift-lispkit on anything non-mac? 2021-02-06T22:48:23Z ecraven: mdhughes: there is no general SQL :) 2021-02-06T22:48:23Z wasamasa: allegrograph is another related project 2021-02-06T22:49:10Z ecraven: oh, has anyone heard of Inlab Scheme? https://scheme.inlab.net/ 2021-02-06T22:49:12Z mdhughes: sequelize is pretty general: Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server 2021-02-06T22:49:18Z ecraven: came across that today ;) 2021-02-06T22:49:38Z ecraven: mdhughes: does it work with strings? 2021-02-06T22:49:58Z mdhughes: Yes? I mean, you can make VARCHAR and TEXT fields. 2021-02-06T22:50:10Z wasamasa: 2021 and R4RS? 2021-02-06T22:50:30Z ecraven: I have used ORMs with different databases, and my experience is that the *only* way to make your (non-trivial) code work across multiple databases is to write actual SQL text. 2021-02-06T22:50:53Z ecraven: there just is no way around that. SQL is *not* standardised enough for code to be even remotely portable across systems. 2021-02-06T22:51:07Z ecraven: so anything that does not map directly to text is just not worth it, it'll bite you later 2021-02-06T22:51:29Z ecraven: also, Oracle is still a thing, and it creates a lot of problems for any ORM ("" == null and other idiotic ideas) 2021-02-06T22:51:38Z mdhughes: "Inlab Scheme 5 has not been released yet, please subscribe to our general email list if you want to get notified!" 2021-02-06T22:51:41Z mdhughes: Grr. 2021-02-06T22:51:52Z ecraven: it just looked interesting, as it's commercial ;) 2021-02-06T22:51:59Z wasamasa: > The running time was 1.1 seconds on an old Pentium90 running FreeBSD 2.1.5 including initialisation of Inlab Scheme which took about 0.2 seconds on this platform (A pentium pro 200 running FreeBSD 2.1.5 needed about 0.44 seconds including 0.05 seconds to initialise). 2021-02-06T22:52:29Z mdhughes: ecraven: That's what SQL front-ends are for, to paper over most of the differences. No Oracle support, because that's a nightmare. 2021-02-06T22:52:47Z wasamasa: so 90ies software 2021-02-06T22:53:15Z ecraven: mdhughes: from my experience, you *cannot* paper over the differences. you will get bitten by them 2021-02-06T22:53:22Z mdhughes: I've found sequelize, and over in Java-land Hibernate, cover 95% of the use-cases. If you do have a DB-specific thing you want to do, you can still write raw SQL, but please don't. 2021-02-06T22:53:49Z ecraven: well, for basic CRUD stuff, that works, but for anything that uses a database in a useful way, I've never seen that work. 2021-02-06T22:53:51Z mdhughes: <- been using DB front-ends and ORM for 20+ years. Been bit by a few, but it's not that bad. 2021-02-06T22:54:07Z ecraven: it's been about 15 years for me, but some of them on Oracle ;) 2021-02-06T22:54:10Z mdhughes: Core Data's great, too, but of course it only does sqlite. 2021-02-06T22:54:25Z ecraven: man, I don't get why anyone sane would ever use Oracle... 2021-02-06T22:54:58Z mdhughes: I was *shocked* when I first used MS SQL server, it has some weird things, but the ORM covered that, and it just worked, faster and safer than MySQL. 2021-02-06T22:55:24Z mdhughes: But Postgres and sqlite really cover every use I care about. 2021-02-06T22:55:31Z ecraven: well, not hard to be safer than MySQL ;) I've heard MS SQL server now runs on Linux, that might be interesting 2021-02-06T22:55:38Z ecraven: finally get rid of those windows VMs 2021-02-06T22:55:50Z ecraven: yea, I'd agree with that, postgres for actual database server stuff, and sqlite for everything local 2021-02-06T22:56:23Z [d] quit (Remote host closed the connection) 2021-02-06T22:57:04Z mdhughes: I wish Mongo hadn't adopted their stupid licensing scam. I liked it for freezing/unfreezing objects to a DB. 2021-02-06T22:57:11Z [d] joined #scheme 2021-02-06T22:57:20Z ecraven: I've not used mongo myself, but heard a lot of bad things about it ;) 2021-02-06T22:57:30Z mdhughes: It's not a real DB, but it's fantastic for an object store. 2021-02-06T22:57:35Z ecraven: wasamasa: do you have an extended example of a more complicated query? 2021-02-06T22:57:50Z ecraven: I've seen redis used for that, it seems mostly sane 2021-02-06T22:59:46Z mdhughes: SIGH, Inlab, why do you think you can name your Scheme "scheme"? Only Dybvig gets to do that nonsense. https://scheme.inlab.net/reference-manual/general-usage/#running-inlab-scheme-scripts 2021-02-06T23:00:01Z wasamasa: something like `select id, key, value from store where ((key = color and value = red) or (key = color and value = red)) and (key = size and value = small)` 2021-02-06T23:00:12Z wasamasa: basically, I want to do filtering across several sets of attributes 2021-02-06T23:00:24Z wasamasa: same attributes should use or, different combinations of them should use and 2021-02-06T23:00:47Z wasamasa: I've accomplished that with an EAV table and subselects and query generation with SQL 2021-02-06T23:01:12Z wasamasa: the above query would return small things that are either red or blue 2021-02-06T23:01:14Z mdhughes: A single row can't have key=color and key=size… 2021-02-06T23:01:26Z ecraven: but the key has them 2021-02-06T23:01:34Z ecraven: s/key/id/ 2021-02-06T23:01:45Z ecraven: it's not SQL, it's an ordered key-value store 2021-02-06T23:02:03Z mdhughes: OK, a join on those. 2021-02-06T23:02:06Z ecraven: it just seems that syntax from the srfi is way too verbose to actually use 2021-02-06T23:02:19Z wasamasa: it's a start 2021-02-06T23:02:38Z wasamasa: I wrote another version using the underlying JSON file and lots of SRFI-1 stuff 2021-02-06T23:02:40Z wasamasa: it's very slow 2021-02-06T23:02:47Z ecraven: is mosh dormant too? doesn't compile here, and seems to not be updated 2021-02-06T23:03:25Z mdhughes: This, btw, is exactly where Mongo was great. {color:[red, blue], size:small} would match just those objects. 2021-02-06T23:03:38Z wasamasa: well, thanks for the inspiration 2021-02-06T23:03:44Z wasamasa: but I definitely won't use mongo 2021-02-06T23:04:09Z mdhughes: Nobody can use Mongo now. But it's an interesting model to look at if you do want to make a new DB. 2021-02-06T23:04:14Z ecraven: ah, KyotoCabinet, I used that years ago 2021-02-06T23:04:25Z ecraven: that was nice 2021-02-06T23:04:42Z wasamasa: I once wrote a throwaway script using GNU dbm to query gopherholes 2021-02-06T23:04:44Z clone11 joined #scheme 2021-02-06T23:04:45Z ecraven: I have MIT/GNU Scheme ffi code for that somewhere ;) 2021-02-06T23:05:30Z ecraven: ah, come on STklos, don't try to do magic things just because a function is called `main' :-/ 2021-02-06T23:05:35Z wasamasa: lol 2021-02-06T23:06:04Z wasamasa: rudybot: gerbil scheme would like to know your location 2021-02-06T23:06:07Z rudybot: wasamasa: http://www.antipope.org/charlie/pix/gerbil.jpg 2021-02-06T23:06:37Z Zipheir: This is a database model that looks promising: https://www.categoricaldata.net/ 2021-02-06T23:07:38Z Zipheir: I haven't studied the model far beyond Spivak's pullback-query idea. 2021-02-06T23:07:38Z wasamasa: my original plan wasn't doing biological identification, but to do graph databases and sourcecode analysis 2021-02-06T23:08:01Z wasamasa: then amirouche kept insisting that nstore is equivalent to graph databases 2021-02-06T23:08:58Z jcowan: ecraven: Chibi is really just a POC for Unsyntax, which is meant to replace other portable syntax/ilbrary wrappers 2021-02-06T23:09:14Z ecraven: jcowan: I understand that, but it makes running a benchmark for it not very useful 2021-02-06T23:09:23Z ecraven: now coverage, that's different of course ;) 2021-02-06T23:10:44Z jcowan: Ah, right. 2021-02-06T23:11:01Z jcowan: Of course, someone will have to write define-macro and implicit-renaming etc etc tests 2021-02-06T23:11:16Z jcowan: I'm trying to port fast-generic from Chicken to Chibi 2021-02-06T23:11:18Z ecraven: anyway, just got stklos running, I'll call it a night ;) 2021-02-06T23:11:22Z wasamasa: same 2021-02-06T23:11:46Z jcowan: and I'm getting one of those infuriating Chibi errors when you screw up a macro: ERROR on line 291 of file /usr/local/share/chibi/meta-7.scm: cdr: not a pair: () 2021-02-06T23:11:49Z jcowan: or like that 2021-02-06T23:11:55Z jcowan: means some macro is malformed 2021-02-06T23:12:09Z jcowan: s/macro/macro call 2021-02-06T23:12:27Z ecraven: hm.. is there *any* scheme that will give you great quality backtraces? 2021-02-06T23:13:15Z acarrico joined #scheme 2021-02-06T23:13:50Z jcowan: IMO what Chicken does (gives you the last N calls) is in principle the Right Thing in a call/cc language. 2021-02-06T23:14:08Z jcowan: otherwise the backtrace has to be a tree 2021-02-06T23:14:20Z jcowan: The real problem is that chibi's metamacros don't do any error checking 2021-02-06T23:14:38Z jcowan wonders if Chicken and Chibi have incompatible syntax for er-macro-transformer 2021-02-06T23:14:51Z jcowan: I know Larceny does 2021-02-06T23:15:03Z civodul quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-06T23:18:45Z phillbush quit (Quit: Leaving) 2021-02-06T23:24:04Z badkins joined #scheme 2021-02-06T23:33:34Z terpri quit (Remote host closed the connection) 2021-02-06T23:36:06Z terpri joined #scheme 2021-02-06T23:52:54Z Blukunfando joined #scheme 2021-02-06T23:56:37Z foof: jcowan: () is in fact not a pair 2021-02-06T23:56:52Z jcowan: Without doubt. 2021-02-07T00:00:05Z rgherdt quit (Ping timeout: 272 seconds) 2021-02-07T00:00:13Z jcowan: here's the .sld file: 2021-02-07T00:00:22Z jcowan: (define-library fast-generic 2021-02-07T00:00:22Z jcowan: (export define-generic 2021-02-07T00:00:22Z jcowan: generic-error 2021-02-07T00:00:22Z jcowan: define-type) 2021-02-07T00:00:22Z jcowan: 2021-02-07T00:00:22Z jcowan: (import (scheme base)) 2021-02-07T00:00:23Z jcowan: (import (only (chibi) er-macro-transformer)) 2021-02-07T00:00:23Z jcowan: 2021-02-07T00:00:24Z jcowan: (include "fast-generic-compile-time.scm") 2021-02-07T00:00:24Z jcowan: (include "fast-generic.scm") 2021-02-07T00:00:25Z jcowan: ) 2021-02-07T00:00:51Z jcowan: the two included files are properly paren-balanced and all. 2021-02-07T00:03:36Z euandreh quit (Ping timeout: 246 seconds) 2021-02-07T00:05:52Z euandreh joined #scheme 2021-02-07T00:10:12Z richbridger quit (Remote host closed the connection) 2021-02-07T00:10:34Z richbridger joined #scheme 2021-02-07T00:31:35Z Fare joined #scheme 2021-02-07T00:32:21Z Riastradh: foof: it's a pair of parentheses 2021-02-07T00:34:06Z c7d9_ joined #scheme 2021-02-07T00:34:07Z hendursa1 quit (Remote host closed the connection) 2021-02-07T00:35:09Z hendursa1 joined #scheme 2021-02-07T00:37:05Z c7d9 quit (Ping timeout: 240 seconds) 2021-02-07T00:37:48Z badkins quit (Remote host closed the connection) 2021-02-07T00:38:30Z badkins joined #scheme 2021-02-07T00:43:09Z mirrorbird quit (Ping timeout: 272 seconds) 2021-02-07T00:43:09Z badkins quit (Ping timeout: 246 seconds) 2021-02-07T00:58:25Z phillbush joined #scheme 2021-02-07T01:00:32Z badkins joined #scheme 2021-02-07T01:03:58Z mdhughes: (fourofakind? '(())) => #t 2021-02-07T01:07:29Z pankajsg joined #scheme 2021-02-07T01:13:19Z hendursa1 quit (Quit: hendursa1) 2021-02-07T01:13:33Z hendursaga joined #scheme 2021-02-07T01:15:27Z Fare quit (Ping timeout: 260 seconds) 2021-02-07T01:16:56Z badkins quit (Remote host closed the connection) 2021-02-07T01:19:32Z badkins joined #scheme 2021-02-07T01:23:45Z badkins quit (Ping timeout: 240 seconds) 2021-02-07T01:27:18Z Fare joined #scheme 2021-02-07T01:28:25Z acarrico quit (Ping timeout: 240 seconds) 2021-02-07T01:45:12Z skapata quit (Remote host closed the connection) 2021-02-07T01:46:16Z skapata joined #scheme 2021-02-07T01:46:59Z madage quit (Ping timeout: 268 seconds) 2021-02-07T01:54:53Z phillbush quit (Quit: Leaving) 2021-02-07T01:54:57Z seepel joined #scheme 2021-02-07T01:55:29Z seepel quit (Client Quit) 2021-02-07T01:56:20Z seepel joined #scheme 2021-02-07T02:06:08Z raingloom joined #scheme 2021-02-07T02:15:54Z madage joined #scheme 2021-02-07T02:31:14Z greaser|q quit (Changing host) 2021-02-07T02:31:14Z greaser|q joined #scheme 2021-02-07T02:31:16Z greaser|q is now known as GreaseMonkey 2021-02-07T02:46:42Z aquijoule_ joined #scheme 2021-02-07T02:49:31Z richbridger quit (Ping timeout: 265 seconds) 2021-02-07T02:59:40Z Garbanzo joined #scheme 2021-02-07T03:06:58Z marusich quit (Quit: Leaving) 2021-02-07T03:13:00Z madage quit (Remote host closed the connection) 2021-02-07T03:21:22Z madage joined #scheme 2021-02-07T03:26:05Z fantazo quit (Ping timeout: 240 seconds) 2021-02-07T03:56:46Z mzan quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) 2021-02-07T03:58:43Z mzan joined #scheme 2021-02-07T05:04:50Z Fare quit (Ping timeout: 264 seconds) 2021-02-07T05:21:11Z badkins joined #scheme 2021-02-07T05:25:36Z badkins quit (Ping timeout: 240 seconds) 2021-02-07T05:28:46Z gravicappa joined #scheme 2021-02-07T05:30:16Z seepel quit (Ping timeout: 240 seconds) 2021-02-07T05:52:57Z madage quit (Remote host closed the connection) 2021-02-07T05:53:10Z madage joined #scheme 2021-02-07T06:05:22Z seepel joined #scheme 2021-02-07T06:06:15Z badkins joined #scheme 2021-02-07T06:11:04Z badkins quit (Ping timeout: 265 seconds) 2021-02-07T06:12:26Z seepel quit (Ping timeout: 256 seconds) 2021-02-07T07:20:05Z raingloom quit (Ping timeout: 240 seconds) 2021-02-07T07:33:20Z ecraven: wasamasa: do you need a backing triplestore, or is that what the srfis actually do, offer a triplestore backed by a simple okvs or rdbms? 2021-02-07T07:38:47Z cubik joined #scheme 2021-02-07T07:52:00Z ecraven: wasamasa: also, what does `engine-pack' and `engine-unpack' do exactly? 2021-02-07T07:53:11Z codingquark quit (Ping timeout: 272 seconds) 2021-02-07T07:58:57Z seepel joined #scheme 2021-02-07T08:01:09Z retropikzel quit (Ping timeout: 264 seconds) 2021-02-07T08:01:26Z codingquark joined #scheme 2021-02-07T08:03:25Z fantazo joined #scheme 2021-02-07T08:04:57Z Garbanzo quit (Ping timeout: 260 seconds) 2021-02-07T08:07:08Z badkins joined #scheme 2021-02-07T08:08:15Z cubik quit (Quit: Leaving.) 2021-02-07T08:09:46Z seepel quit (Ping timeout: 272 seconds) 2021-02-07T08:11:26Z badkins quit (Ping timeout: 256 seconds) 2021-02-07T08:12:33Z aeth quit (Ping timeout: 264 seconds) 2021-02-07T08:14:10Z seepel joined #scheme 2021-02-07T08:14:24Z aeth joined #scheme 2021-02-07T08:24:36Z seepel quit (Ping timeout: 240 seconds) 2021-02-07T08:36:26Z retropikzel joined #scheme 2021-02-07T08:59:06Z gravicappa quit (Ping timeout: 246 seconds) 2021-02-07T09:00:22Z codingquark quit (Ping timeout: 260 seconds) 2021-02-07T09:02:13Z mangol: mdhughes: ecraven: so Inlab Scheme 5 is coming soon. did you manage to find the subscription link to the mailing list? 2021-02-07T09:02:20Z mangol: ecraven: "is mosh dormant too? doesn't compile here" is dormant, but does compile: https://github.com/scheme-containers/mosh 2021-02-07T09:02:26Z mangol: ecraven: "STklos, don't try to do magic things just because a function is called `main'" --> STklos is actively maintained, maintainers are very helpful, please report all issues at https://github.com/egallesio/STklos 2021-02-07T09:02:32Z mangol: ecraven: "is there *any* scheme that will give you great quality backtraces?" not that i know of. better error messages in scheme would be a much needed topic for a research paper or few. i haven't found any so far. 2021-02-07T09:02:41Z mangol: ecraven: "maybe I should at least add some caveats for abandoned implementations." we should think about how to present unmaintained implementations on scheme.org. many/most of them still work, but obviously library support and the like is lacking. 2021-02-07T09:03:02Z wasamasa: ecraven: I want either a graph database or triple store or something holding JSON objects to store ontological data 2021-02-07T09:03:35Z wasamasa: ecraven: the SRFI offers a nstore (triples, quads, whatever you wish for) on top of an okvs 2021-02-07T09:04:05Z wasamasa: ecraven: packing and unpacking converts scheme objects to bytevectors and back because an okvs only deals with bytevectors 2021-02-07T09:07:50Z mario-goulart: mangol: error messages of CHICKEN code compiled with -d3 -O0 are not too terrible. 2021-02-07T09:08:29Z hendursa1 joined #scheme 2021-02-07T09:09:01Z mangol: mario-goulart: thanks, sounds very good. i haven't tried those flags. 2021-02-07T09:09:19Z wasamasa: it's a bit annoying to recompile all the dependencies with these flags, but hey 2021-02-07T09:09:39Z wasamasa: -:a100 is another lifesaver if the default call trace size is too small 2021-02-07T09:09:58Z mario-goulart: Another thing that might be useful sometimes is the -:a runtime parameter. is the number of lines of backtrace you want. 2021-02-07T09:10:10Z mario-goulart: Indeed. 2021-02-07T09:10:21Z mangol: are there schemes other than chicken and gambit that have -: flags? 2021-02-07T09:10:49Z amirouche joined #scheme 2021-02-07T09:10:59Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-07T09:11:11Z ManDay joined #scheme 2021-02-07T09:12:36Z mangol: one thing that might help with errors is to mark some macros as "this is such low-level stuff that no-one probably wants to see the expansion, hence show the unexpanded form" 2021-02-07T09:13:59Z mirrorbird joined #scheme 2021-02-07T09:14:05Z mangol: another classic error is "operator is not a procedure", the scheme equivalent of Unix's "invalid argument" :) 2021-02-07T09:14:39Z mangol: that one can probably be improved simply by showing what object that non-procedure operator is 2021-02-07T09:15:21Z codingquark joined #scheme 2021-02-07T09:15:47Z cubik joined #scheme 2021-02-07T09:16:02Z rgherdt joined #scheme 2021-02-07T09:31:54Z badkins joined #scheme 2021-02-07T09:36:33Z badkins quit (Ping timeout: 264 seconds) 2021-02-07T09:50:01Z fantazo: Running the same codebase in kawa scheme, chicken and guile? How many people tried that? 2021-02-07T09:51:52Z wasamasa: it is painful, but it can be done 2021-02-07T09:52:07Z wasamasa: pointless, too 2021-02-07T09:52:36Z fantazo left #scheme 2021-02-07T09:54:19Z cubik quit (Quit: Leaving.) 2021-02-07T09:55:02Z mangol: why is there such a propensity in lisp communities to point out other people's goals are pointless without knowing anything about those goals? 2021-02-07T09:55:30Z wasamasa: look, if you have the choice between getting something done and not getting something done 2021-02-07T09:55:40Z wasamasa: why would you insist on not getting something done (AKA pointless)? 2021-02-07T09:57:26Z mdhughes: benchmarking isn't pointless, but does require some portability. 2021-02-07T09:58:17Z mangol: i don't think improving scheme portability is pointless. i think it's the most essential goal around scheme. 2021-02-07T09:58:26Z wasamasa: if you end up benchmarking what an implementation makes of inefficient, but portable code, whew 2021-02-07T09:58:36Z wasamasa: not terribly representative of that implementation 2021-02-07T09:58:37Z rgherdt quit (Remote host closed the connection) 2021-02-07T09:58:39Z mdhughes: I think a lot of peoples' projects are of no use *to me*, but mine are just screwing around making indie games and tools, so I'm not gonna put a "useless" sticker on most things. 2021-02-07T10:00:13Z mangol: exactly. if someone truly knows all the right opinions to have and the goals to pick in life, that tends to show to outside observers in some reasonably objective way, i.e. that person is considered successful. 2021-02-07T10:01:11Z wasamasa: look at this thing and tell me, is that how you bait someone new to scheme, believing portable code is their number one priority: https://github.com/kanaka/mal/blob/master/impls/scheme/Makefile 2021-02-07T10:01:27Z wasamasa: I wrote this thing and occasionally refer to it when working with other implementations 2021-02-07T10:01:42Z cubik joined #scheme 2021-02-07T10:01:44Z wasamasa: sometimes to https://github.com/kanaka/mal/blob/master/impls/scheme/run as well 2021-02-07T10:04:28Z mangol: it's well known that scheme portability is not easy at the moment. your examples are not too bad. 2021-02-07T10:04:39Z mangol: it can be improved until it is 2021-02-07T10:05:16Z wasamasa: given the existence of implementations like picrin with zero provisions to support loading user-defined libraries, yeah, no 2021-02-07T10:05:20Z wasamasa: I'm pessimistic 2021-02-07T10:05:36Z wasamasa: there isn't even agreement over the file extensions and expected locations for them 2021-02-07T10:06:09Z mangol: this is great. we found the crux of the matter :) it's an optimism vs pessimism debate at bottom. 2021-02-07T10:06:19Z wasamasa: I could probably improve this example by making it C5-exclusive and turning the code into an egg 2021-02-07T10:06:27Z wasamasa: that would eliminate the gnarliest part 2021-02-07T10:07:20Z wasamasa: most r7rs code I've seen is single files 2021-02-07T10:07:46Z wasamasa: the benchmarks/coverage project does some trickery assembling preludes and postludes together into a single file 2021-02-07T10:09:48Z wasamasa: because a multi-file thing is just too painful to get working otherwise and would have excluded implementations like guile before their full r7rs support 2021-02-07T10:10:26Z mangol: there are several things that would be useful to standardize to help with that 2021-02-07T10:11:11Z wasamasa: the standard is intentionally silent on the extensions and paths thing 2021-02-07T10:11:22Z wasamasa: it's not unlike with C implementations 2021-02-07T10:11:30Z mangol: true 2021-02-07T10:11:51Z wasamasa: where an implementation could forego file-backed libraries for embedded usecases 2021-02-07T10:12:01Z mangol: SRFI is a good process for problems of exactly this type 2021-02-07T10:12:07Z wasamasa: in which case a design like picrin does make sense 2021-02-07T10:12:40Z wasamasa: I dunno, SRFI emphasizes the portable implementation bit 2021-02-07T10:12:45Z imode quit (Ping timeout: 240 seconds) 2021-02-07T10:13:03Z wasamasa: it's unlike JEPs and such 2021-02-07T10:13:40Z mangol: that's generally true, but there are some SRFIs that have almost no portable implementation and Arthur happily accepts them as long as the interface is portable 2021-02-07T10:13:52Z mangol: and there are one or two implementations for particular Schemes to point to 2021-02-07T10:14:27Z mangol: SRFI 193 is now in several Schemes and there are no portable parts to the implementation at all 2021-02-07T10:15:16Z wasamasa: I thought more of srfi-22 because it doesn't expose any procedures whatsoever 2021-02-07T10:15:38Z mangol: true, 22 is a classic example 2021-02-07T10:16:55Z mirrorbird quit (Quit: Leaving) 2021-02-07T10:17:01Z mangol: anyway, standardizing things like a manifest file format for packages would be great to do via SRFI. but the problem is so complex that quite a bit of pre-planning and experimental implementation should be done first 2021-02-07T10:19:40Z mangol: scheme is quite a DIY language and will be for a couple more years. i wonder whether there's an effective way to signal that to outsiders in a way that isn't negative 2021-02-07T10:20:07Z civodul joined #scheme 2021-02-07T10:20:08Z mangol: or maybe just keep to ourselves and do good work until less assembly is required 2021-02-07T10:27:23Z mangol: as for implementations with few features like picrin, easy subsetting is one of the main advantages of scheme. but we should find a clear way to indicate how featureful different implementations are 2021-02-07T10:27:41Z mangol: preferably by coming up with some objective criteria 2021-02-07T10:28:45Z mangol: interpreters like lua are successful because they have few features. that makes them easy to drop into any C codebase. picrin is in that neighborhood, as is tinyscheme. 2021-02-07T10:39:36Z wasamasa: hm, how does one do a sort/uniq operation with generators 2021-02-07T10:40:29Z mangol: the worst case is that the last object coming from the generator belongs first in the resulting sequence 2021-02-07T10:40:41Z mangol: so you have to be prepared to buffer the whole sequence 2021-02-07T10:44:03Z skapata quit (Quit: Leaving) 2021-02-07T10:45:53Z mangol: with SRFI 214, you could perhaps add elements from the generator one by one into a flexvector, using binary search to find the right position for each element. binary search would also find duplicates for you. 2021-02-07T10:47:01Z mangol: does that mean the complexity is O(n * log n)? 2021-02-07T10:47:21Z wasamasa: such is sort 2021-02-07T10:47:35Z wasamasa: anyway, I think I'll just let a srfi-69 sort that out for me :P 2021-02-07T10:47:51Z mangol: :D i always use hash tables for uniq too 2021-02-07T10:49:29Z mangol: though it would be useful if scheme had a de facto standard procedure to insert element(s) into a pre-sorted list 2021-02-07T10:49:40Z mangol: i.e. merge 2021-02-07T10:50:37Z mangol: duh, list-merge in SRFI 132 :) 2021-02-07T10:50:43Z mangol: and list-merge! 2021-02-07T10:52:24Z Major_Biscuit joined #scheme 2021-02-07T10:55:36Z amirouche: roger, general major! 2021-02-07T10:55:44Z amirouche: best nick of 2021 2021-02-07T10:58:45Z Major_Biscuit quit (Ping timeout: 240 seconds) 2021-02-07T10:59:22Z wasamasa: do you happen to have a copy of https://hyper.dev/blog/sparql-to-nstore.html around? 2021-02-07T10:59:46Z wasamasa: oh and please fix hyper.dev to have actually working links on https://hyper.dev/639e4206448b2bed3d926601bec5d736.html 2021-02-07T11:00:08Z wasamasa: for example I can't click on hoply's github URL 2021-02-07T11:17:12Z amirouche: wasamasa: https://hyper.dev/2019-07-07-SPARQL-to-Scheme-Generic-Tuple-Store-nstore-e9ff38ee617b49b1817b9cc332b597f5.html 2021-02-07T11:17:13Z rudybot: https://teensy.info/d47ZffYn7g 2021-02-07T11:17:23Z amirouche: i am working on fixing the links 2021-02-07T11:17:31Z amirouche: (sorry, the rendering of the article is not perfect) 2021-02-07T11:17:40Z wasamasa: thank you 2021-02-07T11:18:05Z wasamasa: have you considered to make old links work, no matter what? 2021-02-07T11:18:25Z wasamasa: if you're going to suggest people to make bookmarks, it's rather pointless if the bookmarks stop working 2021-02-07T11:18:29Z Major_Biscuit joined #scheme 2021-02-07T11:21:08Z amirouche: hmm, I have a big problem with that 2021-02-07T11:21:40Z wasamasa: yes, it's annoying and ugly to put rewrite rules into your nginx config 2021-02-07T11:22:52Z wasamasa: but it makes people happy if stuff just keeps working 2021-02-07T11:28:00Z mangol: in practice, it's probably impossible to maintain a long-lived website without resorting to some redirects eventually. it would be fun to know what percentage of all web URLs are redirects; probably substantial. 2021-02-07T11:29:27Z wasamasa: anyway, thanks for the link, I guess you didn't figure out the uniq/sort parts either 2021-02-07T11:30:48Z amirouche: uniq and sort, in the general case, requires to consume the generator. 2021-02-07T11:31:02Z amirouche: so possibly having a lot of data in memory. 2021-02-07T11:31:34Z amirouche: re sort: if srfi-168 items are not compressed, they are returned in-order. 2021-02-07T11:32:19Z amirouche: re uniq: it does not require to have everything in memory, but at least keep track of what was already generated in a set (so it is not the full data set that is in memory) 2021-02-07T11:32:51Z badkins joined #scheme 2021-02-07T11:32:55Z wasamasa: I ended up using a srfi-69 hash table for that 2021-02-07T11:35:28Z wasamasa: the other thing I wondered about is how one would make more complicated tests than with nstore-where 2021-02-07T11:35:40Z wasamasa: like by using a custom predicate instead of this pattern matching thing 2021-02-07T11:37:25Z amirouche: the best one can do, is lookup the prefix of a tuple item like (nstore-where (list 'key 'value (var 'firtname (prefix "amir")))) could yield '((firstnam . amirouche)) 2021-02-07T11:37:35Z amirouche: otherwise, one needs to create compound values. 2021-02-07T11:37:39Z badkins quit (Ping timeout: 256 seconds) 2021-02-07T11:37:49Z wasamasa: I will also need some join/subselect-like facility, yes 2021-02-07T11:38:12Z wasamasa: but I thought that nstore-query basically does that 2021-02-07T11:38:15Z amirouche: yes 2021-02-07T11:38:23Z amirouche: nstore-query does do joins. 2021-02-07T11:39:09Z amirouche: same you can filter with a predicate with something like (gfilter predicate? (nstore-query ...)) but in that case the complexity is not O(n log n) but depends on the number of items inside (nstore-query) 2021-02-07T11:39:48Z amirouche: also, the order in which patterns appear inside nstore-where / nstore-query does yield different complexity / spent time. 2021-02-07T11:40:02Z amirouche: most precise pattern must come first. 2021-02-07T11:40:45Z amirouche: if for instance one does (nstore (var 'uid) (var 'key) (var 'value) and then compose with another nstore-where, it will scan the whole database. 2021-02-07T11:41:01Z amirouche: there is execution planing or optimization 2021-02-07T11:41:05Z amirouche: there is NO execution planing or optimization 2021-02-07T11:43:00Z badkins joined #scheme 2021-02-07T11:44:16Z badkins quit (Remote host closed the connection) 2021-02-07T11:44:49Z wasamasa: relevant: https://x32.be/map-reduce.png 2021-02-07T11:50:00Z amirouche: i like that :) 2021-02-07T11:50:14Z amirouche: btw notion html is the worst unsemantic html I have seen to data. 2021-02-07T11:51:16Z amirouche: re my blog link are not because notion.so think it is better to use div to create a table, the cell alone that contains the url, has the following schema div > div > div > span 2021-02-07T11:51:28Z amirouche: inside the span there is text node with the url in plaintext :| 2021-02-07T11:52:08Z badkins joined #scheme 2021-02-07T11:52:09Z wasamasa: isn't notion the thing charging you money per text node and not working without internet 2021-02-07T11:52:14Z amirouche: notion raised $50 millions 6 month ago. 2021-02-07T11:52:20Z amirouche: wasamasa: yes 2021-02-07T11:52:24Z wasamasa: it's like the worst possible note taking solution one can choose 2021-02-07T11:52:33Z wasamasa: run 2021-02-07T11:52:47Z wasamasa: no wonder your shit is permanently broken 2021-02-07T11:52:59Z amirouche: this is recent ;) 2021-02-07T11:53:06Z wasamasa: it's a recurring pattern 2021-02-07T11:53:12Z amirouche: also they stream / lazily load pages for some reason... 2021-02-07T11:53:34Z amirouche: ah yes, my blog is always broken for different reasons, but nowadays it is because of notion 2021-02-07T11:53:49Z amirouche: lazily load content of pages... 2021-02-07T11:54:23Z amirouche: it might be a workaround to avoid people sraping the pages. 2021-02-07T11:54:42Z amirouche: also you have to pay to be indexed by search engine x) 2021-02-07T11:54:55Z wasamasa: I'm not sure whether that's an antifeature 2021-02-07T11:56:55Z badkins quit (Ping timeout: 256 seconds) 2021-02-07T12:00:30Z mangol: it's perplexing how many of the last decade's innovations in software have been about taking something we could already do in a fast and reliable way on our personal computers 2021-02-07T12:01:07Z mangol: and making a slow, unreliable, inflexible version of the same thing. but one that we can also run on our cell phones and exchange things with other people 2021-02-07T12:01:34Z mangol: and then we discovered that most of these "exchanges" are cat pictures and yelling at strangers :D 2021-02-07T12:02:34Z mangol: but also inspiring, because if we just take the fast, reliable, flexible stuff we had before, and invent an efficient, reliable general-purpose peer-to-peer network to put under it, we can have the best of the old and new tech 2021-02-07T12:04:47Z mangol: it would be crucially important to find a simple, effective interface between applications and the peer-to-peer network. once that interface is solid, the apps and the network can evolve independent of each other. 2021-02-07T12:05:32Z mangol: basically we need a next-generation replacement for "with-input-from-file" and "with-output-to-file" that work with a decentralized planet-wide file system instead of a local one 2021-02-07T12:05:54Z amirouche: The new trend in commercial endevors is artificial scarcity. 2021-02-07T12:06:18Z amirouche: I do not like that word "dumb" but it is a "dumbed down" version of what notion can / shall be. 2021-02-07T12:06:33Z Major_Biscuit quit (Ping timeout: 264 seconds) 2021-02-07T12:07:03Z amirouche: also, someone that pretend to have built notion, challenged by email about my okvs / nstore work. 2021-02-07T12:07:33Z amirouche: He said he wanted to discuss nstore, I replied, then no more "great conversation" 2021-02-07T12:07:40Z amirouche: I guess he got the answers he wanted. 2021-02-07T12:08:27Z wasamasa: wat 2021-02-07T12:08:55Z wasamasa: you have notes online without any indexing, someone found them and asked you about it? 2021-02-07T12:09:31Z wasamasa: is that the actual reason for notion's business model, learning of promising ideas in other people's notes? 2021-02-07T12:10:04Z mangol: amirouche: completely agree on artificial scarcity. and yes, the spying. 2021-02-07T12:10:29Z mangol: the spying is impossible to counter without encrypted peer-to-peer traffic 2021-02-07T12:10:36Z mangol: in the long term 2021-02-07T12:11:01Z wasamasa: there is zero reason for your note taking to be online only 2021-02-07T12:11:02Z mangol: governments already hate cryptocurrency 2021-02-07T12:11:10Z amirouche: wasamasa: idk, but maybe, a lot of nstore is public, but I have private notes too in notion that are not public. 2021-02-07T12:13:06Z amirouche: also, their question was seemingly unrelated to notion, but in fact related nonetheless (plus there was a layer of p2p good hearth) 2021-02-07T12:23:47Z Major_Biscuit joined #scheme 2021-02-07T12:24:33Z amirouche quit (Ping timeout: 264 seconds) 2021-02-07T12:42:16Z Major_Biscuit quit (Ping timeout: 240 seconds) 2021-02-07T12:43:00Z mirrorbird joined #scheme 2021-02-07T12:46:16Z mdhughes: That seems dangerous. I keep my own "private" (but not illegal or anything dangerous) stuff in Dropbox so all my devices can sync it; mostly edit with Editorial on iOS, any text editor elsewhere. Actually private I keep on my home computer only. Everything is Markdown. Publishing goes into WordPress, with JetPack's Markdown editor. 2021-02-07T12:47:06Z mdhughes: I'm reasonably sure Dropbox won't search or give out content without a search warrant, which is probably fine for what I let them hold. 2021-02-07T12:51:45Z mdhughes: Also 1password and most other synced password managers have private notes, and your entire data store is encrypted by a master password. 2021-02-07T13:10:23Z badkins joined #scheme 2021-02-07T13:14:25Z badkins quit (Ping timeout: 240 seconds) 2021-02-07T13:17:20Z phillbush joined #scheme 2021-02-07T13:37:59Z ManDay quit (Quit: WeeChat 3.0) 2021-02-07T13:47:01Z siraben: i used to use 1password but switched to keepassxc + nextcloud, can't trust those proprietary providers 2021-02-07T13:54:09Z amirouche joined #scheme 2021-02-07T14:02:33Z badkins joined #scheme 2021-02-07T14:04:22Z rgherdt joined #scheme 2021-02-07T14:06:31Z amirouche: wasamasa: I could not properly fix the urls (https://hyper.dev/639e4206448b2bed3d926601bec5d736.html), but the old pages are back (copy pasted from the old blog) 2021-02-07T14:06:47Z amirouche: I need to make replacing / moving away from notion my priority. 2021-02-07T14:07:09Z badkins quit (Ping timeout: 265 seconds) 2021-02-07T14:25:36Z raingloom joined #scheme 2021-02-07T14:45:57Z raingloom quit (Ping timeout: 246 seconds) 2021-02-07T14:47:46Z acarrico joined #scheme 2021-02-07T15:18:17Z mdhughes: The problem with keepass* is it only runs the actual version on desktop, mobile is 3rd party or different versions, you can't trust that. 1password has a financial incentive to produce one secure application for every customer. And I don't think it has secure notes? 2021-02-07T15:18:32Z mdhughes: s/it has/KP has/ 2021-02-07T15:30:08Z c7d9 joined #scheme 2021-02-07T15:30:45Z c7d9_ quit (Ping timeout: 246 seconds) 2021-02-07T15:34:45Z c7d9 quit (Ping timeout: 264 seconds) 2021-02-07T15:35:08Z c7d9 joined #scheme 2021-02-07T15:36:50Z pinoaffe: mdhughes: I mean, "3rd party" is not really that much of an issue when both are audited open source projects, right? 2021-02-07T15:37:31Z pinoaffe: I used to run keepass until one day it borked and lost some data, I switched to pass + git 2021-02-07T15:45:09Z mdhughes: Another thing we need in Scheme libraries, encryption. 2021-02-07T15:46:50Z edgar-rft: what about R7RS-encrypted? pay bitcoin to read it 2021-02-07T15:46:53Z mdhughes: I recently had to fight with some JS crypto based on a Java lib, based on an old C lib. So either I should FFI to the C lib, or add yet another in that stupid chain of bugs. 2021-02-07T15:49:14Z mdhughes: CHICKEN, to its credit, does have a couple of encryption eggs. 2021-02-07T15:49:56Z badkins joined #scheme 2021-02-07T15:53:53Z mirrorbird quit (Remote host closed the connection) 2021-02-07T15:56:52Z madage quit (Remote host closed the connection) 2021-02-07T15:57:10Z madage joined #scheme 2021-02-07T16:11:17Z Riastradh: Someone^TM should write libsodium.scm 2021-02-07T16:11:56Z aeth quit (Ping timeout: 240 seconds) 2021-02-07T16:14:13Z aeth joined #scheme 2021-02-07T16:14:57Z mangol: how complex are those crypto APIs? bytevectors in, bytevectors out? 2021-02-07T16:16:28Z mangol: crypto could be (and has been) implemented in pure scheme for fast schemes, but ensuring secret data vanishes from a GC'ed heap is a problem where seemingly no prior art exists 2021-02-07T16:16:35Z wasamasa: amirouche: thanks 2021-02-07T16:17:03Z mdhughes: Mostly just bytevectors and math, but the problem is getting a high-quality random number source. 2021-02-07T16:17:09Z wasamasa: amirouche: I hope I'll figure out how to do a more complicated nstore query using multiple conditions, probably by doing several queries instead 2021-02-07T16:17:42Z mangol: mdhughes: don't libsodium and the like find their own entropy sources internally using platform-dependent #ifdef's? 2021-02-07T16:18:21Z mdhughes: Well if it's scheme you can't just hope someoene else did that work for you. 2021-02-07T16:19:05Z wasamasa: amirouche: one of the most basic things I fail to understand is, how would I select just a single field from the triple 2021-02-07T16:19:23Z raingloom joined #scheme 2021-02-07T16:19:29Z wasamasa: amirouche: the examples I've seen so far either use (nstore-var 'foo) or the literal value, but there doesn't seem to be a don't care option 2021-02-07T16:19:33Z mangol: mdhughes: right, if implementing in pure scheme 2021-02-07T16:19:37Z mangol: for GCing secrets, some Scheme heaps support still (i.e. immovale) objects, especially for FFI. a secret bytevector could be an immovable bytevector that is explicit_bzero()ed when a dynamic extent is exited 2021-02-07T16:19:45Z mangol: *immovable 2021-02-07T16:20:46Z mangol: chez weak pairs return #!bwp objects when you try to access them after target object has been GCed; same could be used for secrets that have been erased 2021-02-07T16:22:38Z mdhughes: It's good to clear those buffers ASAP, but generally if someone's running on the same machine you're already screwed. 2021-02-07T16:23:02Z mdhughes: The big concern is data-at-rest or over-the-wire encryption. 2021-02-07T16:23:52Z mangol: crash dumps of program memory may become data-at-rest or over-the-wire :) erasing helps with that, though there's likely to be other sensitive data in them. 2021-02-07T16:24:19Z mdhughes: Don't crash in your crypto code! 2021-02-07T16:25:12Z mangol: if you don't have bytevectors that are guaranteed to be erased when leaving a dynamic extent, crashes in other code have the same effect 2021-02-07T16:29:17Z mangol: anyway, it would be neat if we could have acceptably-fast crypto in pure scheme provided that erasing and high quality randomness can be arranged 2021-02-07T16:29:56Z mangol: not sure if anything scheme-specific can or should be done to thwart side channel attacks 2021-02-07T16:31:23Z mangol: another option is to define a tiny sublanguage of scheme as a SRFI where we can only do basic arithmetic and bitwise operations on vectors of fixnums or bytes 2021-02-07T16:31:40Z mangol: Emacs has long had such a sublanguage for character encoding and decoding. i don't remember its name 2021-02-07T16:32:14Z mangol: so lispy syntax, but easy to compile to fast native code or C using a little dedicated compiler 2021-02-07T16:32:57Z perdent joined #scheme 2021-02-07T16:33:24Z perdent: Here is a challenge I made 2021-02-07T16:33:25Z perdent: 0x1000 2021-02-07T16:33:25Z perdent: The goal of the challenge is to decrypt/retreieve the flag. 2021-02-07T16:33:25Z perdent: Let me know what you think of the challenge and if you are able to solve it, I would also like some feedback about it. 2021-02-07T16:33:25Z perdent: chall.py: https://0bin.net/paste/6Vp1Ol8X#63MCiPitY2Wwa61IlPKm01m0ehLtHDkLfTLajZfWcLd 2021-02-07T16:33:25Z perdent: output: https://0bin.net/paste/rla4muBN#NQ5V-chtiLLeXavpa4AXYcs5K21LrduF0OpyY77oZm+ 2021-02-07T16:33:29Z amirouche: wasamasa: yes you should use nstore-var in the field you want to retrieve 2021-02-07T16:33:43Z wasamasa: what about the fields I don't want to retrieve though? 2021-02-07T16:34:23Z amirouche: when you use nstore-query with nstore-where it will match and added matched values to variables in the hashmap 2021-02-07T16:34:25Z wasamasa: perdent: you're on the wrong channel for that 2021-02-07T16:35:00Z amirouche: I think the answer, is if you do not care about a variable, do not put it in nstore-where, or you can not ignore it. 2021-02-07T16:35:26Z wasamasa: I'm struggling to understand how exactly nstore-query, nstore-from and nstore-where play together 2021-02-07T16:35:42Z wasamasa: it feels like SICP to get incomprehensible errors from combining them 2021-02-07T16:35:56Z mangol: the emacs sublanguage is called CCL; help for the macro `define-ccl-program` has a description of the language 2021-02-07T16:36:07Z wasamasa: https://emacsninja.com/posts/code-conversion-language.html 2021-02-07T16:36:44Z wasamasa: finite state transducers 2021-02-07T16:37:33Z amirouche: (nstore-query x y z ...) will produce a stream of hashmap from X, then this hasmap bindings variable to values, will complete the pattern of Y with the known variables and execute that pattern produced from Y against the database, and so forth 2021-02-07T16:38:09Z amirouche: the first where clause X, will create hashmap with variables found in X. 2021-02-07T16:38:28Z amirouche: I do not know about Finite State transducers. 2021-02-07T16:38:37Z wasamasa: that's what CCL is 2021-02-07T16:38:51Z wasamasa: a tiny domain specific VM 2021-02-07T16:39:01Z amirouche: the weird errors comes from the use of generator (lazy behavior) 2021-02-07T16:39:23Z amirouche: s/generator/generators/ 2021-02-07T16:39:33Z amirouche: if you make it so okvs-range returns a list, it is easier. 2021-02-07T16:40:20Z mangol: lol the slogan for Lisp Flavored Erlang is ""Taking the syntax out of distributed systems programming" 2021-02-07T16:40:31Z amirouche: (I mean, I did not see the errors you talk about, on my side generators are the source of confusion, not only with okvs or nstore) 2021-02-07T16:42:31Z wasamasa: I'm not sure where exactly they originate from, call trace comes from lmdb :< 2021-02-07T16:43:15Z amirouche: I am still busy the coming week, but I can look at the code at some point. 2021-02-07T16:43:31Z amirouche: replacing generators with lists is a big job 2021-02-07T16:43:53Z amirouche: if you change okvs-range to return list, a lot of things will change 2021-02-07T16:44:21Z wasamasa: it would make debugging a lot easier for sure 2021-02-07T16:45:28Z perdent: Whats a good channel for it? 2021-02-07T16:45:34Z wasamasa: ##security 2021-02-07T16:45:41Z wasamasa: ##crypto 2021-02-07T16:45:51Z wasamasa: #offsec 2021-02-07T16:46:18Z xelxebar quit (Remote host closed the connection) 2021-02-07T16:46:21Z wasamasa: CTFs have very little to do with programming language theory 2021-02-07T16:46:38Z xelxebar joined #scheme 2021-02-07T16:46:38Z wasamasa: and honestly, your challenge looks like yet another iteration of why RSA sucks 2021-02-07T16:47:06Z wasamasa: it's like kicking a baby in the teeth 2021-02-07T16:47:13Z wasamasa: bad taste 2021-02-07T16:55:19Z wasamasa: amirouche: the error seems to happen if I use nstore-from with three variables and pipe that into nstore-where 2021-02-07T16:56:08Z amirouche: that is a problem in the procedure that select the subspace, give a sec 2021-02-07T16:56:40Z wasamasa: if I use two variables and a literal, everything is fine 2021-02-07T16:56:47Z wasamasa: if I use nstore-from only, it's fine as well 2021-02-07T16:57:36Z amirouche: wasamasa: do you have this ooops at https://github.com/scheme-requests-for-implementation/srfi-168/blob/master/srfi/168.sld#L271 2021-02-07T16:57:48Z wasamasa: nope 2021-02-07T16:58:44Z amirouche: In the code of the implementation you use, do you have a call to error in that case? 2021-02-07T16:59:25Z amirouche: oops is not helpful, I did this to avoid full database scan. 2021-02-07T16:59:33Z wasamasa: lol 2021-02-07T17:00:08Z amirouche: you may replace (error "ooops") with (car INDICES) where INDICES is the variable passed as argument of the procedure pattern->index 2021-02-07T17:00:39Z amirouche: (that is not the variable `indices` used in the named let, which is empty at that point) 2021-02-07T17:01:20Z amirouche: that will allow nstore-from with only variables, and will yield everything inside nstore (which in fact is useful during dev) 2021-02-07T17:04:19Z wasamasa: let me give that a try 2021-02-07T17:04:21Z Fare joined #scheme 2021-02-07T17:04:42Z wasamasa: it's cute how you're thinking so much about performance while advocating a portable implementation of a database 2021-02-07T17:05:09Z amirouche: well, 2021-02-07T17:05:13Z amirouche: nvm 2021-02-07T17:06:16Z wasamasa: wait, how is (car indices) supposed to work if indices is null 2021-02-07T17:06:47Z wasamasa: that will just give me a different error, assuming it even bubbles up 2021-02-07T17:06:56Z wasamasa: my working theory is that some lmdb transaction thing swallows errors 2021-02-07T17:10:16Z amirouche: (car indices) of the original indices variable, not the one bound inside named-let. 2021-02-07T17:10:50Z wasamasa: I see 2021-02-07T17:11:10Z perdent: (00:44:55) wasamasa: and honestly, your challenge looks like yet another iteration of why RSA sucks 2021-02-07T17:11:10Z perdent: Sucks how? 2021-02-07T17:11:31Z wasamasa: I'd like to elaborate on it, but this is the wrong channel 2021-02-07T17:11:42Z wasamasa: please go away if you don't have anything scheme-related to say 2021-02-07T17:11:55Z wasamasa: I am on all the channels I've suggested 2021-02-07T17:12:21Z skapata joined #scheme 2021-02-07T17:13:11Z ecraven: hm.. lmdb's C API seems not as nice as kyoto cabinet's ;) 2021-02-07T17:13:39Z wasamasa: I'll learn all about that if amirouche manages convincing me that nstore is worth using 2021-02-07T17:14:14Z wasamasa: so far I'm just trying to make it work for a non-trivial query and if I fail at that, I guess some random java graph/rdf project it is instead 2021-02-07T17:14:23Z amirouche: it depends what you are doing, but if you want to do the tag matching you described previsouly, yes it is a good use case. 2021-02-07T17:14:53Z wasamasa: I have my doubts since it doesn't look like the nstore and generators API is sufficiently expressive compared to sparql 2021-02-07T17:15:01Z ecraven: amirouche: do I understand correctly that one of the srfis abstracts over any okvs (like lmdb and kyoto cabinet), and the other then implements a triplestore on top of that abstraction? 2021-02-07T17:15:14Z amirouche: ecraven: yes 2021-02-07T17:15:56Z amirouche: ecraven: except there is no cursor api with next and previous. 2021-02-07T17:16:21Z amirouche: you have to use okvs-range instead. 2021-02-07T17:17:01Z amirouche: wasamasa: is there a public repository with code I can try? 2021-02-07T17:17:26Z wasamasa: no, there isn't and honestly, I doubt it would even run considering how many adjustments I had to make to get srfi-167 and srfi-168 run 2021-02-07T17:18:01Z mangol: wasamasa: please avoid telling people to go away if they don't cause any harm besides pasting a few lines about RSA 2021-02-07T17:18:17Z amirouche: I keep thinking we should have CI with SRFI 2021-02-07T17:18:26Z mangol: the rest of us are off topic half the time as well 2021-02-07T17:18:28Z wasamasa: CI is no solution to sloppy writing 2021-02-07T17:18:42Z wasamasa: examples inside a SRFI document aren't run in CI 2021-02-07T17:18:42Z Zipheir: amirouche: It's not going to help if the idea is garbled. 2021-02-07T17:18:45Z wasamasa: they're part of prose 2021-02-07T17:18:54Z ecraven: what I think would really help is way more examples in every SRFI 2021-02-07T17:19:19Z ecraven: also, some SRFIs I've read recently clearly haven't been proof-read at all.. procedure headers have different arguments than are described in the text, obvious things like that 2021-02-07T17:19:19Z Zipheir: You can't test English! 2021-02-07T17:19:25Z wasamasa: exactly 2021-02-07T17:19:34Z ecraven: and some of the explanations are just .. not very useful unless you already *know* exactly what the function does 2021-02-07T17:19:41Z wasamasa: porting a SRFI to work on another scheme system is a great way to test it 2021-02-07T17:19:47Z wasamasa: very labor-intensive though 2021-02-07T17:20:20Z Zipheir: It depends on the SRFI. Some complex ones are very easy to port, e.g. SRFI 135. 2021-02-07T17:20:40Z wasamasa: the problem I see with that is getting people willing to do that for you while the SRFI isn't finalized yet 2021-02-07T17:21:15Z ecraven: just write it portably in the first place :D :P 2021-02-07T17:21:24Z Zipheir: In reality, it falls to the SRFI authors to promote, i.e. to port, their work. 2021-02-07T17:21:43Z amirouche: ... and add network sockets... 2021-02-07T17:21:52Z Zipheir: Sockets are hard! 2021-02-07T17:21:59Z amirouche: ... and portable C FFI... 2021-02-07T17:22:09Z Zipheir: ... is nigh impossible. 2021-02-07T17:22:29Z amirouche: then it will take time. 2021-02-07T17:23:04Z wasamasa: amirouche: FWIW, (car indices*) doesn't fix the error, so something else is going on 2021-02-07T17:23:10Z amirouche: :/ 2021-02-07T17:23:19Z wasamasa: I've renamed the original indices argument to indices* to test your suggestion 2021-02-07T17:28:12Z Zipheir: amirouche: The thing is, as Ken or Dennis said, "Sometimes it's possible for something to fill a vaccuum and still suck." 2021-02-07T17:29:33Z Zipheir: amirouche: Everyone knows about sockets, and their are dozens of Scheme approaches to them. The challenge is *not* to "provide sockets"; it's to devise something clearly explained, usable, and based on existing work so that people want to undertake the porting effort. 2021-02-07T17:29:54Z wasamasa: it doesn't help very few people understand BSD sockets 2021-02-07T17:29:56Z Zipheir: It's not about testing, IMHO. It's about design and quality. 2021-02-07T17:30:08Z Zipheir: Oops, s/their/there/ 2021-02-07T17:32:33Z amirouche: clearly explained like srfi-167 and srfi-168 :P /s 2021-02-07T17:32:52Z amirouche: at least with sockets, you do no need to explain too much the purpose 2021-02-07T17:34:02Z Zipheir: SRFI 1 is a good example of this. It's not as though there weren't many list libraries floating around the Lisp worlds. That SRFI, however, is very clearly articulated, covers a lot of ground, and provides a simple-to-read and high-quality implementation. 2021-02-07T17:34:53Z Zipheir: amirouche: I can't say I find those SRFIs easy to understand. I've tried a few times. 2021-02-07T17:35:57Z Zipheir: For example, the object/process/whatever called a "transaction" is used all over SRFI 167, but is never defined, AFAICT. 2021-02-07T17:36:55Z Zipheir: It's quite possible that I'm not learned enough in database lore to be able to make sense of this stuff, but then, the target audience for SRFIs is, I suppose, plain old Schemers. 2021-02-07T17:37:41Z amirouche: transactions allow to apply all changes and rollback all changes in case of errors. 2021-02-07T17:37:53Z amirouche: all changes made in the span of the transaction. 2021-02-07T17:38:25Z amirouche: that was a goal especially of SRFI-168, to re-use lots of other SRFI. 2021-02-07T17:38:30Z Zipheir: OK, but SRFI 167 never explains that. 2021-02-07T17:38:39Z mangol: AFAICT our community doesn't have the time and energy to make SRFIs substantially easier to understand than they already are 2021-02-07T17:39:05Z mangol: oversights have happened, and will continue to happen 2021-02-07T17:39:46Z amirouche: And, to weight mangol point of view, even if I did not rush into SRFI process, today, I would have made difference choices about the design. 2021-02-07T17:40:04Z mangol: to some degree it's caused by the SRFI process requiring too high a level of perfection, to another degree it's just limited energy no matter what process we use 2021-02-07T17:40:05Z amirouche: especially SRFI-167. 2021-02-07T17:41:53Z amirouche: did the chicken C FFI API change between C4 and C5? 2021-02-07T17:45:10Z amirouche: apparantly the answer is no: https://wiki.call-cc.org/porting-c4-to-c5#linking-to-external-libraries 2021-02-07T17:45:44Z klovett quit (Remote host closed the connection) 2021-02-07T17:46:25Z klovett joined #scheme 2021-02-07T17:59:06Z badkins quit (Remote host closed the connection) 2021-02-07T17:59:43Z badkins joined #scheme 2021-02-07T18:04:24Z badkins quit (Ping timeout: 246 seconds) 2021-02-07T18:07:05Z Fare quit (Ping timeout: 258 seconds) 2021-02-07T18:18:38Z Fare joined #scheme 2021-02-07T18:24:03Z amirouche1 joined #scheme 2021-02-07T18:27:33Z amirouche quit (Ping timeout: 264 seconds) 2021-02-07T18:28:06Z wasamasa: there have been some minor changes, like allowing to pass int64 types in C5 thanks to the numeric tower no longer being an optional egg to use 2021-02-07T18:29:02Z amirouche1: tx 2021-02-07T18:29:10Z amirouche1 quit (Quit: WeeChat 2.8) 2021-02-07T18:30:10Z Riastradh: Need constant-time arithmetic, not something I've ever seen advertised in a Lisp system. 2021-02-07T18:30:44Z klovett quit (Remote host closed the connection) 2021-02-07T18:30:50Z amirouche joined #scheme 2021-02-07T18:30:50Z wasamasa: at least there's no devilish compiler trying to thwart your carefully written code 2021-02-07T18:30:55Z Riastradh: In MIT Scheme, I added a primitive (get-entropy bv) a few years ago that fills a 32-byte vector with uniform random output from the OS. 2021-02-07T18:31:02Z klovett joined #scheme 2021-02-07T18:31:40Z Riastradh: (anyone wants to turn that into a SRFI, feel free) 2021-02-07T18:32:36Z Riastradh: wasamasa: Why, because there are no devilishly smart Lisp compilers, only dumb ones? 2021-02-07T18:33:02Z wasamasa: I'm not aware of any abusing undefined behavior to the degree of gcc and friends 2021-02-07T18:33:12Z Riastradh: undefined behaviour is not the issue 2021-02-07T18:33:22Z Riastradh: undefined behaviour is not relevant at all here 2021-02-07T18:34:02Z wasamasa: what was the issue then with the ssh entropy thing on debian? 2021-02-07T18:34:21Z Riastradh: So back in 2006... 2021-02-07T18:37:18Z Riastradh: OpenSSL has a function RAND_add(buf, nbytes) which hashes data into the PRNG that is used to derive keys. 2021-02-07T18:39:43Z Riastradh: OpenSSL also has a function RAND_bytes(buf, nbytes) which draws data from the PRNG and stores them in buf. 2021-02-07T18:40:19Z Riastradh: These functions both had a line that reads: MD_Update(&m,buf,j) 2021-02-07T18:41:41Z Riastradh: (The code has since changed, but you can see what the looked like at the time here: https://git.openssl.org/?p=openssl.git;a=blob;f=crypto/rand/md_rand.c;h=6e10f6ef676184ffb7d18b2fb55641dbb7bbe0b6;hb=f254b540b8746c24bd0bb2a5249c7b30004a42f2 ssleay_rand_add is the implementation of the RAND_add API function, and ssleay_rand_bytes implements RAND_bytes.) 2021-02-07T18:41:41Z rudybot: https://teensy.info/wQgLNJIQPm 2021-02-07T18:42:41Z Riastradh: Inside RAND_add, this line MD_Update(&m,buf,j) is the only way that data from the specified buf -- which contains, e.g., output of /dev/urandom -- actually affects the PRNG. 2021-02-07T18:43:21Z Riastradh: Inside RAND_bytes, the line MD_Update(&m,buf,j) reads from the user's output buffer -- which is likely to contain uninitialized garbage. It doesn't _hurt_ to hash that into the PRNG, but it also isn't security-critical, and it is technically undefined behaviour. 2021-02-07T18:44:15Z Riastradh: So the call in RAND_bytes is #ifndef PURIFY, which means it gets skipped if OpenSSL is built for the context of checking for the undefined behaviour of reading uninitialized buffers. 2021-02-07T18:44:55Z Riastradh: (e.g., with valgrind) 2021-02-07T18:45:24Z amirouche quit (Quit: WeeChat 2.8) 2021-02-07T18:45:25Z Riastradh: That is, if you build OpenSSL with PURIFY, then you skip the undefined behaviour, and everything is fine. 2021-02-07T18:46:12Z Riastradh: A Debian developer ran some applications under valgrind, and found that valgrind was highlighting problems with them -- these _applications_ were trying to use uninitialized memory, and the specific place where the uninitialized memory got used was the MD_Update(&m,buf,j) line in RAND_add. 2021-02-07T18:46:19Z Riastradh: This is because the _applications_ were doing something like: 2021-02-07T18:46:30Z Riastradh: unsigned char buf[32]; /* gimme an uninitialized stack buffer */ 2021-02-07T18:46:35Z Riastradh: RAND_add(buf, 32); 2021-02-07T18:47:08Z Riastradh: The Debian developer didn't look that far, though, and just saw -- `huh, MD_Update(&m,buf,j) seems to be reading uninitialized data, and the other place where that line occurs is wrapped in #ifndef PURIFY'. 2021-02-07T18:47:24Z perdent: Riastradh: (00:31:41) perdent: Here is a challenge I made 2021-02-07T18:47:24Z perdent: (00:31:41) perdent: 0x1000 2021-02-07T18:47:24Z perdent: (00:31:41) perdent: The goal of the challenge is to decrypt/retreieve the flag. 2021-02-07T18:47:24Z perdent: (00:31:41) perdent: Let me know what you think of the challenge and if you are able to solve it, I would also like some feedback about it. 2021-02-07T18:47:24Z perdent: (00:31:41) perdent: chall.py: https://0bin.net/paste/6Vp1Ol8X#63MCiPitY2Wwa61IlPKm01m0ehLtHDkLfTLajZfWcLd 2021-02-07T18:47:25Z perdent: (00:31:41) perdent: output: https://0bin.net/paste/rla4muBN#NQ5V-chtiLLeXavpa4AXYcs5K21LrduF0OpyY77oZm+ 2021-02-07T18:47:33Z wasamasa: FFS 2021-02-07T18:47:42Z perdent: I know you enjoy crypto 2021-02-07T18:48:11Z perdent: And saw you in this channel 2021-02-07T18:48:23Z wasamasa: I enjoy my wall of text not being interrupted by a worthless RSA challenge 2021-02-07T18:48:24Z perdent: Let me know what you think 2021-02-07T18:49:18Z Riastradh: So the Debian developer (Kurt Roeckx) asked about it on the openssl-dev list: https://marc.info/?l=openssl-dev&m=114651085826293&w=2 2021-02-07T18:49:38Z Riastradh: However, it turns out that in 2006, the openssl-dev list isn't really where openssl developers discussed openssl development. 2021-02-07T18:50:19Z Riastradh: So the response he got wasn't very attentive: https://marc.info/?l=openssl-dev&m=114652287210110&w=2 `If it helps with debugging, I'm in favor of removing them.' 2021-02-07T18:50:40Z Riastradh: So he removed the MD_Update(&m,buf,j) line in RAND_add. 2021-02-07T18:50:47Z Riastradh: And nobody noticed that this was a problem until 2008. 2021-02-07T18:51:37Z Riastradh: wasamasa: So no, the Debian OpenSSL debacle had nothing to do with compilers optimizing away undefined behaviour, and everything to do with (a) miscommunication between Debian and OpenSSL developers and (b) _developers_ `optimizing away' the critical code that actually incorporates entropy into the computation. 2021-02-07T18:52:02Z wasamasa: hm 2021-02-07T18:52:14Z wasamasa: still, the lack of understanding of undefined behavior was what prompted that change 2021-02-07T18:52:29Z Riastradh: Yes, but it had nothing to do with clever compilers. 2021-02-07T18:52:34Z wasamasa: I don't see it being exploited outside of memory-unsafe languages 2021-02-07T18:52:37Z Riastradh: The same thing could easily happen in Scheme. What's (make-vector 32) filled with? 2021-02-07T18:53:12Z Riastradh: It has nothing to do with memory-safety! 2021-02-07T18:53:37Z wasamasa: it is a lot more common to think on that level when your language gives you no seatbelts 2021-02-07T18:53:47Z Riastradh: Even if you take out the `undefined behaviour => unlimited consequences' aspect of C, and reduce it to `not specified what values are read out, but you get _something_', exactly the same problem could happen. 2021-02-07T18:54:15Z Zipheir: perdent: Please stop spamming the channel. 2021-02-07T18:55:20Z badkins joined #scheme 2021-02-07T18:55:25Z Zipheir: Oh, it's on other channels as well... 2021-02-07T18:55:34Z Riastradh: perdent: Sorry, not really interested in solving your CTF problem for you. 2021-02-07T18:55:44Z ChanServ has set mode +o Zipheir 2021-02-07T18:55:52Z wasamasa: amusingly on none of the ones I've suggested instead 2021-02-07T18:56:16Z perdent [~zaifir@98.4.178.27] has been kicked from #scheme by Zipheir ("Spamming") 2021-02-07T18:56:31Z ChanServ has set mode -o Zipheir 2021-02-07T18:56:47Z wasamasa: Riastradh: yes, I see that it could happen in a scheme library, but I consider the odds terribly small, it's likelier to be some programming mistake quickly discovered by someone writing a non-crypto library 2021-02-07T18:57:21Z Riastradh: The odds are small only because nobody does crypto in Scheme, and nobody has written any uninitialized-memory taint trackers like valgrind for Scheme. 2021-02-07T18:57:47Z wasamasa: I wouldn't say nobody :D 2021-02-07T18:58:01Z wasamasa: https://gitlab.com/weinholt/TerribleTLS 2021-02-07T18:58:07Z Riastradh: heh 2021-02-07T18:58:10Z Riastradh: `Terrible' TLS 2021-02-07T18:58:28Z wasamasa: it's a refreshingly honest name, just like the awful web framework 2021-02-07T18:58:47Z gravicappa joined #scheme 2021-02-07T19:00:06Z mangol: also https://wiki.call-cc.org/eggref/5/awful-ssl :D but it's SSL for awful. not sure whether it's awful SSL 2021-02-07T19:00:07Z Riastradh: Anyway, for serious crypto implementation work, you really need, as a bare minimum, constant-time 32-bit or 64-bit arithmetic operations: + - ^ & | ~ and constant-distance shift/rotate. 2021-02-07T19:00:41Z wasamasa: I'm not proud of maintaining the openssl egg, but yes, awful-ssl is just integrating that into awful 2021-02-07T19:01:27Z Riastradh: On top of that, you really also want 32x32->64 or 64x64->128 integer multiply (and as a treat, GF(2^p) multiply), and for real performance you need SIMD vector operations, including vector permute/shuffle/table. 2021-02-07T19:02:01Z wasamasa: I remember being surprised to discover openssl has a perlish assembler thing for optimized crypto primitives 2021-02-07T19:02:11Z mangol: (insert lame joke about a garbage-collecting version of windows that uninstalls the whole OS on boot) 2021-02-07T19:02:17Z Riastradh: Yep, it's pretty grody. 2021-02-07T19:02:25Z wasamasa: it's still there 2021-02-07T19:02:31Z Zipheir: I wonder how the portable libtls/libressl project is going. 2021-02-07T19:02:44Z Riastradh: `portable libtls/libressl project'? 2021-02-07T19:03:11Z Zipheir: OpenBSD was providing Linux ports of libressl, at least. 2021-02-07T19:03:22Z Zipheir: Well, I suppose libtls is portable already. 2021-02-07T19:03:28Z mangol: https://github.com/libressl-portable 2021-02-07T19:03:31Z Riastradh: It's kind of a pain for everyone because it's API- and ABI-incompatible with OpenSSL. 2021-02-07T19:03:36Z Zipheir: Yes. 2021-02-07T19:04:01Z Zipheir: There was no way they were going to be able to avoid eventually diverging. 2021-02-07T19:04:04Z perdent joined #scheme 2021-02-07T19:04:10Z Riastradh: So most projects don't bother making things work with libressl, and most development effort these days is on openssl, not libressl. 2021-02-07T19:04:23Z wasamasa: except GNU stuff using gnutls 2021-02-07T19:04:40Z Zipheir: Oh jeez, gnutls *is* still around. 2021-02-07T19:04:45Z Riastradh: And much as I criticize the openssl API and past development practices, there actually are a lot of serious people doing good work on openssl these days. 2021-02-07T19:04:51Z wasamasa: and libgcrypt for gpg 2021-02-07T19:05:07Z Riastradh: heh 2021-02-07T19:05:13Z Riastradh: libgcrypt is a disaster 2021-02-07T19:05:33Z Riastradh: (gpg too) 2021-02-07T19:06:45Z mangol: would GC pauses present a problem for crypto in Scheme BTW? 2021-02-07T19:06:55Z Riastradh: no 2021-02-07T19:14:36Z Riastradh: So anyway, the tools aren't there to write safe crypto primitives in Scheme, and definitely not there to write safe fast crypto primitives in Scheme. Wouldn't hurt to expose a primitive to draw a 32-byte vector uniformly at random from the OS, but to do anything on top of that -- best to just wrap an existing library like libsodium. 2021-02-07T19:19:53Z jcowan: mangol: You could start with https://github.com/johnwcowan/r7rs-work/blob/master/BottomScheme.md 2021-02-07T19:21:55Z jcowan: ecraven: which SRFIs have those problems? 2021-02-07T19:24:17Z jcowan: wasamasa: Babies don't have teeth 2021-02-07T19:27:50Z Zipheir: For pattern-matching users: How would you write, for clarity, a function matching two arguments x and y which are also to appear in the bodies of each clause? e.g. the sort of thing which, in Haskell, might be written `f x@(C a b) y@(C d e) = ...` 2021-02-07T19:29:05Z Zipheir: It seems that the best one can do is (match (list x y) ((($ C a b) ($ C d e)) ...) ...) 2021-02-07T19:32:06Z Zipheir: (Side note: Matching records really sucks. If I didn't define this record, how do I know what fields I need to match on?) 2021-02-07T19:36:27Z gravicappa quit (Ping timeout: 246 seconds) 2021-02-07T19:46:57Z gioyik joined #scheme 2021-02-07T19:59:58Z jcowan: Zipheir: It depends on whether the field names are exposed. A cons is a record, but everyone knows the names of its field. 2021-02-07T20:00:35Z Zipheir: jcowan: The catch is when there are unexposed fields. 2021-02-07T20:01:08Z jcowan: That's when you use the named-field match pattern. 2021-02-07T20:01:14Z Zipheir: Ah, true. 2021-02-07T20:01:21Z Zipheir: I forgot about that feature. 2021-02-07T20:02:51Z jcowan: In fact if I had that I'd never use the other. 2021-02-07T20:07:08Z Zipheir: The syntax can get a bit unwieldy: (match (point x y) (($ (point-x a) (point-y b)) ...)). SRFI 204 describes a Gauche extension that makes it possible to use the field name, however. 2021-02-07T20:07:50Z mirrorbird joined #scheme 2021-02-07T20:08:22Z jcowan nods 2021-02-07T20:09:03Z jcowan: Since record introspection is not portable off R6RS, it's a problem. 2021-02-07T20:09:55Z amirouche joined #scheme 2021-02-07T20:10:27Z Zipheir: Indeed. 2021-02-07T20:14:15Z amirouche: how useful / harmful is record introspection ? 2021-02-07T20:14:45Z amirouche: I got some use for them, but not sure whether it would make other things worse 2021-02-07T20:16:43Z jcowan: I think there is no harm except the cost of carrying the introspection baggage at run time when you don't need it (as you don't, most of the time). 2021-02-07T20:17:19Z amirouche: maybe it can use different form like `define-record-type/i` 2021-02-07T20:17:55Z Oxyd: Maybe introspection garbage could be available only to macro transformers. 2021-02-07T20:19:14Z mangol: Oxyd: excellent idea 2021-02-07T20:19:57Z Oxyd: Kind of presupposes procedural macros, though. Probably wouldn't be very useful with syntax-rules. 2021-02-07T20:20:43Z amirouche: Oxyd: that does not cover, my use case, where i need to pass the arguments of make-my-record in the correct order (from database fetch) 2021-02-07T20:20:52Z mangol: in the case of R6RS, it comes standard with procedural macros 2021-02-07T20:21:06Z amirouche: (again just chatting, I have no opinion on the subject) 2021-02-07T20:21:16Z mangol: chatting is good for generating ideas 2021-02-07T20:21:27Z jcowan: There is already R6RS syntax for introspectable/non-introspectable record types 2021-02-07T20:22:31Z mangol: jcowan: are the R6RS->R7RS condition system porting problems due to record inspection? 2021-02-07T20:23:17Z mangol: each R6RS condition type has a matching predicate; no matter what kind of exception an R7RS implementation raises in a particular situation, it could define the R6RS predicate to match that kind 2021-02-07T20:24:07Z mangol: but it couldn't easily give the same guarantee if R6RS programs use record inspection to peek inside the exception, assuming it's a standard kind of condition object (i.e. which in R6RS is a record) 2021-02-07T20:25:15Z jcowan: That is one problem, but another is the exception hierarchy: there is no good way to integrate different hierarchies in the general case. 2021-02-07T20:25:52Z mangol: hmm. i just realized i never checked whether or not R6RS conditions are _inspectable_ records 2021-02-07T20:25:54Z jcowan: Indeed, just plain record accessors wouldn't work either, even without inspection 2021-02-07T20:26:39Z mangol: can't you pretend to have two different hierarchies? one used by the predicates exported to R6RS programs, one for implementation-native predicates 2021-02-07T20:27:42Z cubik quit (Quit: Leaving.) 2021-02-07T20:29:29Z mangol: why wouldn't the record accessors work without inspection? they're black-box procedures, right? so they could check the type of the object given to them 2021-02-07T20:29:30Z choas quit (Read error: Connection reset by peer) 2021-02-07T20:29:55Z choas joined #scheme 2021-02-07T20:30:00Z mangol: if it's the right kind of record, use record getter; if it's implemantation-native exception, use something else to get equivalent information 2021-02-07T20:30:53Z mangol: black-box procedures can lie about everything unless they're asked to testify under oath that this is a record we're dealing with 2021-02-07T20:30:53Z choas quit (Read error: Connection reset by peer) 2021-02-07T20:32:36Z imode joined #scheme 2021-02-07T20:32:43Z Zipheir: A bigger issue associated with record-matching is that records are not types, but they are what we use to represent types. We generally want to match on the type, not its representation. 2021-02-07T20:33:58Z jcowan: How are records not types? 2021-02-07T20:34:26Z jcowan: Records have predicates, and predicates are isomorphic to types 2021-02-07T20:34:55Z choas joined #scheme 2021-02-07T20:34:57Z Zipheir: That was not well-stated. What I meant is that a record may, in some cases, be just an implementation of an abstract type. 2021-02-07T20:35:50Z Zipheir: So, e.g., I'd like to match (just 1 2 3) as a multiple-valued Just, and not as a record containing a reification of those values. 2021-02-07T20:35:50Z choas quit (Read error: Connection reset by peer) 2021-02-07T20:36:07Z [d] quit (Remote host closed the connection) 2021-02-07T20:36:10Z amirouche: another question, is it possible to have the hiearachy of conditions, but without the being records themselfs. All conditions would be (make-condition symbol message args) 2021-02-07T20:36:23Z [d] joined #scheme 2021-02-07T20:36:26Z Zipheir: This gets back to the "view" concept, again. 2021-02-07T20:36:41Z amirouche: (+ a possibly a parent condition) 2021-02-07T20:37:16Z jcowan: The general solution is views, which were put in Haskell and then taken out again, but are available in Pure. 2021-02-07T20:37:27Z amirouche: (what I really like in exception system, is to be able to possibly catch broad set of exception e.g. everything that comes from sockets 2021-02-07T20:38:06Z jcowan: RIght, and that is the least portable part. 2021-02-07T20:38:57Z mangol: are views something like "specify how a type pretends to also be another type" 2021-02-07T20:39:53Z choas joined #scheme 2021-02-07T20:40:39Z amirouche: diamond inheritance 2021-02-07T20:40:42Z amirouche runs 2021-02-07T20:40:46Z Zipheir: What? 2021-02-07T20:41:16Z amirouche: (dimond inheritance is the consequence of multiple base class in OOP) 2021-02-07T20:41:23Z Zipheir: mangol: IIUC it's an established projection from a value of a given type to an easily matchable form, e.g. a list. 2021-02-07T20:41:48Z mangol: https://en.wikipedia.org/wiki/Diamond_(dog) "Diamond was, according to legend, Sir Isaac Newton's favourite dog, which, by upsetting a candle, set fire to manuscripts containing his notes on experiments conducted over the course of twenty years." 2021-02-07T20:42:03Z Zipheir: Good story. 2021-02-07T20:42:42Z mangol: "The story is largely apocryphal: according to another account, Newton simply left a window open when he went to church, and the candle was knocked over by a gust of wind. In fact, some historians claim that Newton never owned pets." 2021-02-07T20:42:45Z Zipheir: I need a OOP/Martin-Löf dictionary sometimes... 2021-02-07T20:43:34Z mangol: OOP-Martian dictionary 2021-02-07T20:43:40Z Zipheir: Sounds like Jimi Hendrix and the Axis: Bold as Love master tapes. 2021-02-07T20:44:05Z mangol: 2021-02-07T20:44:32Z amirouche: oh no Zipheir will also quote Jimi Hendrix... 2021-02-07T20:45:01Z amirouche: rudybot: what about Jimix Hendrix 2021-02-07T20:45:07Z rudybot: amirouche: what was novel about hendrix specifically? 2021-02-07T20:45:29Z amirouche: rudybot is clueless about hendrix. Please Zipheir proceed :) 2021-02-07T20:46:06Z mangol: "Newton's lab fire" should be a math metal band 2021-02-07T20:46:09Z Zipheir: Nah, I don't usually. His lyrics all seem like psychedelic stoner-speak. 2021-02-07T20:46:46Z Zipheir: mangol: Aww yeah. 2021-02-07T20:46:47Z amirouche: I do not understand lyrics in english music :/ neither in the language of my parents :/ 2021-02-07T20:47:41Z amirouche: (I should dive into metal, the only sort of meta I know is incubus) 2021-02-07T20:49:02Z amirouche: (my favorite song is 'megalomaniac' uspol related, but the idea is interesting outside us) 2021-02-07T20:51:10Z mangol: a lot of lyrics are intentionally vague 2021-02-07T20:51:31Z amirouche: it is Bush presidency... 2021-02-07T20:51:43Z amirouche: IIRC it is related 2021-02-07T20:52:20Z amirouche: anyway! off-topic and I hijacked the convo 2021-02-07T20:52:25Z mangol: :D it's ok 2021-02-07T20:52:26Z amirouche quit (Quit: WeeChat 2.8) 2021-02-07T20:54:04Z Zipheir: Gone. :( 2021-02-07T20:54:41Z mangol: he'll be back. none of us did anything wrong. 2021-02-07T20:54:49Z mangol: least of all him 2021-02-07T20:56:34Z mangol: there seems to be a lot of stress in the air lately for many unrelated reasons. sometimes things pile up in the same time period. 2021-02-07T20:57:40Z Zipheir: Despite the high volume on this channel lately, it's been pretty peaceful. 2021-02-07T20:58:14Z mangol: true though. we de-escalate quickly 2021-02-07T20:59:32Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-07T21:01:02Z Anonymous_ quit (Remote host closed the connection) 2021-02-07T21:01:39Z hendursa1 joined #scheme 2021-02-07T21:04:09Z jcowan: https://github.com/johnwcowan/r7rs-work/blob/master/BottomScheme.md is a good starting point, I think, for really trivial Schemeoids 2021-02-07T21:04:55Z jcowan: Nowadays the tribes don't fight and actually cooperate on issues of common concern. 2021-02-07T21:05:49Z mangol: yeah scheme is in a good place 2021-02-07T21:06:20Z mangol: i guess a lot of the arguing is still the ghost of AI Winter 2021-02-07T21:06:44Z mangol: that explains why Clojure doesn't have it 2021-02-07T21:07:34Z mangol: advantage of the Java and square brackets diet 2021-02-07T21:10:18Z mangol: Bottom Scheme is neat; thanks for writing it down 2021-02-07T21:14:10Z mangol: since we have homogeneous numeric vectors, i wonder how easy it would be to make a simple number crunching sublanguage that uses them as inputs and outputs 2021-02-07T21:14:53Z mangol: and provides the usual CPU arithmetic primitives, maybe simple branching. could maybe use vectors for SIMD operations too. 2021-02-07T21:16:17Z Oxyd: Interesting that Bottom Scheme provides internal defines. 2021-02-07T21:16:24Z mangol: by comparing the popular SIMD instruction sets and looking at common crypto/DSP algorithms it should be reasobly easy to figure out what the common operations are 2021-02-07T21:16:41Z dieggsy: woah, i missed so much conversation 2021-02-07T21:17:09Z dieggsy: Riastradh: re: get-entropy, Chicken has something similar in random-bytes 2021-02-07T21:27:07Z [d] quit (Remote host closed the connection) 2021-02-07T21:30:01Z [d] joined #scheme 2021-02-07T21:46:23Z badkins quit (Remote host closed the connection) 2021-02-07T21:47:04Z badkins joined #scheme 2021-02-07T21:49:28Z kam1 joined #scheme 2021-02-07T21:52:09Z badkins quit (Ping timeout: 264 seconds) 2021-02-07T21:57:02Z badkins joined #scheme 2021-02-07T21:57:30Z xelxebar quit (Ping timeout: 268 seconds) 2021-02-07T21:58:58Z xelxebar joined #scheme 2021-02-07T21:59:26Z Fare quit (Ping timeout: 264 seconds) 2021-02-07T22:20:15Z Fare joined #scheme 2021-02-07T22:21:25Z Anonymous_ joined #scheme 2021-02-07T22:22:07Z mirrorbird quit (Ping timeout: 272 seconds) 2021-02-07T22:23:48Z jcowan: Oxyd: Given the choice between letrec* and internal defines, I thought the latter were easier to understand. 2021-02-07T22:25:57Z Blukunfando quit (Ping timeout: 265 seconds) 2021-02-07T22:48:03Z civodul quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-07T22:59:30Z badkins quit (Remote host closed the connection) 2021-02-07T23:00:03Z badkins joined #scheme 2021-02-07T23:00:44Z notzmv quit (Remote host closed the connection) 2021-02-07T23:02:39Z notzmv joined #scheme 2021-02-07T23:05:32Z notzmv quit (Remote host closed the connection) 2021-02-07T23:05:35Z badkins quit (Ping timeout: 265 seconds) 2021-02-07T23:05:56Z notzmv joined #scheme 2021-02-07T23:09:23Z hendursa1 quit (Remote host closed the connection) 2021-02-07T23:10:07Z aeth quit (Ping timeout: 256 seconds) 2021-02-07T23:10:17Z notzmv quit (Remote host closed the connection) 2021-02-07T23:10:21Z hendursa1 joined #scheme 2021-02-07T23:12:03Z aeth joined #scheme 2021-02-07T23:14:31Z notzmv joined #scheme 2021-02-07T23:19:37Z Fare quit (Ping timeout: 260 seconds) 2021-02-07T23:32:21Z phillbush quit (Quit: Leaving) 2021-02-07T23:35:33Z phillbush joined #scheme 2021-02-07T23:38:17Z rgherdt quit (Ping timeout: 258 seconds) 2021-02-07T23:41:50Z aeth quit (Ping timeout: 265 seconds) 2021-02-07T23:43:15Z aeth joined #scheme 2021-02-07T23:50:13Z phillbush quit (Quit: Leaving) 2021-02-07T23:54:15Z badkins joined #scheme 2021-02-08T00:00:00Z phillbush joined #scheme 2021-02-08T00:02:23Z Garbanzo joined #scheme 2021-02-08T00:03:20Z notzmv quit (Remote host closed the connection) 2021-02-08T00:12:02Z phillbush quit (Quit: Leaving) 2021-02-08T00:12:26Z Fare joined #scheme 2021-02-08T00:22:32Z cjb joined #scheme 2021-02-08T00:38:14Z seepel joined #scheme 2021-02-08T00:44:57Z c7d9_ joined #scheme 2021-02-08T00:45:28Z Blukunfando joined #scheme 2021-02-08T00:47:57Z c7d9 quit (Ping timeout: 246 seconds) 2021-02-08T00:49:00Z daviid quit (Ping timeout: 246 seconds) 2021-02-08T01:07:53Z daviid joined #scheme 2021-02-08T01:13:45Z hendursaga joined #scheme 2021-02-08T01:14:27Z ZombieChicken joined #scheme 2021-02-08T01:15:27Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-08T01:20:16Z pankajsg quit (Ping timeout: 240 seconds) 2021-02-08T01:49:45Z seepel quit (Ping timeout: 264 seconds) 2021-02-08T01:50:54Z badkins quit (Remote host closed the connection) 2021-02-08T01:51:09Z seepel joined #scheme 2021-02-08T01:51:29Z badkins joined #scheme 2021-02-08T01:54:47Z rj_ joined #scheme 2021-02-08T01:56:41Z badkins quit (Ping timeout: 265 seconds) 2021-02-08T02:14:05Z rj_ quit (Quit: rj_) 2021-02-08T02:25:36Z ZombieChicken quit (Remote host closed the connection) 2021-02-08T02:26:23Z aeth_ joined #scheme 2021-02-08T02:26:45Z aeth quit (Ping timeout: 256 seconds) 2021-02-08T02:26:48Z rj_ joined #scheme 2021-02-08T02:27:11Z aeth_ is now known as aeth 2021-02-08T02:28:02Z ZombieChicken joined #scheme 2021-02-08T02:29:28Z badkins joined #scheme 2021-02-08T02:33:39Z rj_ quit (Quit: rj_) 2021-02-08T02:33:52Z rj_ joined #scheme 2021-02-08T02:34:10Z badkins quit (Ping timeout: 256 seconds) 2021-02-08T02:34:41Z badkins joined #scheme 2021-02-08T02:39:52Z [d] quit (Excess Flood) 2021-02-08T02:39:59Z [d] joined #scheme 2021-02-08T02:45:54Z seepel quit (Ping timeout: 246 seconds) 2021-02-08T02:48:39Z daviid` joined #scheme 2021-02-08T02:50:25Z rj_ quit (Ping timeout: 268 seconds) 2021-02-08T02:52:44Z daviid quit (Ping timeout: 246 seconds) 2021-02-08T02:53:12Z badkins quit (Remote host closed the connection) 2021-02-08T02:53:47Z badkins joined #scheme 2021-02-08T02:59:02Z badkins quit (Ping timeout: 265 seconds) 2021-02-08T03:00:47Z daviid` quit (Ping timeout: 272 seconds) 2021-02-08T03:46:06Z badkins joined #scheme 2021-02-08T03:47:06Z hendursa1 joined #scheme 2021-02-08T03:49:37Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-08T03:50:40Z badkins quit (Ping timeout: 256 seconds) 2021-02-08T04:07:46Z kam1 quit (Read error: Connection reset by peer) 2021-02-08T04:25:44Z kam1 joined #scheme 2021-02-08T04:26:16Z kam1 quit (Read error: Connection reset by peer) 2021-02-08T04:56:36Z amirouche joined #scheme 2021-02-08T04:58:20Z marusich joined #scheme 2021-02-08T05:07:38Z perdent: Hey can anyone convert my solution to Scheme etc? Curious to see how it would look in functional language and what the speed difference would be? https://gofile.io/d/2hsZEM Run with wasmtime ./wasmpwn.wasm --dir ./ 2021-02-08T05:17:38Z ChanServ has set mode +o Zipheir 2021-02-08T05:18:18Z amirouche: -_-' 2021-02-08T05:18:38Z Zipheir has set mode +b *!*perdent@101.175.174.* 2021-02-08T05:18:38Z perdent [~zaifir@98.4.178.27] has been kicked from #scheme by Zipheir (Please don't spam the channel or ask people to open suspicious archives.) 2021-02-08T05:18:51Z ChanServ has set mode -o Zipheir 2021-02-08T05:26:11Z mdhughes: I haven't looked at bit-level performance, but for my kind of number-crunching, the fx* functions do much much better than general math. 2021-02-08T05:26:39Z mdhughes: But FFI is the easiest way to guarantee you're doing ASM/C if you want ASM/C. 2021-02-08T05:27:47Z amirouche: tx! 2021-02-08T05:28:44Z Fare quit (Quit: Leaving) 2021-02-08T05:30:08Z mdhughes: … Tho fx* isn't in R7? That's suboptimal if it's not there at the language level. 2021-02-08T05:31:08Z gravicappa joined #scheme 2021-02-08T05:31:21Z Zipheir: fx* is in SRFI 143. 2021-02-08T05:31:35Z hendursa1 quit (Remote host closed the connection) 2021-02-08T05:32:35Z hendursa1 joined #scheme 2021-02-08T05:32:59Z Zipheir: And exact integers are required by R7RS small, so it's just a matter of providing that library of fixnum operations. 2021-02-08T05:33:53Z mdhughes: exact includes both fixnum and bignum, so there's no guarantee of performance. 2021-02-08T05:34:55Z mdhughes: hah, and the chibi impl is just (define fx+ +) and so on. 2021-02-08T05:38:59Z Zipheir: That's the way it goes. The good news is that there are no Schemes without fixnums, AFAIK. 2021-02-08T05:43:17Z klovett quit 2021-02-08T05:46:40Z ravndal quit (Quit: WeeChat 3.0) 2021-02-08T05:46:54Z pankajsg joined #scheme 2021-02-08T05:48:45Z ravndal joined #scheme 2021-02-08T05:54:54Z Blukunfando quit (Ping timeout: 246 seconds) 2021-02-08T06:05:37Z notzmv joined #scheme 2021-02-08T06:23:15Z amirouche quit (Ping timeout: 246 seconds) 2021-02-08T06:31:45Z marusich quit (Ping timeout: 240 seconds) 2021-02-08T06:34:07Z cubik joined #scheme 2021-02-08T06:39:23Z amirouche joined #scheme 2021-02-08T06:39:32Z gioyik quit (Quit: WeeChat 3.0) 2021-02-08T06:44:53Z hendursaga joined #scheme 2021-02-08T06:46:36Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-08T06:54:45Z raingloom quit (Ping timeout: 246 seconds) 2021-02-08T06:55:24Z GreaseMonkey quit (Remote host closed the connection) 2021-02-08T07:10:11Z sp1ff`` joined #scheme 2021-02-08T07:11:12Z skapata quit (Remote host closed the connection) 2021-02-08T07:11:55Z sp1ff` quit (Ping timeout: 276 seconds) 2021-02-08T07:15:24Z badkins joined #scheme 2021-02-08T07:20:02Z badkins quit (Ping timeout: 265 seconds) 2021-02-08T07:28:28Z Melchizedek6809 joined #scheme 2021-02-08T07:42:03Z Garbanzo quit (Ping timeout: 258 seconds) 2021-02-08T07:56:56Z hyiltiz quit (Ping timeout: 240 seconds) 2021-02-08T07:57:19Z hyiltiz joined #scheme 2021-02-08T07:58:17Z taw10 quit (Quit: leaving) 2021-02-08T08:00:16Z bitwiz joined #scheme 2021-02-08T08:00:23Z bitwiz is now known as taw10 2021-02-08T08:03:12Z aquijoule_ quit (Remote host closed the connection) 2021-02-08T08:03:30Z aquijoule_ joined #scheme 2021-02-08T08:05:50Z civodul joined #scheme 2021-02-08T08:11:37Z greaser|q joined #scheme 2021-02-08T08:14:57Z DGASAU quit (Ping timeout: 264 seconds) 2021-02-08T08:27:56Z rgherdt joined #scheme 2021-02-08T08:33:08Z DGASAU joined #scheme 2021-02-08T08:54:01Z Major_Biscuit joined #scheme 2021-02-08T08:57:37Z mirrorbird joined #scheme 2021-02-08T08:58:34Z ZombieChicken quit (Ping timeout: 268 seconds) 2021-02-08T09:04:38Z hendursa1 joined #scheme 2021-02-08T09:06:35Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-08T09:08:28Z hendursaga joined #scheme 2021-02-08T09:09:39Z DGASAU quit (Ping timeout: 256 seconds) 2021-02-08T09:11:31Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-08T09:16:13Z badkins joined #scheme 2021-02-08T09:20:25Z badkins quit (Ping timeout: 240 seconds) 2021-02-08T09:21:14Z DGASAU joined #scheme 2021-02-08T09:50:00Z wasamasa: I've had a conversation with perdent in a /query now and I'm reasonably sure they won't bother this channel again 2021-02-08T09:50:48Z paulj joined #scheme 2021-02-08T09:51:12Z ecraven: amirouche: hey 2021-02-08T09:51:15Z ecraven: back now 2021-02-08T09:54:37Z mangol: wasamasa: thank you for going the extra mile 2021-02-08T09:56:45Z wasamasa: I'm just a curious cat, wondering why they'd target this channel specifically, seems to be a mixture of curiosity on their behalf (is there any point in converting their C++ solution to scheme) and arrogance (someone should do this work for me with nothing in return because it's totally worth it) 2021-02-08T09:57:34Z wasamasa: I clarified that there is little point in doing it, it would cost much time/money to do it and that it's not worth it unless you want to learn something in depth 2021-02-08T09:57:47Z wasamasa: and they didn't, so that was the end of the story 2021-02-08T09:58:20Z wasamasa: especially not after I clarified how much I charge to deal with people expecting unreasonable things from me (AKA customers) 2021-02-08T09:58:58Z mangol: if they had no malicious intent that's the most important part. i was starting to worry it's some kind of baiting with the wasm links and stuff. 2021-02-08T09:59:17Z wasamasa: no, it was solely about the .cc file solving the challenge 2021-02-08T10:00:22Z amirouche quit (Quit: WeeChat 2.8) 2021-02-08T10:00:37Z wasamasa: written in an imperative style, so a mechanical scheme conversion wouldn't win you anything :P 2021-02-08T10:01:01Z cjb quit (Quit: cjb) 2021-02-08T10:01:09Z mangol: ambitious young people often get fixated on particular challenges that may not contribute to solving a larger goal 2021-02-08T10:01:12Z wasamasa: it's funny because I've had the conversation of porting the library used for the solution to scheme, but it's an arduous task 2021-02-08T10:01:25Z wasamasa: with another lisp enthusiast on a hacking-related network 2021-02-08T10:01:35Z wasamasa: something I'd estimate two full work weeks of effort for 2021-02-08T10:01:57Z mangol: :) 2021-02-08T10:02:03Z wasamasa: because you'd have to deal with sockets, subprocess control, buffering, asynchronous waiting, pattern matching, ... 2021-02-08T10:02:49Z mangol: so we could start porting RSA and end up with that Go/Java-size standard library for Scheme 2021-02-08T10:02:57Z ecraven: which library is that? 2021-02-08T10:03:01Z wasamasa: I recall Oleg solving a tiny part of it though, an expect-like library for subprocess control 2021-02-08T10:03:03Z wasamasa: pwntools 2021-02-08T10:03:14Z wasamasa: it gives you a very neat API to solve CTF challenges 2021-02-08T10:03:20Z ecraven: I'm fighing foundationdb right now ;) 2021-02-08T10:03:22Z wasamasa: designed for writing throwaway scripts 2021-02-08T10:03:44Z wasamasa: it's also useful for writing exploits in general 2021-02-08T10:04:26Z mangol: wonder if there's any CVEs involving Scheme yet 2021-02-08T10:04:32Z wasamasa: there are indeed 2021-02-08T10:04:56Z wasamasa: I recall a DNS rebinding one for guile's REPL allowing a browser tab to evaluate arbitrary scheme code 2021-02-08T10:05:04Z mangol: lol 2021-02-08T10:05:11Z mangol: so we do have scheme in the browser 2021-02-08T10:05:16Z wasamasa: I also inadvertedly helped a CHICKEN maintainer discover two memory-related vulnerabilities 2021-02-08T10:05:33Z wasamasa: I just reported the crash and they handed in two CVEs 2021-02-08T10:05:50Z mangol: crash and burn 2021-02-08T10:06:07Z mangol: in other news, the server admin of http://community.schemewiki.org/ responded to our inquiries. as speculated, Anton runs it. he doesn't have much time to tend to it so we'll work out how to handle its future maintenance. 2021-02-08T10:07:01Z wasamasa: https://www.cvedetails.com/cve/CVE-2016-8606/ 2021-02-08T10:07:19Z wasamasa: slime is most likely affected by the same problem 2021-02-08T10:08:32Z wasamasa: another variation of the same problem: http://jgkamat.gitlab.io/blog/next-rce.html 2021-02-08T10:09:45Z retropikzel quit (Ping timeout: 240 seconds) 2021-02-08T10:17:42Z mangol: what's the common enabling factor for those exploits? a lisp REPL opens a TCP socket that accepts local and/or remote connections (depending on whether it's bound to localhost or 0.0.0.0) without authentication? 2021-02-08T10:18:12Z ManDay joined #scheme 2021-02-08T10:18:22Z wasamasa: DNS rebinding 2021-02-08T10:19:15Z wasamasa: a browser request towards a host may end up resolving to 127.0.0.1 2021-02-08T10:19:54Z wasamasa: this allows accessing local services listening on localhost 2021-02-08T10:20:58Z wasamasa: https://danielmiessler.com/blog/dns-rebinding-explained/ 2021-02-08T10:21:01Z mangol: meaning a remote website can access a local TCP socket on the computer of the person browsing the remote website 2021-02-08T10:21:38Z mangol: and the JS running on behalf of the remote website can phone home to send back information or take commands? 2021-02-08T10:21:59Z wasamasa: there's usually some limitation on behalf of the browser that makes it a send-only operation 2021-02-08T10:22:07Z wasamasa: but this may be more than enough 2021-02-08T10:22:44Z mangol: send back password hashes for cracking, sshd configuration, etc. 2021-02-08T10:23:00Z clone11 quit (Ping timeout: 246 seconds) 2021-02-08T10:23:34Z wasamasa: if you can send code to a guile repl which can end up spawning a reverse shell that connects to your machine and allows executing arbitrary commands on the victim machine, yeah, game over 2021-02-08T10:25:13Z clone11 joined #scheme 2021-02-08T10:25:21Z mangol: right. and the first line of defense is never to put a REPL behind an unauthenticated TCP (or UDP) socket 2021-02-08T10:25:30Z mangol: even if you think it's local only 2021-02-08T10:26:55Z wasamasa: that was the fix for a bunch of torrent clients and next browser 2021-02-08T10:27:00Z wasamasa: not sure about guile: https://blog.lizzie.io/exploiting-CVE-2016-8606.html 2021-02-08T10:27:14Z wasamasa: yeah, no: http://git.savannah.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=08c021916dbd3a235a9f9cc33df4c418c0724e03 2021-02-08T10:27:32Z daviid` joined #scheme 2021-02-08T10:30:37Z mangol: whoa. quite a hack. 2021-02-08T10:31:12Z mangol: wouldn't it make more sense to require some kind of randomly cookie to authenticate each connection to the REPL before it accepts commands? 2021-02-08T10:31:12Z wasamasa: the blog post is instructive, a fun way of encoding scheme code 2021-02-08T10:31:23Z wasamasa: well, yes, but I imagine this to break compatibility 2021-02-08T10:31:37Z wasamasa: might be the reason why SLIME won't do it 2021-02-08T10:31:45Z wasamasa: it would break all third-party implementations 2021-02-08T10:32:48Z imode quit (Ping timeout: 246 seconds) 2021-02-08T10:49:47Z ManDay: re rebinding attack: that's not limited to javascript. browsers are a tool of evil, even an will do 2021-02-08T10:50:30Z ManDay: browser sees `src=`, browser does whatever `src=` tells it to 2021-02-08T11:04:38Z mangol: wasamasa: do you recall there being an api.call-cc.org (chickadee) interface in one of the Chicken Emacs packages? that would be immediately useful. 2021-02-08T11:04:53Z wasamasa: I wrote one for chicken-doc specifically 2021-02-08T11:06:50Z mangol: what's the usual way to install the emacs part of chicken-doc? we should get all this stuff into MELPA 2021-02-08T11:07:14Z wasamasa: it doesn't do incremental completion like the online thing, for that I'd need a persistent process or some web API 2021-02-08T11:07:20Z wasamasa: and helm or whatever 2021-02-08T11:07:50Z mangol: or periodic dumps of the index provided by the chickadee maintainers 2021-02-08T11:08:01Z wasamasa: that's part of chicken-doc administration 2021-02-08T11:09:28Z mangol: https://github.com/chicken-contrib is still waiting for your contribution :) if you can handle the moving-and-organizing repos part, I'm happy to do whatever is needed for MELPA; have several packages there already 2021-02-08T11:09:36Z wasamasa: yeah, I know 2021-02-08T11:13:23Z wasamasa: the usual way is to download the single file, put it in some directory on load-path and load it 2021-02-08T11:17:18Z badkins joined #scheme 2021-02-08T11:21:27Z badkins quit (Ping timeout: 246 seconds) 2021-02-08T11:26:19Z catonano joined #scheme 2021-02-08T11:32:49Z ManDay quit (Quit: WeeChat 3.0) 2021-02-08T11:37:22Z mirrorbird quit (Ping timeout: 265 seconds) 2021-02-08T11:39:56Z hendursa1 joined #scheme 2021-02-08T11:41:59Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-08T11:53:47Z mirrorbird joined #scheme 2021-02-08T13:18:03Z badkins joined #scheme 2021-02-08T13:22:05Z badkins quit (Ping timeout: 240 seconds) 2021-02-08T13:26:25Z englishm_ quit (Ping timeout: 240 seconds) 2021-02-08T13:27:13Z rickbutton quit (Ping timeout: 260 seconds) 2021-02-08T13:27:17Z d_run quit (Read error: Connection reset by peer) 2021-02-08T13:27:17Z dto quit (Read error: No route to host) 2021-02-08T13:27:20Z bchar quit (Read error: Connection reset by peer) 2021-02-08T13:27:21Z dnm quit (Read error: Connection reset by peer) 2021-02-08T13:27:25Z stephe quit (Read error: Connection reset by peer) 2021-02-08T13:27:25Z bitmapper quit (Read error: Connection reset by peer) 2021-02-08T13:27:26Z CORPORAL_groovy quit (Read error: Connection reset by peer) 2021-02-08T13:27:26Z sz0 quit (Read error: Connection reset by peer) 2021-02-08T13:27:27Z ec quit (Read error: Connection reset by peer) 2021-02-08T13:27:27Z rann quit (Read error: Connection reset by peer) 2021-02-08T13:27:27Z theruran quit (Read error: Connection reset by peer) 2021-02-08T13:28:52Z dto joined #scheme 2021-02-08T13:28:56Z sz0 joined #scheme 2021-02-08T13:30:01Z dnm joined #scheme 2021-02-08T13:30:33Z akkad quit (Ping timeout: 264 seconds) 2021-02-08T13:31:37Z ec joined #scheme 2021-02-08T13:31:38Z theruran joined #scheme 2021-02-08T13:31:41Z englishm_ joined #scheme 2021-02-08T13:32:19Z akkad joined #scheme 2021-02-08T13:33:17Z stephe joined #scheme 2021-02-08T13:33:21Z bitmapper joined #scheme 2021-02-08T13:34:35Z bchar joined #scheme 2021-02-08T13:34:38Z jeko joined #scheme 2021-02-08T13:35:08Z jeko quit (Client Quit) 2021-02-08T13:36:54Z mdhughes quit 2021-02-08T13:37:06Z mdhughes joined #scheme 2021-02-08T13:45:08Z rann joined #scheme 2021-02-08T13:45:10Z d_run joined #scheme 2021-02-08T13:45:11Z rickbutton joined #scheme 2021-02-08T13:51:16Z CORPORAL_groovy joined #scheme 2021-02-08T13:51:19Z mirrorbird quit (Quit: Leaving) 2021-02-08T13:55:35Z badkins joined #scheme 2021-02-08T14:00:21Z badkins quit (Ping timeout: 256 seconds) 2021-02-08T14:00:58Z kopiyka joined #scheme 2021-02-08T14:02:44Z ManDay joined #scheme 2021-02-08T14:05:37Z retropikzel joined #scheme 2021-02-08T14:08:35Z Anonymous_ quit (Remote host closed the connection) 2021-02-08T14:36:13Z paulj quit (Quit: Asta la vista) 2021-02-08T14:39:44Z xelxebar quit (Remote host closed the connection) 2021-02-08T14:40:03Z xelxebar joined #scheme 2021-02-08T14:43:09Z hyiltiz quit (Ping timeout: 264 seconds) 2021-02-08T14:43:33Z hyiltiz joined #scheme 2021-02-08T14:43:33Z hyiltiz quit (Changing host) 2021-02-08T14:43:33Z hyiltiz joined #scheme 2021-02-08T14:47:24Z klovett joined #scheme 2021-02-08T14:52:17Z phillbush joined #scheme 2021-02-08T15:01:17Z badkins joined #scheme 2021-02-08T15:07:31Z Wezl joined #scheme 2021-02-08T15:19:33Z retropikzel quit (Read error: Connection reset by peer) 2021-02-08T15:32:02Z Zipheir: wasamasa: OK, thanks for talking to them. 2021-02-08T15:32:08Z ChanServ has set mode +o Zipheir 2021-02-08T15:33:18Z Zipheir has set mode -b *!*perdent@101.175.174.* 2021-02-08T15:33:32Z ChanServ has set mode -o Zipheir 2021-02-08T15:41:54Z amoe quit (Quit: leaving) 2021-02-08T15:42:08Z amoe joined #scheme 2021-02-08T15:47:26Z gioyik joined #scheme 2021-02-08T15:59:47Z mangol: are there other Emacs clones written in Scheme besides Edwin? 2021-02-08T16:00:15Z mangol: and how deeply tied is Edwin to MIT Scheme in particular? 2021-02-08T16:01:38Z wasamasa: there's this jemacs thing written in java and scheme 2021-02-08T16:01:56Z mangol: right. it's mostly in java AFAICT, but extensible via Kawa 2021-02-08T16:02:05Z mangol: portable Scheme Emacs is on my mind. standardize the core editing API (by copying mainline Emacs APIs), factor into R7RS libraries. 2021-02-08T16:02:34Z mangol: permit multiple implementations of that core. ship user libraries (editing modes, etc.) built on top of that core as R7RS libraries 2021-02-08T16:02:37Z wasamasa: I suspect though that replacing elisp with scheme will make it less, not more hackable 2021-02-08T16:03:06Z wasamasa: no more dynamic binding for everything declared as special variable 2021-02-08T16:03:16Z mangol: does JEmacs use elisp instead of Scheme? kawa has at least some experimental Common Lisp support 2021-02-08T16:03:21Z wasamasa: it uses both 2021-02-08T16:03:26Z mangol: nice 2021-02-08T16:04:03Z mangol: anyway, if you think mainline Emacs should go toward CL instead of Scheme then I agree. for small Emacs that don't want to carry an entire CL env around, Scheme is nice 2021-02-08T16:04:10Z wasamasa: https://www.gnu.org/software/emacs/emacs-paper.html#SEC15 2021-02-08T16:05:02Z wasamasa: CL is indeed closer to elisp and designed to hacking on a system as it runs 2021-02-08T16:05:13Z wasamasa: there are some scheme systems with similar capabilities 2021-02-08T16:05:21Z wasamasa: but it's nowhere near standardized 2021-02-08T16:05:32Z mangol: MIT Scheme is probably the "most interactive" of all Scheme implementations 2021-02-08T16:05:51Z skapata joined #scheme 2021-02-08T16:06:18Z mangol: it would be fun to find a subset of Lisp that such that code in that subset is valid Emacs Lisp and Common Lisp simultaneously 2021-02-08T16:06:36Z mangol: maybe with light portability shims 2021-02-08T16:06:48Z mangol: would ease the path toward real CL-based Emacs 2021-02-08T16:07:12Z mangol: the MELPA cognoscenti could voluntarily opt to write their elisp packages in that dialect 2021-02-08T16:09:00Z Anonymous_ joined #scheme 2021-02-08T16:09:29Z mangol: as for small Emacs clones for when you don't want to install a 100 MiB editor, Scheme would be just the ticket. 2021-02-08T16:09:40Z wasamasa: well, I doubt it will happen 2021-02-08T16:09:49Z wasamasa: there is a price to be paid for APIs that work across languages 2021-02-08T16:10:01Z wasamasa: and there are plenty non-CL APIs in emacs that are heavily used 2021-02-08T16:10:07Z wasamasa: sometimes to the degree of relying on bugs 2021-02-08T16:10:23Z wasamasa: they aren't aware of programming against a standard because there is none 2021-02-08T16:10:50Z mangol: many of the best elisp hackers know and respect CL though 2021-02-08T16:11:20Z mangol: every few years someone writes a blog post "is now finally the time to rewrite emacs in CL?" 2021-02-08T16:12:18Z wasamasa: a bunch of nonsense that is 2021-02-08T16:12:32Z wasamasa: there isn't nearly enough CL people willing to work on a project as gnarly as emacs 2021-02-08T16:12:45Z wasamasa: the bits I've seen so far were about emacs-inspired editors with no packages whatsoever 2021-02-08T16:12:58Z wasamasa: no such thing as guilemacs 2021-02-08T16:14:30Z mangol: it's not that gnarly if package authors agree to work together with the CL Emacs implementers toward compatibility 2021-02-08T16:14:55Z mangol: if they don't agree, then i agree that it's daunting 2021-02-08T16:15:25Z ecraven: there *are* a few rewrites in CL.. hemlock and climacs, at least 2021-02-08T16:15:51Z mangol: the non-GNU-compatible CL Emacs variants are standard lisp curse fare; not sure whether or not their authors could be persuaded to go for GNU compatibility. 2021-02-08T16:16:03Z wasamasa: if it doesn't run elisp, it's not a rewrite 2021-02-08T16:16:28Z mangol: well, maybe not all of them Lisp curse, since things like Hemlock are so old that GNU Emacs probably didn't yet have the dominant position it does now 2021-02-08T16:16:51Z wasamasa: portable hemlock page says emacs-like editor 2021-02-08T16:17:41Z ecraven: ZWEI! 2021-02-08T16:18:51Z mangol: it's not important whether or not it satisfies someone's criteria for being a rewrite; it's important whether it runs a useful set of packages 2021-02-08T16:19:03Z wasamasa: well, it doesn't even do color highlighting 2021-02-08T16:19:14Z mangol: if a critical mass of packages gets going, more and more people will patch their elisp to be CL compatible 2021-02-08T16:19:20Z wasamasa: replacing emacs with that is a joke 2021-02-08T16:19:41Z mangol: i agree that Hemlock and that CLIM Emacs are not on track to be a replacement 2021-02-08T16:20:07Z mangol: Rust Emacs explicitly tries to be, but why replace an ELisp interpreter written in C with an ELisp interpreter written in RUst 2021-02-08T16:20:17Z wasamasa: because it crashes less on macos 2021-02-08T16:21:21Z wasamasa: and if it crashes, it does so immediately instead of far later than the error source 2021-02-08T16:21:33Z Zipheir: GNU Emacs is really far to big to be replaced. By the time anyone ports a majority of existing packages, it's likely the Emacs devs will have added new features that make current packages incompatible. 2021-02-08T16:21:54Z Zipheir: It's not as bad as trying to keep up with Chrome, but it's similar. 2021-02-08T16:21:55Z mangol: emacs devs haven't added much in the way of new features in this millennium 2021-02-08T16:22:12Z wasamasa: they have added enough features to make popular packages increase their minimum requirements though 2021-02-08T16:22:25Z wasamasa: there's also constant bugfixes that make it challenging to support all the versions 2021-02-08T16:22:35Z mangol: yeah i think some of mine depend on emacs 25 and the rest on 24 2021-02-08T16:22:44Z wasamasa: for example https://old.reddit.com/r/emacs/comments/ld7zd2/doom_has_dropped_support_for_emacs_261_debian/ 2021-02-08T16:27:09Z mangol: anyway if someone wants to work on standardizing scheme emacs APIs (with much more modest requirements than GNU Emacs compatibility or matching GNU Emacs features; just for small time Emacs clones) please talk to me 2021-02-08T16:28:02Z aeth: mangol: Emacs did some major changes circa 2010-2012 or so to reach parity with XEmacs, which then promptly died 2021-02-08T16:28:15Z Zipheir: What do you mean by "Scheme Emacs APIs", exactly? 2021-02-08T16:28:23Z aeth: integrated package management, (iirc) syntax highlighting (at least on by default), etc. 2021-02-08T16:28:40Z mangol: aeth: yeah too bad that XEmacs lost. they seemed to have better technical principles, and move faster. 2021-02-08T16:29:51Z aeth: Zipheir: Emacs isn't anywhere near the scale of a web browser and definitely can be replaced. It's just that anyone capable of replacing it is making a standard, generic, "modern" IDE rather than an Emacs 2021-02-08T16:30:20Z mangol: Zipheir: basically take the central editing commands from ELisp, slightly tweak anything that would be really bad Scheme style into something palatable, then figure out how to split the command set into R7RS libraries 2021-02-08T16:30:44Z aeth: Zipheir: A text editor has nothing on the genuinely huge projects such as a web browser, a game engine, or even a database. 2021-02-08T16:30:59Z Zipheir: aeth: Yes, I exaggerated horribly. 2021-02-08T16:31:28Z aeth: A database is probably the hardest of the three I listed because while it's actually the easiest of the three to implement, you really don't want your database to be experimental or lose data. 2021-02-08T16:31:38Z mangol: Zipheir: you didn't exaggerate all that much. it's true that the feature set of GNU Emacs are far from impossible to replicate. but the bug-for-bug compatibility is. 2021-02-08T16:31:49Z xelxebar quit (Ping timeout: 268 seconds) 2021-02-08T16:31:59Z Zipheir: mangol: Sounds good. I've always thought that Emacs's incremental interface design has been a curse. 2021-02-08T16:32:15Z jcowan: There is an in-progress Climacs replacement, called (naturally) Second Climacs. 2021-02-08T16:32:30Z mangol: that's why the co-operation some good elisp package authors would be essential to bootstrap a successful full-featured CL Emacs 2021-02-08T16:32:40Z mangol: lol 2021-02-08T16:34:30Z wasamasa: I doubt it will happen, considering how much of a success MELPA has been 2021-02-08T16:35:41Z mangol: the top MELPA hackers tend to like CL 2021-02-08T16:36:45Z mangol: Zipheir: what is incremental interface design? 2021-02-08T16:37:01Z jcowan: I've been thinking about a pre-SRFI to do special cases of `map` on homogeneous vectors. 2021-02-08T16:37:03Z xelxebar joined #scheme 2021-02-08T16:37:56Z imode joined #scheme 2021-02-08T16:39:34Z jcowan: e.g. (f32vector-map + v1 v2) if implemented naively will involve a lot of conversions from float to double, but it would be trivial to implement a proposed f32vector+ to walk through the f32vectors in C and add them into another vector. (Probably good to make it take a result vector too.) This can fall back to using f32vector-map if C transitions are inefficient. 2021-02-08T16:39:45Z wasamasa: mangol: I have my doubts 2021-02-08T16:39:49Z jcowan: The question is when to stop adding operations. I have no principled answer to this. 2021-02-08T16:40:02Z Zipheir: mangol: The way Emacs has added one ad-hoc programming interface feature to another over the decades. 2021-02-08T16:40:15Z wasamasa: mangol: I'd of course like some short interviews with, say, the top 10 2021-02-08T16:40:27Z wasamasa: mangol: that way there would be less anecdata about it 2021-02-08T16:41:33Z Zipheir: mangol: Obviously the 80s incarnation of the editor didn't have a Web library or all of the clever highlighting features. So the language for programming the editor is a tangled mess. 2021-02-08T16:41:47Z wasamasa: mangol: I can think of a more technical survey approach for it though 2021-02-08T16:42:16Z wasamasa: mangol: take the top X repositories by download count, identify their github repos, identify the top contributor, look up their github projects, look up their languages 2021-02-08T16:42:22Z wasamasa: mangol: and see how many of those involve CL 2021-02-08T16:42:23Z Zipheir: The only way to solve *that* problem is to decide what the editor is and is not going to do up front. 2021-02-08T16:42:24Z aeth: Zipheir: Beyond that, GNU Emacs was intentionally archaic in more ways to one, from the editor to the language. 2021-02-08T16:42:48Z ecraven: Zipheir: alas when planning for decades, you don't *know* up front ;) 2021-02-08T16:42:49Z aeth: Zipheir: So it was basically a '70s editor with a '70s LISP released in the '80s 2021-02-08T16:43:02Z Zipheir: Right. 2021-02-08T16:43:11Z siraben: it would take massive amounts of effort to rewrite Emacs and fix all of the warts 2021-02-08T16:43:43Z siraben: Proper namespacing, removing dynamic scope, good concurrency etc. are just things I recall off the top of my head. 2021-02-08T16:44:15Z mangol: i don't think Emacs has that many warts considering how much it does. XEmacs which used ADTs was even nicer. 2021-02-08T16:44:15Z Zipheir: Actually *parsing* source code rather than using little regex hacks for highlighting. 2021-02-08T16:44:29Z mangol: it's true that dynamic scope is awful, but they don't use it anymore. 2021-02-08T16:44:36Z wasamasa: but they do, lol 2021-02-08T16:44:41Z wasamasa: lexical binding is opt-in 2021-02-08T16:44:45Z wasamasa: far from everything uses it 2021-02-08T16:45:00Z wasamasa: there's been recently a push to make gnus use it and that uncovered a bunch of bugs 2021-02-08T16:45:27Z wasamasa: even if you use lexical binding, every special variable still uses dynamic scope 2021-02-08T16:45:51Z siraben: Heh Emacs calc is interesting, it implements bignums in Emacs Lisp even though Emacs recently (maybe 1 or 2 years ago) added bignum support via GNU GMP 2021-02-08T16:45:51Z mangol: Zipheir: yeah font-lock is pretty much the worst possible way to design a full-featured code highlighting framework :) 2021-02-08T16:45:56Z Zipheir: A good Emacs re-do would go back to basics. A programmable text editor. Not an operating system or a Lisp machine. 2021-02-08T16:46:16Z jcowan: Anyhow, I don't think lexical scope can shadow dynamic global variables 2021-02-08T16:46:22Z Zipheir: Something like Acme/Wily, I suppose. 2021-02-08T16:46:32Z siraben: using tree-sitter https://github.com/tree-sitter/tree-sitter could be viable for syntax-related editor stuff 2021-02-08T16:46:44Z mangol: Zipheir: if you want to explore that in a scheme context, help me out with factoring the elisp core editing and windowing functions into scheme libs :) 2021-02-08T16:46:55Z siraben: jcowan: right and it's quite normal to do some dynamic scoping on purpose 2021-02-08T16:47:16Z Zipheir: mangol: Did you paste a repo link? I missed it, if so. 2021-02-08T16:47:23Z siraben: or unhygienic macros for that matter, to intentially rebind, say, `red` to the theme's variant of red 2021-02-08T16:47:24Z jcowan: Note that A/W isn't programmable in the sense of Emacs: it depends on outboard processes and a 9fs file system for Acme (a private socket protocol for Wily) 2021-02-08T16:47:37Z siraben: Zipheir: yeah, it would be something 2021-02-08T16:47:48Z mangol: Zipheir: i don't have a repo yet. well, except https://github.com/pre-srfi/emacs which was a less ambitious start from last week 2021-02-08T16:47:54Z wasamasa: lol 2021-02-08T16:47:55Z siraben: if anyone isn't already, I recommend running the native-comp branch of development Emacs that compiles Emacs Lisp to native code. 2021-02-08T16:48:10Z wasamasa: reminds me that I did write some emacs buffer API stuff in scheme for fun 2021-02-08T16:48:25Z Zipheir: mangol: ty 2021-02-08T16:48:36Z wasamasa: I dropped it though as a normal parser proved to be a saner design 2021-02-08T16:49:02Z Zipheir: Acme at least gets the scope of the program right. 2021-02-08T16:49:19Z siraben: wasamasa: didn't you write a CHIP-8 emulator in Emacs Lisp? 2021-02-08T16:49:23Z dieggsy: siraben: i build emacs from git every night, lol, but i generally stick to master as it tends to be very stable. once native-comp gets merged i may be more inclined to try 2021-02-08T16:49:23Z wasamasa: I did 2021-02-08T16:49:32Z mangol: wasamasa: MELPA people like CL as a superior alternative to ELisp. they wouldn't necessarily use CL for unrelated projects. 2021-02-08T16:49:44Z wasamasa: mangol: [citation needed] 2021-02-08T16:49:49Z ManDay quit (Quit: WeeChat 3.0) 2021-02-08T16:49:53Z wasamasa: also, that's a weak claim 2021-02-08T16:49:54Z Wezl quit (Read error: Connection reset by peer) 2021-02-08T16:49:59Z wasamasa: why would you believe in CL, but not use it 2021-02-08T16:50:02Z dieggsy: agreed 2021-02-08T16:50:08Z mangol: because emacs isn't written in CL 2021-02-08T16:50:11Z wasamasa: your belief in CL is only worth something if you're actually experienced with it 2021-02-08T16:50:14Z siraben: dieggsy: FWIW I've been running native-comp for half a year or so now, no problems. 2021-02-08T16:50:16Z Wezl joined #scheme 2021-02-08T16:50:33Z wasamasa: I know just enough of it to reliably identify social lisp issues in their ecosystem :D 2021-02-08T16:50:34Z Zipheir: A more radical idea: Why do we keep writing programmable programs which expose some things the OS allows you to do? Why not build an OS that you can build up to an editor, or whatever, exposing as much of the OS's functionality as you need? 2021-02-08T16:50:42Z wasamasa: hear, hear 2021-02-08T16:51:11Z wasamasa: Zipheir: there was this guy who heard lisp machines and plan9 are cool things, but didn't understand either: https://github.com/mntmn/interim/ 2021-02-08T16:51:48Z Zipheir: wasamasa: Interesting. 2021-02-08T16:51:50Z wasamasa: not sure I'd call it the worst lisp implementation ever, but it's there 2021-02-08T16:51:55Z Zipheir: Heh. 2021-02-08T16:52:04Z dieggsy: Zipheir: wait, can you explain what you mean re: exposing the OS 2021-02-08T16:52:06Z wasamasa: worst plan9 implementation though, yes, there's no competition 2021-02-08T16:52:21Z wasamasa: nevertheless, I learned a lot from studying this project 2021-02-08T16:52:35Z wasamasa: the author however found more luck in designing and manufacturing hardware 2021-02-08T16:52:51Z siraben: Zipheir: that would be like the Lisp Machine OSes right? 2021-02-08T16:52:56Z siraben: the notion of everything-is-programmable 2021-02-08T16:53:07Z siraben: or the Xerox Alto's Smalltalk system 2021-02-08T16:53:55Z wasamasa: dieggsy: the above thing exposed OS resources as a file system to a lisp REPL 2021-02-08T16:53:55Z siraben: Zipheir: do you think it would make sense for a programmable editor to be written in a typed language? 2021-02-08T16:54:00Z siraben: perhaps gradually typed to be flexible 2021-02-08T16:55:17Z Zipheir: dieggsy: With the traditional OS/userspace program divide, anything the OS does that you'd like your program to also provide has to be reimplemented as an API in your program. Maybe there's a way to break that divide down. 2021-02-08T16:55:38Z mangol: jcowan: the vector operations SRFI sounds good. aren't these amenable to implementation using commonly available SIMD instructions? 2021-02-08T16:55:52Z Zipheir: siraben: Written, or programmed? 2021-02-08T16:55:54Z jcowan: Presumably. 2021-02-08T16:56:27Z Zipheir: siraben: As a background mental task these days, I'm trying to wrap my head around the implications of typing in command languages. 2021-02-08T16:56:38Z siraben: Zipheir: with something like Emacs, that distinction is blurry, heh. But programmed, I think. 2021-02-08T16:56:53Z siraben: command languages? 2021-02-08T16:57:00Z Zipheir: Shells, especially. 2021-02-08T16:57:08Z dieggsy: lol, woah 2021-02-08T16:57:19Z catonano quit (Quit: catonano) 2021-02-08T16:58:24Z Wezl quit (Ping timeout: 240 seconds) 2021-02-08T16:58:50Z siraben: Zipheir: well, I could imagine assigning types to the standard shell commands 2021-02-08T16:59:12Z siraben: and operators like | would be composition (or Kleisli composition if you capture effects in the type system) 2021-02-08T16:59:19Z mangol: command line arguments effectively have types: this is an integer, that is a filename, that is a directory name, ... 2021-02-08T16:59:48Z Zipheir: "Lisp is for building organisms -- imposing, breathtaking, dynamic structures built by squads fitting fluctuating myriads of simpler organisms into place." (Perlis, SICP foreward) Build the language up to the application! 2021-02-08T16:59:49Z mangol: types of input and output could be represented using sum types in many cases, but it's more complicated than for arguments 2021-02-08T17:00:44Z siraben: oh yeah, there's also notions of "exclusive or" in command line args 2021-02-08T17:00:51Z siraben: --a or --b but not both 2021-02-08T17:01:05Z siraben: well that's just Either 2021-02-08T17:02:09Z siraben: Surprised there's Scheme Shell but no ML shell 2021-02-08T17:02:16Z Zipheir: The interesting thing there is some sort of way to compose effectful operations (commands) in an applicative way. 2021-02-08T17:02:41Z Zipheir: If only there were some sort of functor things that are also applicative... 2021-02-08T17:02:45Z Zipheir: :) 2021-02-08T17:03:15Z siraben: Zipheir: the paper on Applicatives uses [[ ... ]] as the notation for lifting everything inside, so f a b becomes f <$> a <*> b 2021-02-08T17:03:27Z mangol: siraben: that's different; Either can handle only two cases 2021-02-08T17:03:54Z mangol: Zipheir: https://github.com/yallop/effects-bibliography 2021-02-08T17:04:19Z siraben: mangol: that's a great compilation of research 2021-02-08T17:04:35Z siraben: So much work on effects! 2021-02-08T17:05:29Z mangol: yeah it's impressive! 2021-02-08T17:05:56Z Zipheir: Wow, yeah. 2021-02-08T17:06:26Z raingloom joined #scheme 2021-02-08T17:08:07Z Wezl joined #scheme 2021-02-08T17:10:41Z mangol: siraben: in fact ML REPLs are quite similar to Scheme REPLs, and could probably be as easily turned into command shells 2021-02-08T17:11:40Z mangol: i still want to put as many lisp/scheme/ml implementations as will fit into one unix distro 2021-02-08T17:13:13Z siraben: mangol: what do you have so far? 2021-02-08T17:14:19Z Blukunfando joined #scheme 2021-02-08T17:14:41Z mangol: siraben: bits and pieces of work, and a general outline of what to do (what components to pick, how to structure the project) 2021-02-08T17:14:42Z badkins quit (Remote host closed the connection) 2021-02-08T17:15:24Z siraben: are you merely just building them or other things as well? 2021-02-08T17:15:26Z jcowan: Zipheir: Go to #sicl and talk to beach (Robert Strandh) about CLOSOS. 2021-02-08T17:15:35Z mangol: as many projects, it's quite doable and even reasonably straightforward; missing ingredients are time and people :) 2021-02-08T17:15:46Z jcowan: It's vaporware still, but he has some very good papers on the subject 2021-02-08T17:15:48Z badkins joined #scheme 2021-02-08T17:15:53Z Zipheir: jcowan: ty, will do. 2021-02-08T17:16:46Z mangol: siraben: i think we should amass a distro that ships with as much lisp/ml software as possible, incl. all kinds of applications and libraries 2021-02-08T17:17:18Z siraben: I'm biased but I think https://github.com/NixOS/nixpkgs/ has an ever increasing collection of software 2021-02-08T17:17:24Z mangol: it's hard to think from a lisp frame of mind when working on top of unix where all the applications are C/Python silos 2021-02-08T17:17:31Z siraben: Including several Lisp and ML implementations 2021-02-08T17:17:34Z mangol: and Guix is Nix + Scheme 2021-02-08T17:17:40Z siraben: Right. 2021-02-08T17:17:48Z tryte joined #scheme 2021-02-08T17:17:58Z mangol: it's more about what software you exclude than what you include 2021-02-08T17:17:59Z wasamasa: mangol: I guess you've never run into POSIX regex: https://github.com/pre-srfi/emacs#regular-expressions 2021-02-08T17:18:12Z siraben: Guix is better in that they actually use a programming language instead of a custom one, but being a GNU project they're pretty strict about licensing 2021-02-08T17:18:12Z wasamasa: mangol: ever used `find`? 2021-02-08T17:18:42Z wasamasa: > find: Unknown regular expression type ‘help’; valid types are ‘findutils-default’, ‘ed’, ‘emacs’, ‘gnu-awk’, ‘grep’, ‘posix-awk’, ‘awk’, ‘posix-basic’, ‘posix-egrep’, ‘egrep’, ‘posix-extended’, ‘posix-minimal-basic’, ‘sed’. 2021-02-08T17:19:08Z mangol: Guix supports custom channels [sic?] though i think. so if you wanted to be a bad citizen of GNU-land you could make a channel with proprietary stuff 2021-02-08T17:20:25Z badkins quit (Ping timeout: 240 seconds) 2021-02-08T17:20:41Z mangol: wasamasa: thanks for looking over the draft. i don't understand your find and posix references 2021-02-08T17:20:44Z Zipheir: wasamasa: Weird. What's the difference between posix-basic, sed, and ed, I wonder... 2021-02-08T17:21:13Z wasamasa: mangol: really, go use any of these basic tools supporting regex and you'll discover they have similar regex rules as emacs 2021-02-08T17:21:20Z siraben: Indeed such an unfree channel exists, but there's a warning on it not to discuss it publicly 2021-02-08T17:21:43Z Zipheir: Ouch. 2021-02-08T17:21:44Z wasamasa: mangol: man 7 regex 2021-02-08T17:21:49Z mangol: wasamasa: ah, right. so the idiosyncratic emacs regexp syntax isn't originated by emacs 2021-02-08T17:22:04Z wasamasa: emacs only came up with extensions to handle syntax tables and stuff 2021-02-08T17:22:50Z mangol: wasamasa: thanks for pointing out the mistake. i'll fix it. 2021-02-08T17:23:29Z mangol: siraben: wow :D so GNU is pretty strict about this stuff. 2021-02-08T17:23:30Z wasamasa: that man page speaks of BRE which form the basis of emacs RE 2021-02-08T17:23:42Z wasamasa: grep does BRE by default 2021-02-08T17:23:54Z mangol: so that's why grep without -E never works right :D 2021-02-08T17:23:57Z wasamasa: yes 2021-02-08T17:24:52Z wasamasa: as for the APIs in that SRFI, I'm missing the movement parts 2021-02-08T17:24:56Z Zipheir: Basic regexes are still pretty fantastic. 2021-02-08T17:25:12Z mangol: wasamasa: yes, the draft is missing parts. i basically wrote it in one sitting 2021-02-08T17:25:16Z wasamasa: like, why is forward-line not there 2021-02-08T17:25:28Z Zipheir: EREs add + and (), which I consider useful, but the rest can get pretty bonkers. Never mind truly insane designs like PCRE. 2021-02-08T17:25:36Z pankajsg quit (Ping timeout: 240 seconds) 2021-02-08T17:25:46Z mangol: irregular regular expressions 2021-02-08T17:26:51Z wasamasa: the most basic text processing loop is (while (not (eobp)) (do-something (buffer-substring (line-beginning-position) (line-end-position))) (forward-line 1)) 2021-02-08T17:27:18Z Major_Biscuit quit (Ping timeout: 272 seconds) 2021-02-08T17:27:37Z wasamasa: that allows you to process every line in the buffer 2021-02-08T17:27:50Z wasamasa: skipping character classes forward/backward is also useful for basic parsing tasks 2021-02-08T17:28:27Z mangol: it's an open question whether character classes should be included in a scheme replica 2021-02-08T17:28:57Z wasamasa: maybe I don't understand the point of this exercise 2021-02-08T17:29:09Z wasamasa: but if you want to make running existing elisp easier, yeah, no 2021-02-08T17:30:17Z mangol: not running it as-is, but making it easy for people who already know elisp to write similar scheme code for random editing jobs 2021-02-08T17:30:48Z siraben: Zipheir: PCREs can parse context-free languages 2021-02-08T17:30:50Z mangol: i've found that the elisp API is often easier to use for those purposes than most programming language APIs (ruby, python, perl, etc.) 2021-02-08T17:31:01Z siraben: Wikipedia says, "For example, the pattern \((a*|(?R))*\) will match any combination of balanced parentheses and "a"s. " 2021-02-08T17:32:59Z Zipheir: siraben: That's not a good thing for "regular" expressions. 2021-02-08T17:33:14Z siraben: Exactly! 2021-02-08T17:40:09Z amirouche joined #scheme 2021-02-08T17:41:00Z notzmv quit (Read error: Connection reset by peer) 2021-02-08T17:54:35Z notzmv joined #scheme 2021-02-08T18:06:02Z X-Scale` joined #scheme 2021-02-08T18:06:54Z X-Scale quit (Ping timeout: 256 seconds) 2021-02-08T18:06:55Z X-Scale` is now known as X-Scale 2021-02-08T18:09:10Z amirouche quit (Ping timeout: 256 seconds) 2021-02-08T18:12:44Z Zipheir: mangol: Nice start to the Emacs document. 2021-02-08T18:21:01Z mangol: Zipheir: thanks. i started perusing the Edwin source and it's nice code. it would probably make more sense to make Portable Edwin than re-implement this. 2021-02-08T18:21:18Z wasamasa: x11 srfi when 2021-02-08T18:21:39Z mangol: the Edwin API is not quite same as the GNU Emacs API; sometimes the same procedures have different names 2021-02-08T18:22:51Z mangol: cloc says Edwin is 60k lines of Scheme, excluding blank and comment lines 2021-02-08T18:23:10Z Zipheir: wasamasa: I'm guessing you're joking, but I'd say that a Scheme-xlib would be a useful thing. 2021-02-08T18:23:48Z mangol: there are a few xlib bindings listed at https://misc.lassi.io/2019/packhack.html 2021-02-08T18:24:23Z mangol: it would be nice to find a good set of primitives on top of which Portable Edwin can be implemented 2021-02-08T18:24:39Z mangol: those primitives could be enshrined in a SRFI which various scheme implementations could choose to provide 2021-02-08T18:24:47Z wasamasa: I'm indeed in that mood 2021-02-08T18:24:56Z theruran quit (Ping timeout: 240 seconds) 2021-02-08T18:25:04Z mangol: so everyone could run Edwin on their favorite scheme, and that would improve both edwin and the scheme implementations 2021-02-08T18:25:33Z d_run quit (Read error: Connection reset by peer) 2021-02-08T18:25:43Z d_run joined #scheme 2021-02-08T18:25:47Z bchar quit (Read error: Connection reset by peer) 2021-02-08T18:26:07Z theruran joined #scheme 2021-02-08T18:26:13Z bchar joined #scheme 2021-02-08T18:28:09Z mangol: there's also https://github.com/scheme/edwin48 from 2014 "MIT Scheme's Edwin Editor written on top of Scheme48 and SCSH 2021-02-08T18:28:22Z wasamasa: I dunno, it feels like building a skyscraper out of cards 2021-02-08T18:29:49Z mangol: also https://buy.edwin.pizza/ 2021-02-08T18:32:04Z mangol: which part of the software maps to the cards in your metaphor? 2021-02-08T18:32:22Z wasamasa: think of each paren as a card :P 2021-02-08T18:32:50Z mangol: swamp football is a sport in my country 2021-02-08T18:33:12Z mangol: so i can make the association :D 2021-02-08T18:33:19Z Zipheir: Parens are strong things. https://xkcd.com/297/ 2021-02-08T18:33:33Z wasamasa: the reasoning behind that mental picture is, yes, it's impressive what you can build out of cards, but it's not how houses are built 2021-02-08T18:33:53Z mangol: tfw still no civilized age 2021-02-08T18:34:26Z wasamasa: the other reasoning is that using cards ignores so much existing work and knowledge and cooperation 2021-02-08T18:35:14Z mangol: just to be clear, i'm not suggesting to replicate GNU Emacs + MELPA in Scheme 2021-02-08T18:35:15Z wasamasa: Mark Tarver may very well rant about programming in C being like using tweezers to create a piece of art 2021-02-08T18:35:44Z wasamasa: but it's missing the part of people creating rock solid foundations to be reused by others 2021-02-08T18:36:41Z mangol: C programmers don't build solid foundations. but they often do build complete foundations. 2021-02-08T18:36:51Z wasamasa: what else do you call ABI compatibility 2021-02-08T18:37:55Z mangol: how does ABI compatibility relate to emacs? 2021-02-08T18:38:14Z wasamasa: surprisingly lot actually 2021-02-08T18:38:15Z mangol: GNU Emacs has so many features that it's in a different ballpark from something like Edwin 2021-02-08T18:38:36Z wasamasa: emacs used to have a different versioning where the first number was about the API compatibility level 2021-02-08T18:38:42Z mangol: even if you made Edwin API-compatible with elisp, it wouldn't help because Edwin wouldn't have nearly as many features 2021-02-08T18:38:46Z wasamasa: this was dropped when it became obvious it would never increment 2021-02-08T18:39:00Z wasamasa: hence the jump from 1.x to 16.x 2021-02-08T18:39:14Z mangol: early semver 2021-02-08T18:39:25Z wasamasa: they leave an awful lot of time happen between actually removing deprecated features 2021-02-08T18:40:13Z wasamasa: imagine that in hobbyist land of "I don't care, I'll just delete most of my code I've put online because I hate other people" 2021-02-08T18:45:12Z mangol: how do we connect this tangent back to edwin? 2021-02-08T18:46:38Z wasamasa: well, you know my opinion on writing an interesting program confined to a single scheme implementation vs doing a balancing act to make it run on several scheme implementations 2021-02-08T18:47:05Z wasamasa: the latter is a cute exercise, but I can't see it working beyond writing benchmarks or academic interpreters/compilers 2021-02-08T18:47:40Z wasamasa: pick one and go as far as you can instead of drowning in a sea of compromises 2021-02-08T18:48:02Z ManDay joined #scheme 2021-02-08T18:48:24Z mangol: that's a bootstrapping problem. portability will improve slowly if at all if there aren't applications to drive that trend. 2021-02-08T18:48:51Z mangol: bootstrapping problems are solved when some people just go and do something where the immediate job is difficult/impractical 2021-02-08T18:49:35Z wasamasa: I sometimes ponder Bilbo Baggins saying that he feels like butter stretched too thin on a big piece of bread 2021-02-08T18:49:44Z mangol: from my point of view, single-implementation code is like throwaway code and i try to avoid it as much as possible 2021-02-08T18:49:55Z wasamasa: doing that to an already miniscule community is a death sentence 2021-02-08T18:50:19Z mangol: that's another bootstrapping problem. why doesn't the community grow? 2021-02-08T18:50:41Z wasamasa: growth isn't a metric to relentlessly optimize for 2021-02-08T18:50:51Z mangol: around scheme, i'm only interested in bootstrapping problems. i don't work on anything else 2021-02-08T18:50:59Z seepel joined #scheme 2021-02-08T18:51:00Z wasamasa: marketing you mean 2021-02-08T18:51:29Z seepel quit (Remote host closed the connection) 2021-02-08T18:51:30Z mangol: i don't think scheme is currently in a position where marketing is among the most helpful things to focus on 2021-02-08T18:51:42Z wasamasa: but what I read from you seems very much like marketing 2021-02-08T18:51:47Z mangol: it's still too DIY, and lack of portability is one of the main reasons for the DIY 2021-02-08T18:51:55Z wasamasa: let's ignore the current state of affairs and apply some wishful thinking to do better 2021-02-08T18:52:04Z mangol: exactly 2021-02-08T18:52:27Z wasamasa: call it community management or whatever then 2021-02-08T18:52:40Z mangol: it doesn't matter what it's called 2021-02-08T18:52:50Z wasamasa: but it does, words have meaning :D 2021-02-08T18:54:48Z ManDay quit (Quit: WeeChat 3.0) 2021-02-08T18:55:14Z wasamasa: funny that you call single-implementation code throwaway 2021-02-08T18:55:33Z wasamasa: didn't you call out some xlib bindings before 2021-02-08T18:55:56Z mangol: what is the point of these tangets? 2021-02-08T18:56:54Z wasamasa: understanding 2021-02-08T18:58:24Z Zipheir: mangol, wasamasa: Let's move on from this discussion, please. 2021-02-08T18:59:16Z mangol: i don't know what to say. i generally have complete confidence in my goals, after a long gestation period, but i have trouble communicating them to others. i'm not sure more communication helps at a commensurate rate. 2021-02-08T19:00:09Z mangol: maybe give it the benefit of the doubt and wait a year or two. if it works, maybe you'll understand retroactively. if it doesn't work, it's not that serious. those were the best projects i could think of and it was fun to attempt. 2021-02-08T19:00:47Z mangol: Zipheir: i'm not offended :) it's good to be driven to understand 2021-02-08T19:01:01Z wasamasa: I thought I spotted some inconsistency there 2021-02-08T19:01:16Z wasamasa: like, they're throwaway, but they're also useful for API design 2021-02-08T19:02:34Z mangol: you're reasoning at a very fine level of detail when we're talking about problems of sweeping scope 2021-02-08T19:03:24Z mangol: turns of phrase are not necessarily meant to be interpreted literally. they can express feelings, some of which are personal or otherwise context-dependent, and don't apply universally 2021-02-08T19:04:10Z mangol: it's generally very difficult to understand at a fine level of detail where other people are coming from, even with the best of intentions. 2021-02-08T19:04:51Z wasamasa: online communication was a mistake 2021-02-08T19:06:19Z mangol: a big part of why communication is difficult is that software development is a cultural activity. cultures aren't reasoned into being; they grow from a seed in a particular environment to fit that environment. can be incomprehensible when transplanted into another environment. 2021-02-08T19:06:37Z wasamasa: I guess I'll just let people make a few hundred SRFIs more while solving practical problems confined to a single scheme implementation 2021-02-08T19:06:37Z mangol: that's why lisp is perennially misunderstood too 2021-02-08T19:07:47Z mangol: do portable scheme projects offend you somehow? 2021-02-08T19:08:07Z wasamasa: so far my experiences with them have left me disillusioned 2021-02-08T19:08:55Z mangol: great, so we arrive again at the crux of the matter :) it's a debate over how much optimism or pessimism to have around projects of that scope 2021-02-08T19:11:06Z mangol: that kind of problem can be solved simply by people sticking to their guns. optimistic people attempt sweeping projects; pessimistic people don't join those projects. 2021-02-08T19:11:10Z mangol: wait and see what happens. 2021-02-08T19:11:52Z mangol: if the projects start showing more promise, the optimistic people will have an easier time recruiting more people who aren't quite as optimistic. if the projects look like failures, harder time recruiting 2021-02-08T19:12:21Z mangol: the ebb and flow of any culture 2021-02-08T19:13:45Z wasamasa: as Steve Yegge put it, scheme is like some exotic sports car 2021-02-08T19:14:06Z wasamasa: given the choice between actually using an existing car and designing components to work on all exotic sports cars, well... 2021-02-08T19:15:28Z Zipheir: Stevie's Lisp rant is not among his best. 2021-02-08T19:15:33Z mangol: that's an interesting metaphor, and illuminates your point of view. 2021-02-08T19:15:41Z wasamasa: it's actually one about emacs: https://steve-yegge.blogspot.com/2008/11/ejacs-javascript-interpreter-for-emacs.html 2021-02-08T19:16:17Z mangol: since sports car scarcity economics don't apply to software, i'd like to make them more widely available and easier to use. 2021-02-08T19:18:42Z mangol: one thing that may be helpful in understanding my point of view that i'm drawn to risky projects. i'd rather attempt something i really want with a 90% chance of failure, than work on a goal that doesn't excite me with a 90% change of success. 2021-02-08T19:18:55Z wasamasa: lol 2021-02-08T19:19:03Z wasamasa: have you considered algo trading 2021-02-08T19:19:08Z mangol: lol 2021-02-08T19:19:14Z mangol: in scheme 2021-02-08T19:19:20Z wasamasa: yes, use stalin 2021-02-08T19:19:28Z wasamasa: double the trouble, double the risk 2021-02-08T19:19:36Z mangol: finance is boring 2021-02-08T19:19:48Z wasamasa: I've yet to find people capable of predicting the stocks market 2021-02-08T19:19:56Z Zipheir: I suppose there's always a missing premise in these "portable Scheme vs. single implementation" discussions which results in a lot of confusion: it's assumed that everyone has the same goal for the language(s) they want to improve/work on/market. 2021-02-08T19:20:19Z Zipheir: What's the goal, in other words? 2021-02-08T19:20:22Z gwatt: wasamasa: I think most actual studies have yet to find people who can predict the stock market 2021-02-08T19:21:10Z mangol: Zipheir: yes, the cultural aspect. culture is always implicit, takes great pains to try to explain it. 2021-02-08T19:21:12Z wasamasa: Zipheir: ok, you got me there, having fun is a rather fuzzy goal 2021-02-08T19:21:46Z Zipheir: See, this is a big problem. 2021-02-08T19:22:11Z wasamasa: I remember this person on #chicken showing up for a month or two trying to make as many SRFIs available as possible 2021-02-08T19:22:30Z wasamasa: I don't think they had much fun with that, only this vague idea it would look great if there were a bigger list of supported SRFIs 2021-02-08T19:22:42Z Zipheir: Indeed. I'm a bit concerned about those eggs, given that ve disappeared from #chicken after creating them. 2021-02-08T19:23:25Z wasamasa: the actual goal behind that, hm, making the ecosystem friendlier to beginners? 2021-02-08T19:23:37Z Zipheir: That was the stated goal, IIRC. 2021-02-08T19:23:51Z mangol: i'm always perplexed when people worry that other people might not know how to have fun or pick goals they like 2021-02-08T19:24:21Z wasamasa: burnout is real 2021-02-08T19:24:48Z mangol: he's a grown up, he can pick his own goals and pace of working 2021-02-08T19:25:07Z mangol: people make too many assumptions about what's good for strangers on the internet 2021-02-08T19:25:32Z jcowan: How else? That's why marketing departments exist. 2021-02-08T19:25:52Z Blukunfando: There’d be too little to argue about otherwise. 2021-02-08T19:25:59Z mangol: why do ordinary people think they know how others should live? 2021-02-08T19:26:03Z jcowan: "Sales tries to sell product; marketing makes sure that product can be sold." 2021-02-08T19:26:25Z jcowan: mangol: At one level because humans are not all that different from one another. 2021-02-08T19:27:45Z mangol: disagree 2021-02-08T19:28:02Z Zipheir: mangol: The challenge in trying to work with others on something is that no-one's particularly good at expressing what they're really trying to accomplish, or they assume that everyone else is trying to do the same thing. 2021-02-08T19:29:35Z jcowan: mangol: Take a look at "Popular Delusions and the Madness of Crowds" sometime 2021-02-08T19:29:51Z mangol: jcowan: i've always felt deflated when other people give me advice on how to live, and miserable they few times i've followed their advice. that's why i don't presume to advise others. 2021-02-08T19:30:19Z jcowan: Unsolicited advice mostly sucks, it's true. 2021-02-08T19:30:31Z mangol: it's generally the people who have the least understanding of others' situation who are the most ready to give advice. 2021-02-08T19:31:47Z wasamasa: I've pondered this making the ecosystem friendlier a bit and believe a scheme-toolbox.com would help more than going through 200 srfis 2021-02-08T19:31:54Z jcowan: Indeed. But "how people should live" does not imply "tell individuals". Write a book. 2021-02-08T19:31:58Z mangol: Zipheir: beyond a certain (not very high) project complexity, explaining what you're trying to accomplish is basically the same thing as accomplishing it and showing the result 2021-02-08T19:32:16Z wasamasa: or toolbox.scheme.org 2021-02-08T19:32:34Z mangol: it's not possible to explain complex projects very well to people who don't have the same background as you without completing them to a substantial degree 2021-02-08T19:32:36Z jcowan: mangol: In that case your project is too complex for you to understand. 2021-02-08T19:32:45Z Zipheir: mangol: Not in a technical sense, really. Your goals in trying to work with other people on a language, piece of software, or whatever. 2021-02-08T19:32:54Z wasamasa: it would be challenging to group srfis, akku/snow, public domain and implementation-specific code that way, but it could be interesting to try 2021-02-08T19:33:03Z wasamasa: even if it just shows where the big holes are 2021-02-08T19:33:43Z jcowan: See /r/explainlikeimfive, which I have on occasion found very useful, esp. when researching "ironic facial hair" to find out if mine is ironic (answer: no) 2021-02-08T19:33:56Z badkins joined #scheme 2021-02-08T19:34:15Z Zipheir: mangol: Indeed, any project so complex that someone working on it can't explain it without showing me the finished product is probably way too complex. 2021-02-08T19:35:04Z Zipheir: (I recall trying to get amirouche to tell me what some massive system he was working on was actually supposed to *do*...) 2021-02-08T19:35:18Z wasamasa: the proof is in eating the pudding 2021-02-08T19:35:26Z jcowan: s/esp./e.g. 2021-02-08T19:36:09Z mangol: once again, i disagree with all of that 2021-02-08T19:36:15Z mangol: except wasamasa's toolbox.scheme.org idea :) 2021-02-08T19:36:40Z wasamasa: prior art: https://www.ruby-toolbox.com/ https://www.ruby-toolbox.com/ 2021-02-08T19:36:51Z wasamasa: err 2021-02-08T19:36:53Z wasamasa: https://www.clojure-toolbox.com/ 2021-02-08T19:36:54Z mangol: jcowan if you really think people are so similar that a book can advise everyone on how to live, maybe you haven't met very many different kinds of people or known them too well 2021-02-08T19:37:05Z Zipheir: We're all trying to avoid getting lost in the complexities of our own making. 2021-02-08T19:37:07Z wasamasa: I like the color tagging on the clojure one, that could be done with compatible implementations 2021-02-08T19:37:28Z mangol: to me it's extremely obvious that people need very different things in their lives, not to mention in different phases of their lives 2021-02-08T19:37:51Z Blukunfando: Just make the book a few billion times bigger. 2021-02-08T19:37:58Z mangol: about right :) 2021-02-08T19:40:02Z mangol: advice-giving is usually wel correlated with the drive to "protect" other people somehow. but some people can't stand moderation and lack of risk-taking. 2021-02-08T19:40:31Z mangol: different people need the opposite lifestyles, and are miserable if they are all forced into the same lifestyle 2021-02-08T19:40:45Z kam1 joined #scheme 2021-02-08T19:41:02Z Zipheir: To paraphrase Marshall Rosenberg somewhat, I would say that fundamental human needs are pretty similar, while the ways in which we try to satisfy those needs varies immensely. 2021-02-08T19:41:19Z wasamasa: yeah, there is something about the protection bit 2021-02-08T19:42:30Z kam1 quit (Read error: Connection reset by peer) 2021-02-08T19:42:45Z Blukunfando: Like all annoying behaviors, it’s also a good way to show you can afford to annoy people. 2021-02-08T19:42:54Z jcowan: mangol: Obviously the wider the audience, the more astronaut-ish must be the view. 2021-02-08T19:43:52Z jcowan: But my point was that you can avoid reading a book much more easily than you can ignore someone advising you 1-1. 2021-02-08T19:44:35Z jcowan: In any case, this started by talking about how to make things other people will like/want to use, which indeed involves understanding your audience. 2021-02-08T19:45:36Z jcowan: $EMPLOYER sells an AI product to lawyers, so it has on staff lots of lawyers on the assumption that lawyers are likely to know (to a first approximation) what other lawyers will like/want/accept/pay for. 2021-02-08T19:45:52Z klovett quit (Remote host closed the connection) 2021-02-08T19:47:04Z mangol: it's difficult to give any general advice to all people without ending up with platitudes. 2021-02-08T19:47:31Z klovett joined #scheme 2021-02-08T19:47:32Z Blukunfando: It’s easy if you don’t actually care about giving good advice. 2021-02-08T19:47:39Z mangol: lol 2021-02-08T19:47:44Z Zipheir: mangol: Because there's way more advising than listening. 2021-02-08T19:47:47Z mangol: Blukunfando: we think alike 2021-02-08T19:51:06Z mangol: Zipheir: it's not just about advising too much; it's that advice isn't generally applicable. 2021-02-08T19:52:14Z mangol: in my experience, the least adventurous people tend to give the most advice, and show the narrowest understanding of human nature 2021-02-08T19:53:32Z Blukunfando: By the way, was that how you ended up talking about CLOSOS? 2021-02-08T19:59:06Z gravicappa quit (Ping timeout: 246 seconds) 2021-02-08T19:59:34Z Zipheir: We were discussing ways of building up an underlying OS interface to an application layer. 2021-02-08T20:03:11Z ZombieChicken joined #scheme 2021-02-08T20:05:35Z Zipheir: jcowan: Dangling SRFI 217 question: What do iset-delete-min/-max return for an empty iset? 2021-02-08T20:07:00Z aeth_ joined #scheme 2021-02-08T20:07:03Z aeth quit (Disconnected by services) 2021-02-08T20:07:13Z aeth_ is now known as aeth 2021-02-08T20:08:24Z jcowan: It's an error, I would think 2021-02-08T20:09:18Z Zipheir: Fine. There's also the (SRFI 146) mapping-pop pattern of providing an optional failure continuation. 2021-02-08T20:09:29Z Zipheir: (Reinventing the Maybe wheel yet again.) 2021-02-08T20:11:39Z jcowan: Blukunfando: Zipheir was interested in language-all-the-way-down (and up) systems. 2021-02-08T20:19:39Z klovett quit (Remote host closed the connection) 2021-02-08T20:20:02Z aeth_ joined #scheme 2021-02-08T20:20:08Z aeth quit (Disconnected by services) 2021-02-08T20:20:14Z aeth_ is now known as aeth 2021-02-08T20:31:08Z _apg joined #scheme 2021-02-08T20:34:56Z amirouche joined #scheme 2021-02-08T20:36:22Z skapata quit (Remote host closed the connection) 2021-02-08T20:49:12Z s-video joined #scheme 2021-02-08T20:54:42Z ecraven: ;) 2021-02-08T20:57:38Z s-video quit (Ping timeout: 264 seconds) 2021-02-08T21:00:24Z amirouche: ecraven: I got a brillant idea 2021-02-08T21:00:37Z amirouche: ecraven: I implement cross platform perfect network stack for scheme... 2021-02-08T21:00:54Z amirouche: ... and you give half your fortune. 2021-02-08T21:00:57Z amirouche: :D 2021-02-08T21:01:09Z s-video joined #scheme 2021-02-08T21:01:15Z ecraven: hehe, my fortune is negative, so not sure you want half of that :P 2021-02-08T21:01:24Z amirouche: oh no 2021-02-08T21:01:47Z amirouche: I always got brillant ideas, then someone make me realise it is not a good idea 2021-02-08T21:02:04Z amirouche: ecraven: seriously, what scheme implementation outside mit scheme and chickend and chez do you use? 2021-02-08T21:02:11Z amirouche: s/chickend/chicken/ 2021-02-08T21:02:18Z ecraven: I've used MIT/GNU for a long time, still sometimes do 2021-02-08T21:02:28Z ecraven: I'm trying to use more different ones, but mostly work with Chez for now 2021-02-08T21:02:40Z wasamasa: trying to figure out what could possibly give me an error for car when doing lmdb stuff 2021-02-08T21:02:45Z amirouche: does MIT support multiple cores thread? 2021-02-08T21:03:22Z amirouche tap on wasamasa and say: "share the code luke" 2021-02-08T21:03:35Z ecraven: amirouche: not sure, a few years ago I think it didn't, however it *does* support green threads, which block on IO, so in some ways that is *better* than what you get with multiple threads :P 2021-02-08T21:03:43Z wasamasa: it must be something very stupid 2021-02-08T21:03:50Z wasamasa: because the call trace is leading me astray 2021-02-08T21:03:51Z amirouche: ecraven: I need both green and posix threads. 2021-02-08T21:04:04Z ecraven: does *any* scheme have both? 2021-02-08T21:04:20Z hendursaga joined #scheme 2021-02-08T21:04:28Z amirouche: ecraven: Chez, Guile and the wind thing I keep forgetting the name 2021-02-08T21:04:31Z amirouche: cyclone 2021-02-08T21:04:39Z ecraven: amirouche: do I understand correctly that srfi-168 stores all permutations of subject + predicates as the key in the OKVS? 2021-02-08T21:04:49Z ecraven: I don't think chez has green threads? 2021-02-08T21:04:59Z amirouche: I mean, if you have call/cc and posix thread yuo can have green thread, but greenthread might not be as fast as MIT green threads. 2021-02-08T21:05:23Z amirouche: ecraven: not all permutation, that is the giant math proof in the ack section 2021-02-08T21:05:37Z badkins quit (Remote host closed the connection) 2021-02-08T21:05:50Z ecraven: the point is, if (read) blocks your thread, there is nothing you can do about it, unless you rewrite the actual implementation or re-implement read 2021-02-08T21:05:53Z amirouche: a subset of the permutation, just enough to be able to execute any query with any pattern. 2021-02-08T21:05:54Z ecraven: such support needs to be built-in 2021-02-08T21:06:01Z ecraven: ok, thanks, I'll look into that 2021-02-08T21:06:09Z amirouche: ecraven: no? 2021-02-08T21:06:14Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-08T21:06:18Z amirouche: ecraven: because epoll and kqueue 2021-02-08T21:06:44Z ecraven: I implemented *very* basic chez libraries for leveldb, foundationdb, lmdb and kyoto-cabinet, some things to play around with ;) 2021-02-08T21:06:46Z amirouche: python does not have async builtin, it has async / await and the associated protocol builtin. 2021-02-08T21:06:55Z badkins joined #scheme 2021-02-08T21:07:19Z ecraven: how would you tell your implementation (which hides everything about IO, if you're unlucky even the fds) to use epoll or kqueue? 2021-02-08T21:07:40Z amirouche: because epoll and kqueue are bound in C, exposed in python 2021-02-08T21:07:45Z amirouche: give me 5s 2021-02-08T21:07:53Z ecraven: that's nice for python, but I'm talking about some arbitrary Scheme implementation 2021-02-08T21:08:23Z ecraven: thanks, this is a very interesting and relevant link: https://math.stackexchange.com/q/3146568/23663 2021-02-08T21:09:09Z wasamasa: amirouche: I'd be more inclined if I didn't need to do this ugly hack of unpack* in srfi-168 2021-02-08T21:10:37Z amirouche: ecraven: yeah, but it applies to some scheme: https://github.com/python/cpython/blob/bf2e7e55d7306b1e2fce7dce767e8df5ff42cf1c/Lib/asyncio/base_events.py#L1806 2021-02-08T21:10:37Z rudybot: https://teensy.info/X8E6f0tdQX 2021-02-08T21:11:05Z amirouche: the only problem is errno 2021-02-08T21:11:15Z ecraven: that was my point, if the implementation doesn't support it, there's no easy way to add it yourself (in general) 2021-02-08T21:11:48Z ecraven: sorry, off again for tonight, I'll read up on that "boolean lattice by minimal number of maximal chains" :D thanks for that link! 2021-02-08T21:11:53Z cubik quit (Quit: Leaving.) 2021-02-08T21:11:59Z amirouche: ecraven: :') 2021-02-08T21:12:12Z aeth quit (Ping timeout: 256 seconds) 2021-02-08T21:12:38Z amirouche: wasamasa: i will try to replace it 2021-02-08T21:13:07Z ecraven: maybe you have some time tomorrow, I have more questions ;) 2021-02-08T21:14:12Z aeth joined #scheme 2021-02-08T21:16:39Z amirouche: wasamasa: you will hate but the original implementation of pack returns a list 2021-02-08T21:16:49Z amirouche: https://github.com/scheme-requests-for-implementation/srfi-167/blob/master/srfi/pack.scm#L211-L213 2021-02-08T21:17:24Z clog joined #scheme 2021-02-08T21:17:34Z amirouche: ecraven: I keep wondering why you do everything on your own and do join forces 2021-02-08T21:17:53Z amirouche: I have foundationdb, wiredtiger and sqlite lsm extension bindings.. 2021-02-08T21:18:24Z wasamasa: it's a bit hard to trust someone who has no issues sabotaging their work :P 2021-02-08T21:18:37Z amirouche: the code is there ^ 2021-02-08T21:18:48Z wasamasa: like, where is guile-wiredtiger 2021-02-08T21:18:51Z amirouche: wasamasa: true, again true, but ecraven does not know it 2021-02-08T21:21:56Z amirouche: I really need to see software engineer psychatrist. 2021-02-08T21:23:30Z amirouche: there is guile bindings of wiredtiger, they are still around 2021-02-08T21:24:10Z amirouche: https://github.com/amirouche/babelia/blob/master/babelia/okvs/wiredtiger.scm 2021-02-08T21:25:18Z wasamasa: ok, so they're just somewhere else 2021-02-08T21:25:53Z wasamasa: that's reassuring 2021-02-08T21:27:08Z amirouche: wiht a almost complete and tested R7RS libraries :) 2021-02-08T21:27:11Z amirouche proud 2021-02-08T21:27:23Z amirouche: (taken from sample implementations) 2021-02-08T21:29:05Z mangol: great stuff 2021-02-08T21:30:18Z amirouche: tx 2021-02-08T21:32:09Z amirouche: but the crawler of that project is buggy 2021-02-08T21:32:16Z amirouche: the search engine hence is more difficult to test. 2021-02-08T21:32:34Z amirouche: but if you submit html that is already mirror on disk, with some code one can test the search engine 2021-02-08T21:32:56Z amirouche: also, I myself, always need 30min to figure in which order to run the different services. 2021-02-08T21:35:59Z wasamasa: hum, software engineer psychiatrist 2021-02-08T21:36:08Z wasamasa: I have some thoughts on that, feel free to send me a /msg 2021-02-08T21:36:20Z Zipheir: M-x doctor 2021-02-08T21:36:25Z wasamasa: because that's definitely up and beyond this channel topic 2021-02-08T21:37:29Z amirouche: na 2021-02-08T21:37:40Z amirouche: I need sleep more than speaking to stranger. 2021-02-08T21:37:46Z amirouche: thanks for chat. 2021-02-08T21:37:48Z amirouche quit (Quit: WeeChat 2.8) 2021-02-08T21:37:49Z evdubs quit (Remote host closed the connection) 2021-02-08T21:37:51Z klovett joined #scheme 2021-02-08T21:38:07Z evdubs joined #scheme 2021-02-08T21:50:25Z s-video quit (Ping timeout: 240 seconds) 2021-02-08T21:55:38Z Zipheir: Hmm, does Gambit not have some kind of library/module system? 2021-02-08T21:56:53Z mario-goulart: I think there's something called blackhole, which gives an idea about what you are getting into. 2021-02-08T21:57:37Z Wezl quit (Ping timeout: 272 seconds) 2021-02-08T21:58:11Z wasamasa: lol 2021-02-08T21:59:46Z Zipheir: Heh. 2021-02-08T22:00:22Z Zipheir: Well, gerbil provides R7RS libraries, allegedly; it spits out most of the .sld files that I've tried, though. 2021-02-08T22:14:53Z klovett quit (Remote host closed the connection) 2021-02-08T22:15:31Z klovett joined #scheme 2021-02-08T22:17:21Z ZombieChicken quit (Remote host closed the connection) 2021-02-08T22:17:45Z ZombieChicken joined #scheme 2021-02-08T22:57:43Z s-video joined #scheme 2021-02-08T23:04:20Z rickbutton quit (Read error: Connection reset by peer) 2021-02-08T23:04:34Z rickbutton joined #scheme 2021-02-08T23:06:18Z phillbush quit (Remote host closed the connection) 2021-02-08T23:07:10Z badkins quit (Remote host closed the connection) 2021-02-08T23:07:39Z badkins joined #scheme 2021-02-08T23:12:54Z badkins quit (Ping timeout: 256 seconds) 2021-02-08T23:20:46Z Wezl joined #scheme 2021-02-08T23:23:42Z civodul quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-08T23:24:30Z phillbush joined #scheme 2021-02-08T23:25:05Z rgherdt quit (Ping timeout: 246 seconds) 2021-02-08T23:26:01Z badkins joined #scheme 2021-02-08T23:34:56Z skapata joined #scheme 2021-02-08T23:38:21Z raingloom quit (Ping timeout: 256 seconds) 2021-02-08T23:39:44Z Wezl quit (Ping timeout: 240 seconds) 2021-02-08T23:43:30Z pankajsg joined #scheme 2021-02-08T23:45:39Z clone11 quit (Quit: WeeChat 3.0) 2021-02-08T23:49:53Z Wezl joined #scheme 2021-02-08T23:53:35Z gzj joined #scheme 2021-02-08T23:57:21Z badkins quit (Remote host closed the connection) 2021-02-08T23:57:54Z badkins joined #scheme 2021-02-08T23:58:31Z u0_a61 joined #scheme 2021-02-08T23:58:35Z Wezl quit (Ping timeout: 272 seconds) 2021-02-09T00:02:14Z badkins quit (Remote host closed the connection) 2021-02-09T00:02:31Z badkins joined #scheme 2021-02-09T00:03:18Z raingloom joined #scheme 2021-02-09T00:23:42Z acarrico quit (Ping timeout: 246 seconds) 2021-02-09T00:25:15Z Anonymous_ quit (Remote host closed the connection) 2021-02-09T00:26:55Z acarrico joined #scheme 2021-02-09T00:28:17Z u0_a61 quit (Ping timeout: 265 seconds) 2021-02-09T00:37:29Z klovett quit (Remote host closed the connection) 2021-02-09T00:37:47Z klovett joined #scheme 2021-02-09T00:43:31Z c7d9 joined #scheme 2021-02-09T00:46:48Z c7d9_ quit (Ping timeout: 246 seconds) 2021-02-09T00:51:54Z s-video quit (Ping timeout: 272 seconds) 2021-02-09T01:00:44Z jgart joined #scheme 2021-02-09T01:01:29Z raingloom quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) 2021-02-09T01:10:16Z badkins quit (Remote host closed the connection) 2021-02-09T01:10:48Z badkins joined #scheme 2021-02-09T01:15:06Z dieggsy: mario-goulart: loool 2021-02-09T01:15:15Z badkins quit (Ping timeout: 256 seconds) 2021-02-09T01:23:47Z jgart: does anyone happen to know some major differences of how the struct in racket is different from the record implemented by srfi-9? 2021-02-09T01:23:56Z badkins joined #scheme 2021-02-09T01:24:03Z jgart: maybe just at the api interface level or how it behaves 2021-02-09T01:26:25Z u0_a61 joined #scheme 2021-02-09T01:31:07Z u0_a61 quit (Ping timeout: 265 seconds) 2021-02-09T01:38:36Z acarrico quit (Ping timeout: 246 seconds) 2021-02-09T01:39:37Z clog quit (Ping timeout: 265 seconds) 2021-02-09T01:56:07Z Zipheir: jgart: Racket structs come with a *lot* more, including subtyping, reflection, and other stuff. 2021-02-09T01:56:44Z Zipheir: jgart: R7RS/SRFI 9 records just give you something like the bare minimum. 2021-02-09T01:58:40Z u0_a61 joined #scheme 2021-02-09T02:05:56Z gzj quit (Remote host closed the connection) 2021-02-09T02:06:17Z gzj joined #scheme 2021-02-09T02:06:45Z cjb joined #scheme 2021-02-09T02:07:09Z u0_a61 quit (Ping timeout: 272 seconds) 2021-02-09T02:10:20Z phillbush quit (Quit: Leaving) 2021-02-09T02:17:47Z daviid` quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-09T02:20:02Z daviid joined #scheme 2021-02-09T02:20:18Z daviid is now known as Guest47549 2021-02-09T02:21:03Z Guest47549 is now known as daviid 2021-02-09T02:21:07Z gzj quit (Remote host closed the connection) 2021-02-09T02:21:27Z gzj joined #scheme 2021-02-09T02:28:14Z u0_a61 joined #scheme 2021-02-09T02:31:40Z cjb quit (Remote host closed the connection) 2021-02-09T02:32:12Z cjb joined #scheme 2021-02-09T02:41:44Z skapata quit (Remote host closed the connection) 2021-02-09T02:46:17Z jgart: Zipheir thanks for the explanation! 2021-02-09T02:56:17Z badkins quit (Remote host closed the connection) 2021-02-09T02:59:54Z u0_a61 is now known as Wezl 2021-02-09T03:05:11Z gzj quit (Remote host closed the connection) 2021-02-09T03:06:38Z Wezl quit (Ping timeout: 264 seconds) 2021-02-09T03:26:43Z bchar quit (Read error: Connection reset by peer) 2021-02-09T03:26:50Z d_run quit (Read error: Connection reset by peer) 2021-02-09T03:27:04Z jgart quit (Quit: Ping timeout (120 seconds)) 2021-02-09T03:27:27Z rickbutton quit (Read error: Connection reset by peer) 2021-02-09T03:27:27Z CORPORAL_groovy quit (Read error: Connection reset by peer) 2021-02-09T03:27:35Z theruran quit (Read error: Connection reset by peer) 2021-02-09T03:28:20Z bchar joined #scheme 2021-02-09T03:28:57Z CORPORAL_groovy joined #scheme 2021-02-09T03:29:34Z d_run joined #scheme 2021-02-09T03:31:44Z rickbutton joined #scheme 2021-02-09T03:31:51Z theruran joined #scheme 2021-02-09T03:41:16Z Garbanzo joined #scheme 2021-02-09T04:26:26Z dieggsy: is common lisp's being a lisp-2 normally seen as a good thing? 2021-02-09T04:26:52Z dieggsy: it's just weird to me that common lisp was created after scheme but just... seemed to throw away a lot of scheme's really elegant design principles 2021-02-09T04:27:30Z dieggsy: not implying it was based on it at all, but they must have known about scheme and thought a different way was better... 2021-02-09T04:27:45Z dieggsy: which i find odd, but i guess potato potahto just my opinion 2021-02-09T04:28:15Z aeth: Lisp-1 vs Lisp-2 leads to different styles. 2021-02-09T04:28:28Z aeth: Lisp-2 makes higher order functions look cleaner 2021-02-09T04:28:45Z aeth: Lisp-1 means you can use the same name in multiple situations, e.g. for a function, a type, and a local variable. 2021-02-09T04:30:16Z aeth: In a Lisp-2, if you don't call your item of type list created with the function list a list, then you're kind of wasting the Lisp-2. (Notice how there are three, not two, major namespaces and an unbounded number of minor ones.) 2021-02-09T04:30:37Z aeth: s/Lisp-1 means/Lisp-2 means/ 2021-02-09T04:31:12Z aeth: But a Lisp-2 also means you can't just do (define (foo f) (f 42)) 2021-02-09T04:33:36Z aeth: #scheme will select for people who don't want to have to funcall. #lisp will select for people who embrace the naming style that I just described. 2021-02-09T04:34:27Z aeth: s/Lisp-2 makes higher order functions look cleaner/Lisp-1 makes higher order functions look cleaner/ 2021-02-09T04:34:51Z aeth: The most confusing part is that the name is incredibly misleading, so it's kind of hard to keep the flawed terminology straight this late at night. 2021-02-09T04:35:22Z dieggsy: aeth: i'm actually familiar with both, i used SBCL a solid amount before discovering chicken scheme 2021-02-09T04:35:27Z dieggsy: (emacs-lisp before that, too) 2021-02-09T04:35:43Z dieggsy: ......i guess i do just prefer the scheme way 2021-02-09T04:36:02Z Zipheir: The λ-calculus way. 2021-02-09T04:36:37Z dieggsy: Zipheir: the _almost_ λ-calculus way, really 2021-02-09T04:36:38Z aeth: The Scheme way is the common way across most programming languages, but it doesn't really work in a quasi-case-insensitive language like Common Lisp because now what do you do with type names? Most languages would just have the type created by list be type List and use case sensitivity to distinguish. 2021-02-09T04:37:08Z aeth: Although types are mostly used in special contexts so it's not as big of a deal as the variable vs function namespaces. 2021-02-09T04:37:37Z Zipheir: dieggsy: Well, yeah. But Church was writing first-class functions before Sussman and Steele were bore, so you've gotta give him credit. 2021-02-09T04:37:45Z Zipheir: s/bore/born/ 2021-02-09T04:38:19Z dieggsy: Zipheir: i was less discrediting him and commenting that scheme isn't strictly lambda calculus 2021-02-09T04:38:22Z dieggsy: i think it's fascinating 2021-02-09T04:39:06Z Zipheir: Hah, I was joking. 2021-02-09T04:39:28Z dieggsy: heh, no wories 2021-02-09T04:39:31Z dieggsy: worries, even 2021-02-09T04:40:19Z aeth: does Λ-calculus count as almost λ-calculus? You're just missing some of the \ 2021-02-09T04:40:27Z aeth: (I joke, but for all I know it exists) 2021-02-09T04:40:30Z dieggsy: heh 2021-02-09T04:41:12Z dieggsy: ʌ-calculus 2021-02-09T04:43:52Z Zipheir: Reminds me of the story that λ-calculus was supposed to be "hat calculus", but the publisher didn't know how to print the hat symbol and picked λ. 2021-02-09T04:44:06Z Zipheir: Bogus, but funny. 2021-02-09T04:44:41Z dieggsy: what even would be the hat symbol 2021-02-09T04:45:05Z Zipheir: e.g. ŷ 2021-02-09T04:45:48Z dieggsy: circonflexe 2021-02-09T04:45:52Z dieggsy: hat? hm 2021-02-09T04:46:09Z Zipheir: Sometimes called "hat" in mathematical texts. 2021-02-09T04:46:20Z Zipheir: The whole story got a massive amount of discussion on WP https://en.wikipedia.org/wiki/Talk:Lambda_calculus#please_remove_apocryphal_story_in_%22Origin_of_the_lambda_symbol%22 2021-02-09T04:46:20Z rudybot: https://teensy.info/a06HFooH0p 2021-02-09T04:47:24Z dieggsy: Zipheir: now that you mention it, i've definitely heard it as hat mathematically 2021-02-09T04:47:46Z dieggsy: i don't remember where... maybe somewhere in the black hole of engineering class memories 2021-02-09T04:50:40Z Zipheir: There's probably zero agreement on how to pronounce 80% of mathematical symbols. 2021-02-09T04:53:01Z Riastradh: eighty purse ent, um 2021-02-09T04:53:02Z dieggsy: are there schemes that allow λ instead of lambda other than uh, racket lol 2021-02-09T04:53:37Z dieggsy: (i'm not actually particularly a fan of λ in code, it's easy for me to type now that i've set up my compose key how i like it, but on the average computer it looks pretty but is not practical to type) 2021-02-09T04:53:48Z Zipheir: Guile, probably others. 2021-02-09T04:55:27Z Zipheir: There was a whole debate on the SRFI 26 ml as to whether anyone would bother with cut/cute if λ was how we wrote 'lambda' in Scheme. 2021-02-09T04:58:39Z cjb quit (Quit: heading off 👋) 2021-02-09T05:04:27Z dieggsy: jajajaja 2021-02-09T05:04:34Z dieggsy: that's so funny 2021-02-09T05:05:01Z dieggsy: Zipheir: i'll try to find the link. ...though my thought would be yes, for previously stated reasons 2021-02-09T05:07:10Z Zipheir: Al Petrofsky just suggests 'l' in "l, the ultimate curry that is not curry": https://srfi-email.schemers.org/srfi-26/msg/2783121/ 2021-02-09T05:07:40Z Riastradh: l is hard to distinguish from 1, wouldn't want to confuse (l (x) (- (* x y) z)) with (1 (x) (- (* x y) z)) 2021-02-09T05:08:49Z Zipheir: He also suggests λ, but recall that this was the Unicode Stone Age. 2021-02-09T05:09:03Z dieggsy: lmao 2021-02-09T05:10:40Z Zipheir: l is only a little bit worst than Haskell's '\'... 2021-02-09T05:10:49Z Zipheir: Ugh, s/worst/worse/ 2021-02-09T05:11:50Z dieggsy: i'm rather fond of cut 2021-02-09T05:12:35Z Riastradh: cut is the worst and/or best part of prolog 2021-02-09T05:12:54Z Zipheir: Heh. 2021-02-09T05:13:14Z dieggsy: definitely don't follow, i know nothing about prolog except that it exists 2021-02-09T05:13:20Z Zipheir: Riastradh: But you'll never know which, because the rest of the search tree for that query has been cut. 2021-02-09T05:13:25Z Riastradh: well now you know that cut is the worst and/or best part of it 2021-02-09T05:13:50Z dieggsy: ja! just so 2021-02-09T05:14:17Z Zipheir: dieggsy: It's an (in)famous way to control the backtracking search process of Prolog. 2021-02-09T05:14:41Z Zipheir: miniKanren does not have cuts, which is a Good Thing, IMHO. 2021-02-09T05:15:41Z Zipheir: dieggsy: mK is the logic programming gateway drug for Schemers, BTW https://docs.racket-lang.org/minikanren/index.html 2021-02-09T05:16:10Z gravicappa joined #scheme 2021-02-09T05:17:16Z dieggsy: Zipheir: i've heard that name thrown around a lot.... 2021-02-09T05:17:20Z dieggsy: i'll have to look into it 2021-02-09T05:18:33Z Zipheir: It's simple and has an incredibly tiny implementation in its simplest form. (Approximately 5 functions and 7 macros.) 2021-02-09T05:19:36Z Zipheir: Friedman, Byrd, Oleg, and Hemann cover it in The Reasoned Schemer, which is my personal favorite among the Little books. 2021-02-09T05:22:54Z dieggsy: i started the little schemer, but i really wasn't a fan of its style 2021-02-09T05:24:30Z Zipheir: It has been said that The Little Schemer is written for "8-year-old graduate students". 2021-02-09T05:25:13Z Zipheir: The style does take some getting used to. 2021-02-09T05:25:14Z Riastradh: did you follow the instructions about eating peanut butter and jelly sandwiches while reading 2021-02-09T05:25:29Z Zipheir: It helps. 2021-02-09T05:25:40Z Zipheir: Quick! Eat donuts! 2021-02-09T05:26:31Z dieggsy: jajaja 2021-02-09T06:19:58Z Blukunfando quit (Ping timeout: 272 seconds) 2021-02-09T06:25:33Z phillbush joined #scheme 2021-02-09T06:50:12Z Garbanzo quit (Ping timeout: 260 seconds) 2021-02-09T06:58:03Z cubik joined #scheme 2021-02-09T07:07:09Z kjak quit (Ping timeout: 264 seconds) 2021-02-09T07:14:26Z klovett quit (Ping timeout: 272 seconds) 2021-02-09T07:43:56Z ecraven: which library is (scheme sort)? 2021-02-09T07:44:47Z ecraven: srfi-132? 2021-02-09T07:45:29Z Zipheir: Yes. 2021-02-09T08:06:41Z amirouche joined #scheme 2021-02-09T08:07:32Z siiky quit (Ping timeout: 258 seconds) 2021-02-09T08:08:37Z sunwukong joined #scheme 2021-02-09T08:23:30Z civodul joined #scheme 2021-02-09T08:24:36Z hugh_marera quit (Quit: Connection closed) 2021-02-09T08:25:17Z rgherdt joined #scheme 2021-02-09T08:27:30Z hugh_marera joined #scheme 2021-02-09T08:32:11Z catonano joined #scheme 2021-02-09T08:35:16Z amirouche quit (Quit: WeeChat 2.8) 2021-02-09T08:39:20Z Major_Biscuit joined #scheme 2021-02-09T09:04:35Z hendursa1 joined #scheme 2021-02-09T09:07:07Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-09T09:08:20Z hendursaga joined #scheme 2021-02-09T09:11:26Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-09T09:12:23Z m1dnight1 is now known as m1dnight_ 2021-02-09T09:22:52Z ManDay joined #scheme 2021-02-09T09:24:14Z ManDay quit (Client Quit) 2021-02-09T09:27:38Z ManDay joined #scheme 2021-02-09T09:29:02Z jobol joined #scheme 2021-02-09T09:54:46Z clog joined #scheme 2021-02-09T09:59:44Z drot quit (Ping timeout: 272 seconds) 2021-02-09T10:11:53Z badkins joined #scheme 2021-02-09T10:16:59Z badkins quit (Ping timeout: 256 seconds) 2021-02-09T10:22:08Z drot joined #scheme 2021-02-09T10:33:28Z imode quit (Ping timeout: 256 seconds) 2021-02-09T10:35:04Z nilgeisw joined #scheme 2021-02-09T11:08:14Z ManDay quit (Quit: WeeChat 3.0) 2021-02-09T11:10:05Z _apg quit (Ping timeout: 240 seconds) 2021-02-09T11:10:45Z bchar quit (Ping timeout: 240 seconds) 2021-02-09T11:11:05Z sz0 quit (Ping timeout: 240 seconds) 2021-02-09T11:11:05Z dto quit (Ping timeout: 240 seconds) 2021-02-09T11:11:17Z stephe quit (Read error: Connection reset by peer) 2021-02-09T11:11:29Z bchar joined #scheme 2021-02-09T11:11:32Z sz0 joined #scheme 2021-02-09T11:11:35Z stephe joined #scheme 2021-02-09T11:11:38Z dto joined #scheme 2021-02-09T11:24:11Z siiky joined #scheme 2021-02-09T11:24:18Z brainfunnel joined #scheme 2021-02-09T11:52:58Z civodul quit (Read error: Connection reset by peer) 2021-02-09T11:58:31Z civodul joined #scheme 2021-02-09T12:08:17Z bchar quit (Read error: Connection reset by peer) 2021-02-09T12:09:00Z dto quit (Read error: Network is unreachable) 2021-02-09T12:09:09Z sz0 quit (Read error: Connection reset by peer) 2021-02-09T12:09:12Z stephe quit (Read error: Connection reset by peer) 2021-02-09T12:09:53Z bchar joined #scheme 2021-02-09T12:10:38Z dto joined #scheme 2021-02-09T12:10:52Z stephe joined #scheme 2021-02-09T12:11:55Z sz0 joined #scheme 2021-02-09T12:12:01Z Major_Biscuit quit (Ping timeout: 256 seconds) 2021-02-09T12:36:59Z klovett joined #scheme 2021-02-09T12:46:42Z klovett_ joined #scheme 2021-02-09T12:50:26Z klovett quit (Ping timeout: 264 seconds) 2021-02-09T12:51:24Z badkins joined #scheme 2021-02-09T12:53:45Z ecraven: Riastradh: are there plans for MIT/GNU Scheme to support R7RS `import'? 2021-02-09T12:53:52Z kjak joined #scheme 2021-02-09T12:57:04Z badkins quit (Ping timeout: 272 seconds) 2021-02-09T12:57:36Z Major_Biscuit joined #scheme 2021-02-09T12:58:23Z rickbutton quit (Read error: Connection reset by peer) 2021-02-09T13:11:17Z rickbutton joined #scheme 2021-02-09T13:16:35Z rickbutton quit (Ping timeout: 272 seconds) 2021-02-09T13:25:49Z ecraven: ha, now I finally understand how srfi-168 actually stores its tuples in the store ;) 2021-02-09T13:29:52Z rickbutton joined #scheme 2021-02-09T13:35:56Z rickbutton quit (Ping timeout: 240 seconds) 2021-02-09T13:38:01Z rickbutton joined #scheme 2021-02-09T13:39:47Z acarrico joined #scheme 2021-02-09T13:58:56Z Wezl joined #scheme 2021-02-09T14:09:16Z aeth quit (Ping timeout: 272 seconds) 2021-02-09T14:09:38Z badkins joined #scheme 2021-02-09T14:10:22Z aeth joined #scheme 2021-02-09T14:14:28Z badkins quit (Ping timeout: 256 seconds) 2021-02-09T14:15:22Z klovett joined #scheme 2021-02-09T14:19:00Z klovett_ quit (Ping timeout: 256 seconds) 2021-02-09T14:23:40Z badkins joined #scheme 2021-02-09T14:28:04Z Wezl quit (Read error: Connection reset by peer) 2021-02-09T14:28:26Z Wezl joined #scheme 2021-02-09T14:46:48Z acarrico quit (Ping timeout: 246 seconds) 2021-02-09T14:50:44Z civodul quit (Ping timeout: 240 seconds) 2021-02-09T14:57:51Z acarrico joined #scheme 2021-02-09T15:02:46Z xelxebar quit (Remote host closed the connection) 2021-02-09T15:03:37Z xelxebar joined #scheme 2021-02-09T15:04:49Z Riastradh: ecraven: Allegedly there's supposed to be R7RS library support but I haven't done anything with it and I have no idea how it works -- all Chris's doing. 2021-02-09T15:05:48Z jcowan: dieggsy: CL was designed for as much backward compat with Maclisp as possible 2021-02-09T15:06:07Z lockywolf: https://lockywolf.wordpress.com/2021/02/08/solving-sicp/ 2021-02-09T15:06:40Z lockywolf: org nicely allows building html in roughly the same way as pdfs. nice :) 2021-02-09T15:07:13Z ecraven: Riastradh: thanks, I'll look at the commit history then 2021-02-09T15:07:21Z ecraven: I just tried starting a repl and (import (scheme base)), which fails ;) 2021-02-09T15:14:34Z klovett_ joined #scheme 2021-02-09T15:15:46Z mangol: ecraven: Riastradh: define-library works only in a source file, not in the REPL. import works only inside define-library. 2021-02-09T15:16:12Z mangol: in the latest MIT Scheme that is 2021-02-09T15:17:56Z klovett quit (Ping timeout: 256 seconds) 2021-02-09T15:20:36Z ecraven: how do you load those libraries then? 2021-02-09T15:20:38Z ecraven: from the repl 2021-02-09T15:21:59Z Riastradh: dunno, UTSL, I guess 2021-02-09T15:22:23Z mangol: (load "...") IIRC 2021-02-09T15:27:17Z mangol: type into foo.scm: (define-library (foo) (export hello) (import (scheme base)) (begin (define (hello) "hello"))) 2021-02-09T15:27:38Z mangol: then in the REPL, (load "foo.scm") and (import! '(foo)) and (hello) 2021-02-09T15:31:30Z ManDay joined #scheme 2021-02-09T15:31:42Z mangol: ecraven: if you want to do something complex, maybe send mail to the mailing list and volunteer as a beta tester? :) 2021-02-09T15:34:21Z Wezl quit (Read error: Connection reset by peer) 2021-02-09T15:34:31Z Wezl joined #scheme 2021-02-09T15:36:04Z sunwukong quit (Ping timeout: 256 seconds) 2021-02-09T15:37:13Z mangol: lockywolf: excellent report! 2021-02-09T15:38:17Z mangol: i've never heard of such a dedicated student. your SICP review will be heralded as legendary in a few years' time 2021-02-09T15:41:44Z acarrico quit (Ping timeout: 272 seconds) 2021-02-09T15:43:29Z lockywolf: :) 2021-02-09T15:45:56Z ManDay: what did I miss? what 'd you do lockywolf ? 2021-02-09T15:52:04Z klovett joined #scheme 2021-02-09T15:53:14Z badkins_ joined #scheme 2021-02-09T15:53:14Z Wezl quit (Read error: Connection reset by peer) 2021-02-09T15:53:27Z Wezl joined #scheme 2021-02-09T15:54:42Z klovett_ quit (Ping timeout: 246 seconds) 2021-02-09T15:55:05Z badkins quit (Ping timeout: 240 seconds) 2021-02-09T15:56:05Z aeth quit (Ping timeout: 240 seconds) 2021-02-09T15:56:31Z badkins_ quit (Remote host closed the connection) 2021-02-09T15:56:41Z badkins joined #scheme 2021-02-09T15:58:10Z aeth joined #scheme 2021-02-09T16:01:07Z X-Scale` joined #scheme 2021-02-09T16:01:45Z X-Scale quit (Ping timeout: 264 seconds) 2021-02-09T16:01:46Z X-Scale` is now known as X-Scale 2021-02-09T16:05:29Z sunwukong joined #scheme 2021-02-09T16:15:57Z acarrico joined #scheme 2021-02-09T16:20:36Z Wezl quit (Read error: Connection reset by peer) 2021-02-09T16:20:51Z Wezl joined #scheme 2021-02-09T16:24:56Z lockywolf: just compiled my Scheme Workshop pdf into html 2021-02-09T16:26:06Z nilgeisw quit (Remote host closed the connection) 2021-02-09T16:26:34Z mangol: with your permission, we could put it up on scheme.org. it would be great to amass a canonical set of resources to help SICP students 2021-02-09T16:26:39Z lockywolf: sorry, not pdf, the original org-mode file 2021-02-09T16:35:54Z nilgeisw joined #scheme 2021-02-09T16:36:29Z mangol: your blog is featured on https://planet.scheme.org/ btw 2021-02-09T16:42:26Z civodul joined #scheme 2021-02-09T16:43:44Z ecraven: the idea of having complete f32 inside a nan-boxed immediate is certainly alluring for typical opengl-like code 2021-02-09T16:48:56Z jcowan: Very nice! I think the main reason why we use unfashionable communications channels is the prevalence of old farts among us. 2021-02-09T16:52:32Z skapata joined #scheme 2021-02-09T16:56:02Z brainfunnel quit (Quit: thanks, bye!) 2021-02-09T17:08:02Z sunwukong quit (Quit: Leaving) 2021-02-09T17:09:29Z badkins quit (Remote host closed the connection) 2021-02-09T17:10:18Z badkins joined #scheme 2021-02-09T17:14:37Z badkins quit (Ping timeout: 256 seconds) 2021-02-09T17:16:45Z Major_Biscuit quit (Ping timeout: 240 seconds) 2021-02-09T17:19:31Z catonano quit (Quit: catonano) 2021-02-09T17:19:34Z badkins joined #scheme 2021-02-09T17:21:00Z ManDay quit (Quit: WeeChat 3.0) 2021-02-09T17:25:36Z badkins quit (Ping timeout: 272 seconds) 2021-02-09T17:27:53Z ZombieChicken quit (Remote host closed the connection) 2021-02-09T17:28:55Z ZombieChicken joined #scheme 2021-02-09T17:31:15Z Garbanzo joined #scheme 2021-02-09T17:35:06Z pankajsg quit (Ping timeout: 272 seconds) 2021-02-09T17:35:43Z hendursa1 joined #scheme 2021-02-09T17:37:16Z mangol: that's a good thing. unfashionable communication channels are more resilient than fashionable ones. online communities of all kinds will be increasingly put to the test in the future. 2021-02-09T17:37:43Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-09T17:37:45Z mangol: here as in so many places, it's an asset that lisp/scheme are so old. 2021-02-09T17:38:10Z mangol: and correspondingly have users of all ages well represented 2021-02-09T17:42:16Z aeth: Most places don't let you keep local logs on a PC anymore. (And mobile-only logs don't count. How often do you back up your smartphone? Can you even get to the data that belongs to other apps anymore?) 2021-02-09T17:42:40Z aeth: So the IRC "competitors" are essentially ephemeral. 2021-02-09T17:43:21Z aeth: Someone will have logs of this channel online long after the thing that comes after Discord dies, let alone Discord; and when those die, they're all taking all of their years/decades of logs with them. 2021-02-09T17:44:25Z aeth: Sure, for gaming that's fine and maybe even desirable, but for serious proglang stuff, historians might be interested in some things. 2021-02-09T17:47:03Z mangol: yeah. the balance of power has been shifted from users, to moderators, even more so to platform vendors, and most of all to governments. extrapolate a decade or two and that means some very bad things to a lot of people. 2021-02-09T17:48:46Z mangol: large-scale world-wide censorship of all public speech is already well on its way. even secluded communities are increasingly subject to it. 2021-02-09T17:49:19Z aeth: If the logs aren't available on the broader internet and they're not available locally, then you'll lose access to them. The service doesn't even need to go down. You might just lose access to them if you get banned. 2021-02-09T17:52:08Z mangol: that fits naturally into the broader trend where people are "cancelled" from a vast array of things for ever flimsier reasons 2021-02-09T17:56:58Z manumanumanu: Is there any nice mailing list where I can ask questions on matters of taste? I have a looping facility based on foof-loop and racket's loops and I have some questions about how I should go about defining the last little touches. 2021-02-09T18:04:33Z skapata quit (Remote host closed the connection) 2021-02-09T18:07:39Z miasuji joined #scheme 2021-02-09T18:37:41Z badkins joined #scheme 2021-02-09T18:46:05Z badkins quit (Ping timeout: 240 seconds) 2021-02-09T18:57:42Z srandon111 joined #scheme 2021-02-09T18:58:10Z tryte quit (Remote host closed the connection) 2021-02-09T18:58:29Z tryte joined #scheme 2021-02-09T19:05:01Z raingloom joined #scheme 2021-02-09T19:05:28Z _apg joined #scheme 2021-02-09T19:09:19Z amirouche joined #scheme 2021-02-09T19:25:48Z evdubs quit (Quit: Leaving) 2021-02-09T19:27:21Z evdubs joined #scheme 2021-02-09T19:36:19Z dieggsy: manumanumanu: you could always ask here 2021-02-09T19:37:55Z badkins joined #scheme 2021-02-09T19:40:37Z manumanumanu: Alright... So, I have written an almost portable bastardisation of foof-loop/(chibi loop) and racket's for loops: https://git.sr.ht/~bjoli/goof-loop/ . Right now I provide simple forms: instead of (loop ((:for i (up-from 0 10)) (:acc sum (summing i))) => sum) I provide (loop/sum ((i (up-from 0 10))) i). Right now I wonder really what to call these simple forms. loop/sum is directly stolen from racket's 2021-02-09T19:40:38Z manumanumanu: for/sum, but it has no relation to the accumulating form (summing ...). Should I call them loop/summing (which I find long), or should each accumulating clause also provide a simple form: (summing ((i (up-from 0 10))) i)? 2021-02-09T19:45:00Z manumanumanu: I feel that loop/summing is the correct thing, but having each accumulating clause also register a simple form (as in: (summing clauses body ...) ) would be pretty slick. 2021-02-09T19:45:41Z Riastradh: Why a new one? 2021-02-09T19:46:25Z amirouche quit (Ping timeout: 240 seconds) 2021-02-09T19:46:59Z Riastradh: (see also https://mumble.net/~campbell/tmp/nested-foof-loop.scm for a collect-sum) 2021-02-09T19:47:13Z Riastradh: (collect-sum (for i (up-from 0 (to 10)) i) 2021-02-09T19:47:43Z Riastradh: https://mumble.net/~campbell/tmp/loop-comparison.scm 2021-02-09T19:50:22Z manumanumanu: I was under the impression that foof-loop did not support subloops: (loop/list ((a (up-from 1 5)) :subloop (b (down-from a 0))) b) => (0 1 0 2 1 0 3 2 1 0) 2021-02-09T19:51:45Z jcowan: An important consideration is documenting not only a loop API but its SPI (i.e. how to add new clauses) 2021-02-09T19:52:27Z Riastradh: try (collect-list (for a (up-from 1 (to 5))) (for b (down-from a (to 0))) b) 2021-02-09T19:52:47Z manumanumanu: I also wanted to add some support under the hood for srfi-158 generators to act as a more general sequence api. That way I could do (loop/list ((a (in-cycle (in-list '(#t #f)))) ...) 2021-02-09T19:52:55Z manumanumanu: and accumulators of course 2021-02-09T19:55:19Z Riastradh: see loop-comparison.scm for more examples, e.g. cartesian-product for loop nesting depths that depend on the input 2021-02-09T19:57:37Z Riastradh: documentation https://mumble.net/~campbell/tmp/nested-foof-loop.txt 2021-02-09T19:57:37Z Wezl quit (Read error: Connection reset by peer) 2021-02-09T19:57:57Z Wezl joined #scheme 2021-02-09T19:57:59Z Zipheir: manumanumanu: See also SRFI 196. 2021-02-09T19:58:19Z Zipheir: Ranges are a better choice than generators for that sort of thing (no side effects). 2021-02-09T20:00:26Z manumanumanu: Riastradh: The only documentation I found about foof-loop was the info available on your (?) site as a .txt or the chicken scheme egg. I had some other ideas that I didn't figure out how to squeeze into the chibi loop protocol (for clause finalizers, so we can have a working (in-file ...)). And I couldn't find the nested loop file... 2021-02-09T20:00:39Z miasuji quit (Ping timeout: 272 seconds) 2021-02-09T20:00:41Z manumanumanu: Zipheir: instead of what? 2021-02-09T20:01:01Z Zipheir: "...support under the hood for srfi-158 generators..." 2021-02-09T20:01:12Z manumanumanu: Only "second order" iterator clauses like (in-cycle ...) depends on generators 2021-02-09T20:01:22Z Zipheir: Oy vey. 2021-02-09T20:02:19Z manumanumanu: currently doesn't work for anything else than in-list though. 2021-02-09T20:04:40Z Riastradh: manumanumanu: loop protocol is documented under `Writing Custom Iterators' in https://mumble.net/~campbell/tmp/foof-loop.txt, including finalization stuff (under assumption loop terminates with iterators or `while'/`until'; user can screw it up by escaping or not calling the explicit loop procedure) 2021-02-09T20:04:47Z manumanumanu: Riastradh: I have some other ideas that I am not sure would work with foof-loop either. Currently you can pattern match on body-variables, say iterating through an alist (:for (key . value) (in-list ...)), but I also want to add some way of controlling the binding of loop variables. 2021-02-09T20:05:08Z manumanumanu: whether like let, let* or match-let 2021-02-09T20:05:32Z cubik quit (Quit: Leaving.) 2021-02-09T20:06:54Z manumanumanu: Zipheir: the problem I would face with ranges is that I want the internal protocol to work with potentially lazy sequences: (in-cycle eternal-generator) should work, even though it would leak memory 2021-02-09T20:07:38Z manumanumanu: Riastradh: jeez... if your foof-loop implementation isn't peak syntax-rules I don't know what... Impressive! 2021-02-09T20:17:54Z gravicappa quit (Ping timeout: 246 seconds) 2021-02-09T20:23:43Z manumanumanu: anyway, there are bugs still I haven't worked out. 2021-02-09T20:25:09Z aeth quit (Ping timeout: 264 seconds) 2021-02-09T20:26:46Z aeth joined #scheme 2021-02-09T20:34:52Z skapata joined #scheme 2021-02-09T20:39:02Z imode joined #scheme 2021-02-09T20:39:43Z bitwize_ quit (Ping timeout: 260 seconds) 2021-02-09T20:39:57Z DGASAU` joined #scheme 2021-02-09T20:41:34Z bitwize joined #scheme 2021-02-09T20:41:35Z manumanumanu: Riastradh: So, I have been reading the document a bit, and finalizers is simple in the "flat" foof without any subloops: you just add a dummy variable to the final binding. The presence of subloops screws that up: not only do you have to promote accumulators through the loop to keep their state (thus I separate :for and :acc clauses), and for-finalizers shoud be promoted in the "other" direction (accumulator 2021-02-09T20:41:37Z manumanumanu: clauses only need to be kept "below" where they are defined, whereas for finalizers are propagated to the inner loops). I haven't figured out how you do it in your nested loops, but I am looking at it. 2021-02-09T20:43:45Z miasuji joined #scheme 2021-02-09T20:43:45Z DGASAU quit (Ping timeout: 240 seconds) 2021-02-09T20:53:57Z Riastradh: manumanumanu: nested loops are just, well, nested loops: (collect-list A B C body) is kind of like (loop (A) (loop (B) (loop (C) body))) 2021-02-09T20:54:21Z Riastradh: (plus some extra to accumulate the list and pass it up through the loops) 2021-02-09T20:54:37Z manumanumanu: Riastradh: but if you want to collect, say, multiplying and several (listing ...) along the way? 2021-02-09T20:55:24Z manumanumanu: Riastradh: see https://git.sr.ht/~bjoli/goof-loop/tree/master/item/tests.scm (which is very empty at the moment) to see what I mean. 2021-02-09T20:55:38Z manumanumanu: the last example 2021-02-09T20:58:48Z Riastradh: Yes, foof-loop doesn't have a native way to thread multiple accumulators through nested loops. 2021-02-09T21:01:47Z manumanumanu: Alles klar. I'll have alook at the source of your implementation. I only looked at alex's previously. 2021-02-09T21:01:51Z manumanumanu: Now it is sleep time 2021-02-09T21:10:15Z miasuji quit (Quit: Leaving) 2021-02-09T21:18:07Z badkins quit (Remote host closed the connection) 2021-02-09T21:18:42Z badkins joined #scheme 2021-02-09T21:22:20Z ex_nihilo joined #scheme 2021-02-09T21:23:05Z badkins quit (Ping timeout: 240 seconds) 2021-02-09T21:24:57Z jobol quit (Quit: Leaving) 2021-02-09T21:25:37Z badkins joined #scheme 2021-02-09T21:41:27Z Wezl quit (Read error: Connection reset by peer) 2021-02-09T21:41:38Z Wezl joined #scheme 2021-02-09T21:55:16Z clog quit (Ping timeout: 240 seconds) 2021-02-09T21:56:25Z paulj joined #scheme 2021-02-09T21:56:49Z aeth quit (Ping timeout: 256 seconds) 2021-02-09T21:57:27Z aeth joined #scheme 2021-02-09T21:57:37Z catonano joined #scheme 2021-02-09T22:00:21Z Wezl quit (Ping timeout: 272 seconds) 2021-02-09T22:19:13Z paulj quit (Remote host closed the connection) 2021-02-09T22:53:48Z pankajsg joined #scheme 2021-02-09T22:54:10Z civodul quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-09T22:56:06Z ex_nihilo quit (Ping timeout: 258 seconds) 2021-02-09T23:01:19Z Blukunfando joined #scheme 2021-02-09T23:10:26Z badkins quit (Remote host closed the connection) 2021-02-09T23:11:01Z ex_nihilo joined #scheme 2021-02-09T23:11:04Z badkins joined #scheme 2021-02-09T23:16:28Z badkins quit (Ping timeout: 272 seconds) 2021-02-09T23:19:50Z Wezl joined #scheme 2021-02-09T23:27:31Z ex_nihilo quit (Ping timeout: 265 seconds) 2021-02-09T23:31:22Z Wezl quit (Read error: No route to host) 2021-02-09T23:32:46Z badkins joined #scheme 2021-02-09T23:47:12Z phillbush quit (Quit: Leaving) 2021-02-09T23:56:53Z rgherdt quit (Ping timeout: 272 seconds) 2021-02-09T23:58:11Z phillbush joined #scheme 2021-02-10T00:10:12Z hendursa1 quit (Quit: hendursa1) 2021-02-10T00:10:42Z hendursaga joined #scheme 2021-02-10T00:10:51Z hendursaga quit (Remote host closed the connection) 2021-02-10T00:11:58Z hendursaga joined #scheme 2021-02-10T00:13:14Z richbridger joined #scheme 2021-02-10T00:15:05Z aquijoule_ quit (Ping timeout: 256 seconds) 2021-02-10T00:16:21Z dieggsy: see also srfi-42? 2021-02-10T00:16:51Z dieggsy: (upon which racket for loops are apparently based) 2021-02-10T00:17:43Z clog joined #scheme 2021-02-10T00:18:25Z raingloom quit (Ping timeout: 240 seconds) 2021-02-10T00:23:17Z srandon111 quit (Quit: leaving) 2021-02-10T00:26:12Z Riastradh quit (Remote host closed the connection) 2021-02-10T00:30:08Z madage quit (Remote host closed the connection) 2021-02-10T00:30:24Z madage joined #scheme 2021-02-10T00:37:59Z torbo joined #scheme 2021-02-10T00:42:57Z c7d9_ joined #scheme 2021-02-10T00:46:05Z c7d9 quit (Ping timeout: 240 seconds) 2021-02-10T00:46:25Z Riastradh joined #scheme 2021-02-10T01:09:56Z tdammers quit (Ping timeout: 240 seconds) 2021-02-10T01:15:26Z tdammers joined #scheme 2021-02-10T01:17:30Z hendursa1 joined #scheme 2021-02-10T01:19:36Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-10T01:33:51Z phillbush quit (Remote host closed the connection) 2021-02-10T01:39:25Z clog quit (Ping timeout: 240 seconds) 2021-02-10T01:42:20Z torbo quit (Remote host closed the connection) 2021-02-10T01:46:16Z aeth quit (Ping timeout: 240 seconds) 2021-02-10T01:48:25Z aeth joined #scheme 2021-02-10T02:08:26Z hendursa1 quit (Quit: hendursa1) 2021-02-10T02:08:44Z hendursaga joined #scheme 2021-02-10T02:08:56Z aeth quit (Ping timeout: 240 seconds) 2021-02-10T02:10:57Z aeth joined #scheme 2021-02-10T02:13:10Z X-Scale quit (Ping timeout: 272 seconds) 2021-02-10T02:16:26Z nmeum quit (Remote host closed the connection) 2021-02-10T02:17:06Z nmeum joined #scheme 2021-02-10T02:19:19Z [d] quit (Excess Flood) 2021-02-10T02:19:25Z [d] joined #scheme 2021-02-10T02:22:04Z kjak quit (Ping timeout: 256 seconds) 2021-02-10T02:23:14Z X-Scale joined #scheme 2021-02-10T02:48:09Z badkins quit (Remote host closed the connection) 2021-02-10T02:48:47Z badkins joined #scheme 2021-02-10T02:52:21Z badkins quit (Remote host closed the connection) 2021-02-10T02:52:38Z badkins joined #scheme 2021-02-10T02:53:51Z turtleman joined #scheme 2021-02-10T02:55:36Z turtleman quit (Client Quit) 2021-02-10T02:57:25Z acarrico quit (Ping timeout: 240 seconds) 2021-02-10T03:03:52Z turtleman joined #scheme 2021-02-10T03:23:11Z drot quit (K-Lined) 2021-02-10T03:23:58Z drot joined #scheme 2021-02-10T03:26:44Z turtleman quit (Quit: Leaving) 2021-02-10T03:26:54Z epony quit (Quit: outage) 2021-02-10T03:31:28Z gravicappa joined #scheme 2021-02-10T03:52:45Z aeth quit (Ping timeout: 240 seconds) 2021-02-10T03:54:51Z aeth joined #scheme 2021-02-10T04:12:13Z badkins quit (Remote host closed the connection) 2021-02-10T04:12:52Z aeth quit (Ping timeout: 272 seconds) 2021-02-10T04:12:56Z badkins joined #scheme 2021-02-10T04:14:17Z aeth joined #scheme 2021-02-10T04:14:51Z skapata quit (Remote host closed the connection) 2021-02-10T04:16:23Z epony joined #scheme 2021-02-10T04:17:57Z badkins quit (Ping timeout: 264 seconds) 2021-02-10T04:22:25Z sz0 quit (Ping timeout: 240 seconds) 2021-02-10T04:22:56Z sz0 joined #scheme 2021-02-10T04:25:56Z epony quit (Ping timeout: 240 seconds) 2021-02-10T04:29:56Z tryte quit (Remote host closed the connection) 2021-02-10T04:30:10Z tryte joined #scheme 2021-02-10T04:37:48Z evdubs quit (*.net *.split) 2021-02-10T04:37:49Z Garbanzo quit (*.net *.split) 2021-02-10T04:37:51Z ArneBab quit (*.net *.split) 2021-02-10T04:37:53Z ByronJohnson quit (*.net *.split) 2021-02-10T04:37:53Z alelos quit (*.net *.split) 2021-02-10T04:37:54Z lortabac quit (*.net *.split) 2021-02-10T04:37:54Z midre quit (*.net *.split) 2021-02-10T04:37:55Z malaclyps quit (*.net *.split) 2021-02-10T04:37:55Z grobe0ba quit (*.net *.split) 2021-02-10T04:37:56Z edgar-rft quit (*.net *.split) 2021-02-10T04:37:58Z fiddlerwoaroof quit (*.net *.split) 2021-02-10T04:40:45Z casaca quit (Ping timeout: 264 seconds) 2021-02-10T04:42:17Z evdubs joined #scheme 2021-02-10T04:42:17Z Garbanzo joined #scheme 2021-02-10T04:42:17Z ArneBab joined #scheme 2021-02-10T04:42:17Z ByronJohnson joined #scheme 2021-02-10T04:42:17Z alelos joined #scheme 2021-02-10T04:42:17Z lortabac joined #scheme 2021-02-10T04:42:17Z midre joined #scheme 2021-02-10T04:42:17Z malaclyps joined #scheme 2021-02-10T04:42:17Z grobe0ba joined #scheme 2021-02-10T04:42:17Z edgar-rft joined #scheme 2021-02-10T04:42:17Z fiddlerwoaroof joined #scheme 2021-02-10T04:43:41Z hendursaga quit (Remote host closed the connection) 2021-02-10T04:44:38Z hendursaga joined #scheme 2021-02-10T04:45:05Z dieggsy quit (Ping timeout: 240 seconds) 2021-02-10T04:45:33Z nckx quit (Ping timeout: 264 seconds) 2021-02-10T04:45:37Z romariorios[m] quit (Ping timeout: 246 seconds) 2021-02-10T04:45:37Z Ericson2314 quit (Ping timeout: 246 seconds) 2021-02-10T04:45:59Z nckx joined #scheme 2021-02-10T04:46:10Z null_radix[m] quit (Ping timeout: 260 seconds) 2021-02-10T04:46:26Z mbakke quit (Ping timeout: 240 seconds) 2021-02-10T04:47:32Z Irvise[m] quit (Ping timeout: 260 seconds) 2021-02-10T04:48:12Z gravicappa quit (Ping timeout: 246 seconds) 2021-02-10T04:49:07Z siraben quit (Ping timeout: 268 seconds) 2021-02-10T04:49:08Z Gnuxie[m] quit (Ping timeout: 268 seconds) 2021-02-10T04:49:08Z deselby quit (Ping timeout: 268 seconds) 2021-02-10T04:50:22Z even4void[m] quit (Ping timeout: 268 seconds) 2021-02-10T04:50:32Z bitmapper quit (Quit: Connection closed for inactivity) 2021-02-10T04:56:10Z dieggsy joined #scheme 2021-02-10T05:03:51Z gravicappa joined #scheme 2021-02-10T05:05:56Z hendursaga quit (Remote host closed the connection) 2021-02-10T05:07:00Z hendursaga joined #scheme 2021-02-10T05:08:27Z clog joined #scheme 2021-02-10T05:09:13Z epony joined #scheme 2021-02-10T05:09:22Z null_radix[m] joined #scheme 2021-02-10T05:10:45Z romariorios[m] joined #scheme 2021-02-10T05:12:17Z mbakke joined #scheme 2021-02-10T05:14:54Z siraben joined #scheme 2021-02-10T05:21:39Z hendursaga quit (Remote host closed the connection) 2021-02-10T05:22:16Z Irvise[m] joined #scheme 2021-02-10T05:22:36Z hendursaga joined #scheme 2021-02-10T05:24:39Z Gnuxie[m] joined #scheme 2021-02-10T05:24:48Z deselby joined #scheme 2021-02-10T05:25:49Z even4void[m] joined #scheme 2021-02-10T05:26:44Z gioyik quit (Quit: WeeChat 3.0) 2021-02-10T05:28:13Z badkins joined #scheme 2021-02-10T05:28:49Z gioyik joined #scheme 2021-02-10T05:33:18Z badkins quit (Ping timeout: 272 seconds) 2021-02-10T05:35:58Z gioyik_ joined #scheme 2021-02-10T05:37:22Z gioyik quit (Ping timeout: 268 seconds) 2021-02-10T05:39:42Z nilgeisw quit (Remote host closed the connection) 2021-02-10T05:47:33Z tryte quit (Remote host closed the connection) 2021-02-10T05:47:47Z tryte joined #scheme 2021-02-10T05:49:59Z gioyik_ quit (Quit: WeeChat 3.0) 2021-02-10T05:52:50Z casaca joined #scheme 2021-02-10T05:55:59Z Blukunfando quit (Ping timeout: 272 seconds) 2021-02-10T06:00:36Z cantstanya quit (Remote host closed the connection) 2021-02-10T06:00:43Z madage quit (Remote host closed the connection) 2021-02-10T06:01:05Z madage joined #scheme 2021-02-10T06:01:43Z cantstanya joined #scheme 2021-02-10T06:23:24Z hendursa1 joined #scheme 2021-02-10T06:26:05Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-10T06:27:40Z Garbanzo quit (Ping timeout: 258 seconds) 2021-02-10T06:28:45Z nckx quit (Ping timeout: 276 seconds) 2021-02-10T06:28:53Z nckx[2] joined #scheme 2021-02-10T06:29:10Z ski quit (Ping timeout: 276 seconds) 2021-02-10T06:29:27Z ski joined #scheme 2021-02-10T06:30:41Z nckx[2] is now known as nckx 2021-02-10T06:49:35Z cubik joined #scheme 2021-02-10T06:54:44Z amirouche joined #scheme 2021-02-10T06:55:35Z cubik left #scheme 2021-02-10T07:09:14Z jobol joined #scheme 2021-02-10T07:42:09Z klovett quit (Remote host closed the connection) 2021-02-10T07:42:51Z klovett joined #scheme 2021-02-10T07:58:41Z imode quit (Ping timeout: 256 seconds) 2021-02-10T08:01:11Z hendursaga joined #scheme 2021-02-10T08:03:31Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-10T08:09:52Z rgherdt joined #scheme 2021-02-10T08:19:31Z Major_Biscuit joined #scheme 2021-02-10T08:28:47Z cchristiansen joined #scheme 2021-02-10T08:34:53Z lavaflow quit (Ping timeout: 256 seconds) 2021-02-10T08:39:07Z lavaflow joined #scheme 2021-02-10T08:49:03Z ZombieChicken quit (Remote host closed the connection) 2021-02-10T08:49:30Z ZombieChicken joined #scheme 2021-02-10T09:01:31Z Major_Biscuit quit (Quit: WeeChat 2.9) 2021-02-10T09:04:45Z hendursa1 joined #scheme 2021-02-10T09:07:39Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-10T09:08:59Z hendursaga joined #scheme 2021-02-10T09:10:14Z rgherdt quit (Remote host closed the connection) 2021-02-10T09:12:35Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-10T09:17:26Z Major_Biscuit joined #scheme 2021-02-10T09:19:44Z hugh_marera quit (Quit: Connection closed) 2021-02-10T09:29:57Z badkins joined #scheme 2021-02-10T09:30:27Z hugh_marera joined #scheme 2021-02-10T09:35:07Z badkins quit (Ping timeout: 272 seconds) 2021-02-10T09:45:20Z ZombieChicken quit (Quit: WeeChat 3.0.1) 2021-02-10T10:04:05Z aeth quit (Ping timeout: 240 seconds) 2021-02-10T10:06:16Z aeth joined #scheme 2021-02-10T10:06:30Z civodul joined #scheme 2021-02-10T10:13:14Z aeth quit (Ping timeout: 272 seconds) 2021-02-10T10:13:33Z aeth joined #scheme 2021-02-10T10:17:39Z cchristiansen quit (Read error: Connection reset by peer) 2021-02-10T10:48:07Z badkins joined #scheme 2021-02-10T10:52:25Z badkins quit (Ping timeout: 240 seconds) 2021-02-10T11:00:30Z ManDay joined #scheme 2021-02-10T11:02:59Z hendursaga quit (Remote host closed the connection) 2021-02-10T11:04:29Z hendursaga joined #scheme 2021-02-10T11:06:05Z pankajsg quit (Ping timeout: 240 seconds) 2021-02-10T11:12:13Z aeth quit (Ping timeout: 265 seconds) 2021-02-10T11:13:41Z aeth joined #scheme 2021-02-10T11:22:14Z raingloom joined #scheme 2021-02-10T11:22:24Z t3hyoshi joined #scheme 2021-02-10T11:31:56Z raingloom quit (Ping timeout: 240 seconds) 2021-02-10T11:50:27Z Wezl joined #scheme 2021-02-10T12:13:37Z phillbush joined #scheme 2021-02-10T12:14:17Z clog quit (Ping timeout: 265 seconds) 2021-02-10T12:21:02Z aeth quit (Ping timeout: 256 seconds) 2021-02-10T12:22:57Z aeth joined #scheme 2021-02-10T12:26:08Z catonano quit (Ping timeout: 256 seconds) 2021-02-10T12:27:06Z hugh_marera quit (Quit: Connection closed) 2021-02-10T12:38:23Z mdhughes quit 2021-02-10T12:49:06Z badkins joined #scheme 2021-02-10T12:51:04Z kjak joined #scheme 2021-02-10T12:51:16Z hugh_marera joined #scheme 2021-02-10T12:52:06Z madage quit (Remote host closed the connection) 2021-02-10T12:52:25Z madage joined #scheme 2021-02-10T12:53:08Z mdhughes joined #scheme 2021-02-10T12:54:06Z badkins quit (Ping timeout: 272 seconds) 2021-02-10T12:58:52Z zz_ka6sox joined #scheme 2021-02-10T12:58:55Z zz_ka6sox quit (Connection closed) 2021-02-10T13:04:33Z badkins joined #scheme 2021-02-10T13:07:28Z Peetz0rMD joined #scheme 2021-02-10T13:07:38Z Peetz0rMD: /!\ this channel has moved to ##hamradio /!\ 2021-02-10T13:08:07Z LeoNerd: I find it unlikely, given you said the exact same in #perl 2021-02-10T13:08:26Z savoir-faire joined #scheme 2021-02-10T13:08:34Z savoir-faire: /!\ this channel has moved to ##hamradio /!\ 2021-02-10T13:08:43Z Peetz0rMD quit (Remote host closed the connection) 2021-02-10T13:09:02Z badkins quit (Ping timeout: 264 seconds) 2021-02-10T13:09:54Z savoir-faire quit (Remote host closed the connection) 2021-02-10T13:10:40Z ManDay: LeoNerd: You heard what the man said. Don't question it. 2021-02-10T13:11:08Z zaberdampfer joined #scheme 2021-02-10T13:11:12Z zaberdampfer: /!\ this channel has moved to #nyymit /!\ 2021-02-10T13:11:56Z aeth quit (Ping timeout: 240 seconds) 2021-02-10T13:12:11Z zaberdampfer quit (Remote host closed the connection) 2021-02-10T13:12:16Z LeoNerd: Willing to bet that's an attempt to spam large amounts of users with the magic screen-crashing UTF-8 sequence 2021-02-10T13:12:45Z ManDay: Why would someone waste their IPs for that kind of nonsense? 2021-02-10T13:12:48Z ManDay: What's to gain? 2021-02-10T13:12:58Z LeoNerd: Hah. I doubt they're using their own IPs ;) 2021-02-10T13:13:08Z ManDay: Yeah well, but they have wasted them anyway 2021-02-10T13:13:12Z LeoNerd: You can usually rent a blackmarket botfarm for a few dollars an hour 2021-02-10T13:13:29Z LeoNerd: That rate is cheaper than a cinema ticket 2021-02-10T13:13:43Z ManDay: Ah, so it's entertainment for them xD 2021-02-10T13:13:59Z aeth joined #scheme 2021-02-10T13:14:27Z ManDay: Probably the kind of people who watch MS Windows defrag for a thrill 2021-02-10T13:14:36Z LeoNerd: Aww but that was fun to watch 2021-02-10T13:14:42Z xMopxShell joined #scheme 2021-02-10T13:14:44Z ManDay: hehe ^^ 2021-02-10T13:14:54Z xMopxShell: /!\ this channel has moved to #nyymit /!\ 2021-02-10T13:15:05Z sekizo joined #scheme 2021-02-10T13:15:08Z edong23pn joined #scheme 2021-02-10T13:15:10Z sekizo: /!\ this channel has moved to #nyymit /!\ 2021-02-10T13:15:13Z edong23pn: /!\ this channel has moved to #nyymit /!\ 2021-02-10T13:15:26Z OvidiuSWs joined #scheme 2021-02-10T13:15:33Z OvidiuSWs: /!\ this channel has moved to #nyymit /!\ 2021-02-10T13:15:34Z xMopxShell quit (Remote host closed the connection) 2021-02-10T13:15:38Z sekizo quit (Remote host closed the connection) 2021-02-10T13:16:15Z PrettyKittiexc joined #scheme 2021-02-10T13:16:19Z PrettyKittiexc: /!\ this channel has moved to #nyymit /!\ 2021-02-10T13:16:37Z edong23pn quit (Remote host closed the connection) 2021-02-10T13:16:39Z PrettyKittiexc quit (Read error: Connection reset by peer) 2021-02-10T13:16:41Z OvidiuSWs quit (Remote host closed the connection) 2021-02-10T13:17:13Z samfty joined #scheme 2021-02-10T13:17:18Z samfty: /!\ this channel has moved to #nyymit /!\ 2021-02-10T13:17:35Z samfty quit (Remote host closed the connection) 2021-02-10T13:24:26Z ecraven: what is the first character of '|\arbin| ? a backslash, or '\a'? 2021-02-10T13:28:53Z mdhughes: (string-ref (symbol->string '|\arbin|) 0) 2021-02-10T13:33:36Z ecraven: so \a it is, according to r7rs too 2021-02-10T13:34:15Z ecraven: I'm so used to having \ escape things that languages where that *wasn't* the case and \ is just another normal character astound me.. looking at you, Interlisp :P 2021-02-10T13:47:26Z mdhughes: No, it's \ in Chez, anyway. 2021-02-10T13:47:27Z bitmapper joined #scheme 2021-02-10T13:47:42Z mdhughes: || means all within is literal. 2021-02-10T13:48:21Z mdhughes: OH, weird, it's \a in Chicken. 2021-02-10T13:48:40Z ecraven: r7rs says it should be \a 2021-02-10T13:50:08Z mdhughes: Racket as well says \, as one expects. Tinyscheme says | because ha ha it doesn't have a real parser. 2021-02-10T13:58:18Z hugh_marera quit (Quit: Connection closed) 2021-02-10T14:09:22Z aeth_ joined #scheme 2021-02-10T14:09:26Z aeth quit (Disconnected by services) 2021-02-10T14:09:34Z aeth_ is now known as aeth 2021-02-10T14:28:01Z klovett quit (Remote host closed the connection) 2021-02-10T14:28:25Z klovett joined #scheme 2021-02-10T14:28:56Z jcowan: In R6RS there is no ||, and escaping is done solely by \. In R7RS, \ is recognized inside || only. 2021-02-10T14:38:53Z pankajsg joined #scheme 2021-02-10T14:40:17Z badkins joined #scheme 2021-02-10T14:44:25Z badkins quit (Ping timeout: 240 seconds) 2021-02-10T14:49:09Z Major_Biscuit quit (Ping timeout: 264 seconds) 2021-02-10T14:51:28Z Major_Biscuit joined #scheme 2021-02-10T14:57:24Z manumanumanu: dieggsy: well, goof-loop is already a lot more capable than srfi-42, since it is more or less (chibi loop) with changes to accomodate subloops. It also generates a lot better code than the reference implementation of srfi-42. My goal is to make it more flexible than the racket for loops, which in many ways it already is (what is lacking is the implementation of a general generator form for the iterators, and 2021-02-10T14:57:25Z manumanumanu: possible a srfi-158 accumulator form for the accumulators). That would make the "second order" sequence operations of racket supported (like (stop-before ...) (add-between ...) and things like that). 2021-02-10T15:02:01Z xelxebar quit (Remote host closed the connection) 2021-02-10T15:02:20Z xelxebar joined #scheme 2021-02-10T15:05:33Z badkins joined #scheme 2021-02-10T15:08:11Z mdhughes: While there's nothing in the R6 spec, in Chez || does something: '|foo| => foo, '|\foo| => \x5C;foo, '\foo => foo 2021-02-10T15:09:06Z mdhughes: '|foo bar| => foo\x20;bar 2021-02-10T15:14:10Z mdhughes: All the loop stuff just amuses me. for-each, or my very simple for & repeat loop macros, cover 90% of my problems, named let the other 10%. I don't see a big loop construct making readability better, and it's an extra dependency. 2021-02-10T15:14:51Z Riastradh: manumanumanu: One thing I found while working on this stuff is that it's easy to add so many general bells & flexible whistles that one can't remember how a single-use feature works in the place where it actually got used. 2021-02-10T15:15:51Z Riastradh: A good guideline is: defer naming a pattern until you've definitely seen at least three instances of it (and then only if the name makes it easier to understand than the pattern itself). 2021-02-10T15:28:52Z manumanumanu: Riastradh: That seems like a good idea. I just want to have some kind of general iterator protocol so that I can have things like (in-cycle ...). The inner workings will be hidden from the user, though. I am nearing the point of a first release, but first I want to fix a bunch of small annoyances (currently the first clause needs to be a :for clause for example. And I want to change the accumulator protocol 2021-02-10T15:28:54Z manumanumanu: so that I can easily stop the loop if an accumulator (like vectoring) becomes full). I will probably go back to the "roots" and make sure all clauses are parethesised, so :when (< a 5) becomes (:when (< a 5)). 2021-02-10T15:28:59Z hugh_marera joined #scheme 2021-02-10T15:29:44Z manumanumanu: The "general iterators" is the only thing I lack to have everything racket's for loops have, and all the extra stuff that i got from (chibi loop)/foof-loop. 2021-02-10T15:31:14Z manumanumanu: Then tests and it's release time! 2021-02-10T15:41:10Z imode joined #scheme 2021-02-10T15:58:30Z ManDay quit (Quit: WeeChat 3.0) 2021-02-10T16:01:56Z badkins quit (Remote host closed the connection) 2021-02-10T16:08:28Z badkins joined #scheme 2021-02-10T16:12:08Z manumanumanu: Riastradh: does foof-loop include a syntax-rules named update macro, btw? Currently I fallback to syntax-case for that functionality 2021-02-10T16:13:45Z badkins quit (Ping timeout: 264 seconds) 2021-02-10T16:13:59Z badkins joined #scheme 2021-02-10T16:21:21Z epony quit (Quit: upgrades) 2021-02-10T16:22:59Z hendursa1 joined #scheme 2021-02-10T16:23:22Z Riastradh: `named update macro'? 2021-02-10T16:24:52Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-10T16:25:17Z Riastradh: foof-loop's protocol should make it easy for accumulators to terminate, I would expect -- they are not distinguished from any other kind of iterator, so they can provide termination conditions. 2021-02-10T16:26:54Z manumanumanu: oh, but in the presence of subloops that breaks. The iterator "end" condition should just go out to the outer loop 2021-02-10T16:27:25Z manumanumanu: chibi loop does (loop-name (=> iterator-name update)) 2021-02-10T16:27:49Z Riastradh: foof-loop does (loop-name (=> iterator-name update)) too, implemented by https://mumble.net/~campbell/scheme/syn-param.scm 2021-02-10T16:28:17Z manumanumanu: wowza! You are a syntax-rules wizard 2021-02-10T16:29:23Z Riastradh: (it can also do fancier forms like (loop-name iterator1 := update1 iterator2 := update2) but foof-loop doesn't do that) 2021-02-10T16:30:08Z Riastradh: (I think an early draft of foof's loop might have done (loop-name iterator1 <- udpate1).) 2021-02-10T16:30:15Z Riastradh: (which would explain the unnecessary generalization) 2021-02-10T16:31:09Z dieggsy: mdhughes: I'm so used to just named let and the occasional do that I hardly use anything else (except srfi-1 iterators for simple cases) 2021-02-10T16:33:42Z mdhughes: `do` is pretty ugly for the common cases, tho. And I always have to copy-paste an example to get it right, or I'll have my conditions reversed or something. 2021-02-10T16:36:31Z Riastradh: (dont loop ((for x (in-list L)) (for i (up-from 0))) ...) 2021-02-10T16:36:35Z dieggsy: hence "occasional". only for very simple cases 2021-02-10T16:37:07Z dieggsy: really just writing named let's everywhere mostly 2021-02-10T16:38:55Z pankajsg quit (Remote host closed the connection) 2021-02-10T16:39:21Z pankajsg joined #scheme 2021-02-10T16:39:23Z amoe quit (Ping timeout: 256 seconds) 2021-02-10T16:39:34Z amoe joined #scheme 2021-02-10T16:42:26Z dieggsy: the most annoying thing about do is you can't reference other vars in the declarations bit. this makes it almost useless imo 2021-02-10T16:47:09Z epony joined #scheme 2021-02-10T16:53:21Z Garbanzo joined #scheme 2021-02-10T16:58:05Z pankajsg quit (Ping timeout: 256 seconds) 2021-02-10T17:07:47Z ngz joined #scheme 2021-02-10T17:09:55Z skapata joined #scheme 2021-02-10T17:11:07Z hyiltiz quit (Ping timeout: 256 seconds) 2021-02-10T17:12:13Z amirouche quit (Quit: WeeChat 2.8) 2021-02-10T17:13:33Z terpri quit (Quit: Leaving) 2021-02-10T17:17:54Z Major_Biscuit quit (Ping timeout: 246 seconds) 2021-02-10T17:20:38Z hyiltiz joined #scheme 2021-02-10T17:24:48Z acarrico joined #scheme 2021-02-10T17:28:08Z terpri joined #scheme 2021-02-10T17:31:45Z acarrico quit (Ping timeout: 264 seconds) 2021-02-10T17:50:29Z joethecodhr joined #scheme 2021-02-10T17:53:51Z skapate joined #scheme 2021-02-10T17:54:52Z Wezl quit (Ping timeout: 260 seconds) 2021-02-10T17:56:05Z skapata quit (Ping timeout: 272 seconds) 2021-02-10T17:56:05Z skapate is now known as skapata 2021-02-10T17:58:26Z Garbanzo quit (Ping timeout: 240 seconds) 2021-02-10T18:01:31Z madage quit (Remote host closed the connection) 2021-02-10T18:02:07Z madage joined #scheme 2021-02-10T18:02:15Z pankajsg joined #scheme 2021-02-10T18:02:35Z phillbush quit (Quit: Leaving) 2021-02-10T18:03:15Z phillbush joined #scheme 2021-02-10T18:04:03Z badkins quit (Remote host closed the connection) 2021-02-10T18:04:41Z manumanumanu: dieggsy: you can add (let* loop (clauses ...) ...) for the initial bindings. That is one syntax-rules away 2021-02-10T18:06:18Z dieggsy: manumanumanu: sure, but at that point, may as well just use named let rather than create do* or something 2021-02-10T18:06:52Z manumanumanu: Riastradh: I have had a look at the syn-params. Mighty impressive! 2021-02-10T18:11:45Z aeth quit (Ping timeout: 240 seconds) 2021-02-10T18:13:50Z aeth joined #scheme 2021-02-10T18:21:47Z ManDay joined #scheme 2021-02-10T18:32:07Z joethecodhr quit (Quit: Leaving) 2021-02-10T18:33:15Z joethecodhr joined #scheme 2021-02-10T18:34:09Z joethecodhr quit (Client Quit) 2021-02-10T18:34:26Z badkins joined #scheme 2021-02-10T18:34:38Z joethecodhr joined #scheme 2021-02-10T18:49:24Z wasamasa: I've looked at https://srfi.schemers.org/srfi-220/ earlier this morning and it feels kind of wrong 2021-02-10T18:49:41Z wasamasa: why'd you have special syntax for amounts to magic comments, but serialize them in a way not distinguishable from normal s-expressions 2021-02-10T18:50:13Z wasamasa: doesn't that kind of subvert the purpose or are you supposed to start the magic comment with a symbol your parsing code expects? 2021-02-10T18:52:20Z pankajsg quit (Read error: Connection reset by peer) 2021-02-10T18:52:34Z pankajsg joined #scheme 2021-02-10T18:53:08Z ManDay quit (Quit: WeeChat 3.0) 2021-02-10T18:54:57Z Wezl joined #scheme 2021-02-10T18:55:26Z joethecodhr quit (Quit: Leaving) 2021-02-10T18:56:01Z joethecodhr joined #scheme 2021-02-10T19:03:19Z dieggsy: manumanumanu: (let* loop (..) ...) actually doesn't work in chicken fwiw 2021-02-10T19:03:44Z manumanumanu: dieggsy: it doesn't work anywhere, I believe. 2021-02-10T19:04:12Z dieggsy: manumanumanu: oh, what were you suggesting earlier? 2021-02-10T19:05:12Z manumanumanu: that you write your own let* that expands to a succession of lets and an innermost named let. 2021-02-10T19:06:04Z dieggsy: oh. nah 2021-02-10T19:06:11Z dieggsy: certainly doable though 2021-02-10T19:08:02Z manumanumanu: hard to define properly though. What should the semantics be? Should the loop name be bound to a macro that ensures that the arguments are bound as let*? Should only the outermost binding form be let*, and the loop function be like a regular function application? Neither is a good choice :P 2021-02-10T19:09:07Z dieggsy: right. this is why i stick to named let 2021-02-10T19:09:16Z dieggsy: it's simple enough, don't have to lug an extra dep around with me 2021-02-10T19:11:18Z Zipheir: Higher-order functions! 2021-02-10T19:12:46Z duncanm: la la la 2021-02-10T19:13:01Z Zipheir: The chapter "Origami Programming" is an eye-opener on this count, and might well be subtitled "Fold: The Ultimate Loop" http://www.comlab.ox.ac.uk/people/jeremy.gibbons/publications/origami.pdf 2021-02-10T19:15:14Z manumanumanu: I am not sure I agree. I use them a lot, but suddenly they become too slow. Then you rewrite it as a left fold, but when you are there, you might write the same code, often just as clear, as a named let and skip the overhead of the procedure call in schemes that don't optimize it. 2021-02-10T19:15:43Z manumanumanu: There is of course srfi-171, but you end up using a lot of characters... 2021-02-10T19:17:05Z Zipheir: There are many, many details to consider, of course. 2021-02-10T19:17:58Z Zipheir: But, in light of how complicated most loop macros get, and how long named-let loops get, I'm inclined to look for HOF solutions. 2021-02-10T19:22:08Z rgherdt joined #scheme 2021-02-10T19:27:15Z gravicappa quit (Ping timeout: 268 seconds) 2021-02-10T19:28:39Z gravicappa joined #scheme 2021-02-10T19:29:51Z raingloom joined #scheme 2021-02-10T19:35:56Z jobol quit (Quit: Leaving) 2021-02-10T19:36:42Z phillbush quit (Remote host closed the connection) 2021-02-10T19:43:08Z phillbush joined #scheme 2021-02-10T19:52:14Z dieggsy: long? 2021-02-10T19:55:48Z Zipheir: Sometimes. Perhaps the more common issue is the inexorable line-after-line march to the right, which I think Olin Shivers called the "tail recursion tar pit" or something. 2021-02-10T19:58:03Z acarrico joined #scheme 2021-02-10T19:58:05Z badkins quit (Remote host closed the connection) 2021-02-10T19:58:37Z badkins joined #scheme 2021-02-10T20:02:36Z Zipheir: Olin thinks that "map and fold are not the answer", but I'm not sure he really paid that much attention to them. His solution is the massive "Olin loop" system, the implementation of which is a Flying Dutchman of Scheme (people pop up now and then saying that they've seen off the coast of an obscure server). 2021-02-10T20:02:50Z Zipheir: s/seen/seen it/ 2021-02-10T20:03:05Z badkins quit (Ping timeout: 240 seconds) 2021-02-10T20:10:21Z badkins joined #scheme 2021-02-10T20:14:26Z Wezl quit (Read error: Connection reset by peer) 2021-02-10T20:14:48Z Wezl joined #scheme 2021-02-10T20:18:42Z gioyik joined #scheme 2021-02-10T20:18:56Z raingloom quit (Ping timeout: 240 seconds) 2021-02-10T20:21:54Z xelxebar quit (Remote host closed the connection) 2021-02-10T20:22:13Z xelxebar joined #scheme 2021-02-10T21:06:38Z Wezl quit (Ping timeout: 264 seconds) 2021-02-10T21:12:34Z gravicappa quit (Ping timeout: 256 seconds) 2021-02-10T21:23:49Z Wezl joined #scheme 2021-02-10T21:26:21Z pankajsg quit (Ping timeout: 264 seconds) 2021-02-10T21:30:31Z Wezl quit (Quit: resolved) 2021-02-10T21:34:09Z badkins quit (Remote host closed the connection) 2021-02-10T21:34:41Z badkins joined #scheme 2021-02-10T21:38:56Z badkins quit (Ping timeout: 240 seconds) 2021-02-10T21:44:19Z hendursaga joined #scheme 2021-02-10T21:46:46Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-10T21:55:26Z badkins joined #scheme 2021-02-10T21:56:30Z zdm joined #scheme 2021-02-10T22:05:10Z badkins quit (Remote host closed the connection) 2021-02-10T22:05:29Z badkins joined #scheme 2021-02-10T22:05:31Z badkins quit (Remote host closed the connection) 2021-02-10T22:06:24Z dieggsy: lol 2021-02-10T22:06:56Z dieggsy: Zipheir: i feel like you can always modularize more and more with functions if your loops are getting crazy 2021-02-10T22:08:58Z gioyik quit (Ping timeout: 268 seconds) 2021-02-10T22:27:19Z amirouche joined #scheme 2021-02-10T22:27:56Z gioyik joined #scheme 2021-02-10T22:35:14Z srandon111 joined #scheme 2021-02-10T22:44:53Z clog joined #scheme 2021-02-10T22:50:47Z hendursaga quit (Quit: hendursaga) 2021-02-10T22:51:09Z hendursaga joined #scheme 2021-02-10T22:58:11Z rgherdt quit (Ping timeout: 272 seconds) 2021-02-10T23:22:28Z klovett quit 2021-02-10T23:25:40Z terpri quit (Remote host closed the connection) 2021-02-10T23:25:59Z terpri joined #scheme 2021-02-11T00:09:40Z civodul quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-11T00:19:43Z joethecodhr_ joined #scheme 2021-02-11T00:20:39Z joethecodhr quit (Ping timeout: 256 seconds) 2021-02-11T00:21:46Z joethecodhr_ quit (Remote host closed the connection) 2021-02-11T00:22:09Z joethecodhr_ joined #scheme 2021-02-11T00:23:16Z joethecodhr_ quit (Remote host closed the connection) 2021-02-11T00:31:16Z Garbanzo joined #scheme 2021-02-11T00:32:39Z badkins joined #scheme 2021-02-11T00:34:23Z ngz quit (Quit: Sleep time) 2021-02-11T00:41:29Z c7d9 joined #scheme 2021-02-11T00:42:56Z phillbush quit (Quit: Leaving) 2021-02-11T00:45:20Z c7d9_ quit (Ping timeout: 272 seconds) 2021-02-11T01:04:50Z Garbanzo quit (Ping timeout: 264 seconds) 2021-02-11T01:33:32Z srandon111 quit (Quit: leaving) 2021-02-11T01:40:03Z badkins quit (Remote host closed the connection) 2021-02-11T01:44:51Z klovett joined #scheme 2021-02-11T01:44:53Z badkins joined #scheme 2021-02-11T01:55:40Z aquijoule_ joined #scheme 2021-02-11T01:57:56Z richbridger quit (Ping timeout: 240 seconds) 2021-02-11T02:09:04Z hendursa1 joined #scheme 2021-02-11T02:11:19Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-11T02:15:00Z raingloom joined #scheme 2021-02-11T02:24:48Z X-Scale quit (Ping timeout: 256 seconds) 2021-02-11T03:12:11Z Formbi quit (Remote host closed the connection) 2021-02-11T03:18:36Z Formbi joined #scheme 2021-02-11T04:11:01Z jgart joined #scheme 2021-02-11T04:12:02Z jgart: Hi, Is arithmetic-shift the same as the 2k-ary method? 2021-02-11T04:14:28Z jgart: arithmetic-shift is mentioned in Section 9.4 of https://www.iro.umontreal.ca/~gambit/doc/gambit.html 2021-02-11T04:17:46Z Zipheir: "2k-ary"? 2021-02-11T04:17:58Z Zipheir: There's a version that takes 2,000 arguments? 2021-02-11T04:19:15Z Zipheir: Oh, I see the WP reference on #chicken. Unless the implementation is documented, you'll have to RTFS and find out. 2021-02-11T04:19:20Z Zipheir: jgart: ^ 2021-02-11T04:21:21Z Riastradh: `2k-ary method'? 2021-02-11T04:22:19Z jgart: Riastradh, https://en.wikipedia.org/wiki/Exponentiation_by_squaring#2k-ary_method 2021-02-11T04:23:18Z Riastradh: What would it mean for arithmetic-shift to be `the same as the 2^k-ary method'? 2021-02-11T04:23:43Z Riastradh: What (arithmetic-shift x n) returns is x * 2^n, not x^n. 2021-02-11T04:24:41Z jgart: I'm essentially trying to implement an optimized version of (pow 2 3) -> 8 using arithmetic-shift. Here's my slow implementation: https://paste.debian.net/1185030/ 2021-02-11T04:24:59Z jgart: any hints, not the direct answer are greatly appreciated 2021-02-11T04:25:43Z Riastradh: Hint: If n = 2*m + b where b is either 0 or 1, you can get b with (bitwise-and n 1) and m with (arithmetic-shift n -1). 2021-02-11T04:26:14Z Riastradh: (alternatively, (remainder n 2) and (quotient n 2), which might be clearer for the reader) 2021-02-11T04:26:58Z Riastradh: well 2021-02-11T04:27:34Z Riastradh: That will help with the basic exponentiation by squaring method. 2021-02-11T04:27:38Z zxq2 joined #scheme 2021-02-11T04:28:47Z Riastradh: If you want to use the 2^k-ary method, you'll need to compute f(n) = (s,u) where n = u 2^s. That is, s is the number of leading zero bits, and u is what you get by shifting those bits off. 2021-02-11T04:30:41Z Riastradh: If you have something like n = #b110010100100000, you can get a mask #b11111 of all the leading zero bits with n ^ (n - 1). This works because n - 1 borrows from the first 1 bit, giving #b110010100011111, and then xor clears all the other bits in common giving #b000000000011111. You can then use integer-length to find how many leading zero bits there were. 2021-02-11T04:40:25Z pankajsg joined #scheme 2021-02-11T04:45:52Z jgart: Riastradh, thank you for all the explanation. I'll have to study it a bit more 2021-02-11T04:49:19Z Riastradh: jcowan: If you copied the logsumexp documentation or implementation from MIT Scheme anywhere, er...what I wrote didn't make a whole lot of sense and you might want to git pull it again. 2021-02-11T04:51:27Z jcowan: What between hard-to-understand documentation and badly adapted code, I decided not to take further steps with it. 2021-02-11T04:54:42Z cchristiansen joined #scheme 2021-02-11T04:57:13Z Riastradh: The documentation is slightly less hard to understand now (the nonsensical edge cases I had hallucinated no longer clutter it up) and the code is slightly less bad now although a bit longer. 2021-02-11T04:58:27Z Riastradh: What does `badly adapted code' mean? 2021-02-11T05:17:49Z cchristiansen quit (Quit: ERC (IRC client for Emacs 27.1)) 2021-02-11T05:19:16Z ZombieChicken joined #scheme 2021-02-11T05:23:33Z brendyyn joined #scheme 2021-02-11T05:31:07Z L35M153r4bl35 quit (Quit: BRB) 2021-02-11T05:48:13Z gravicappa joined #scheme 2021-02-11T06:12:39Z aeth quit (Ping timeout: 272 seconds) 2021-02-11T06:13:48Z aeth joined #scheme 2021-02-11T06:18:58Z skapata quit (Remote host closed the connection) 2021-02-11T06:19:24Z raingloom quit (Ping timeout: 256 seconds) 2021-02-11T06:39:51Z amirouche1 joined #scheme 2021-02-11T06:43:10Z amirouche quit (Ping timeout: 272 seconds) 2021-02-11T06:48:58Z raingloom joined #scheme 2021-02-11T06:53:39Z badkins quit (Remote host closed the connection) 2021-02-11T06:54:18Z badkins joined #scheme 2021-02-11T06:58:39Z badkins quit (Ping timeout: 246 seconds) 2021-02-11T07:23:21Z gioyik quit (Ping timeout: 268 seconds) 2021-02-11T07:29:34Z rgherdt joined #scheme 2021-02-11T07:42:21Z amirouche1 is now known as amirouche 2021-02-11T07:56:08Z jgart quit (Quit: Leaving) 2021-02-11T07:57:04Z jobol joined #scheme 2021-02-11T08:28:37Z Major_Biscuit joined #scheme 2021-02-11T08:29:57Z drakonis quit (Quit: ZNC 1.8.2 - https://znc.in) 2021-02-11T08:31:11Z Zenton quit (Ping timeout: 260 seconds) 2021-02-11T08:32:20Z drakonis joined #scheme 2021-02-11T08:49:00Z raingloom quit (Ping timeout: 265 seconds) 2021-02-11T08:54:25Z shawnw joined #scheme 2021-02-11T08:56:12Z shawnw__ quit (Read error: Connection reset by peer) 2021-02-11T09:05:04Z hendursaga joined #scheme 2021-02-11T09:07:34Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-11T09:09:53Z hendursa1 joined #scheme 2021-02-11T09:13:07Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-11T09:31:38Z drakonis quit (Ping timeout: 272 seconds) 2021-02-11T09:32:01Z stux16777216Away quit (Ping timeout: 256 seconds) 2021-02-11T09:33:27Z snits quit (Remote host closed the connection) 2021-02-11T09:33:32Z z0d quit (Ping timeout: 272 seconds) 2021-02-11T09:33:45Z snits joined #scheme 2021-02-11T09:33:50Z raingloom joined #scheme 2021-02-11T09:34:23Z z0d joined #scheme 2021-02-11T09:34:23Z stux16777216Away joined #scheme 2021-02-11T09:35:31Z drakonis joined #scheme 2021-02-11T09:38:47Z imode quit (Ping timeout: 265 seconds) 2021-02-11T09:43:08Z rgherdt quit (Remote host closed the connection) 2021-02-11T09:43:32Z rgherdt joined #scheme 2021-02-11T09:46:48Z ArneBab quit (Ping timeout: 258 seconds) 2021-02-11T09:55:37Z ArneBab joined #scheme 2021-02-11T10:15:45Z Zenton joined #scheme 2021-02-11T10:22:04Z ArneBab quit (Remote host closed the connection) 2021-02-11T10:23:17Z ArneBab joined #scheme 2021-02-11T10:38:44Z ArneBab quit (Remote host closed the connection) 2021-02-11T10:40:01Z ArneBab joined #scheme 2021-02-11T10:56:26Z ArneBab quit (Read error: Connection reset by peer) 2021-02-11T10:57:38Z ArneBab joined #scheme 2021-02-11T10:57:38Z ArneBab quit (Changing host) 2021-02-11T10:57:38Z ArneBab joined #scheme 2021-02-11T11:38:03Z phillbush joined #scheme 2021-02-11T11:49:46Z _apg quit (Ping timeout: 256 seconds) 2021-02-11T12:18:38Z raingloom quit (Ping timeout: 264 seconds) 2021-02-11T12:36:06Z m1dnight_ quit (Quit: WeeChat 2.4) 2021-02-11T12:37:18Z siraben: Zipheir: https://www.ccs.neu.edu/home/shivers/papers/loop.pdf looks very monadic to me 2021-02-11T12:37:24Z m1dnight_ joined #scheme 2021-02-11T12:48:51Z m1dnight_ quit (Read error: Connection reset by peer) 2021-02-11T12:50:01Z m1dnight_ joined #scheme 2021-02-11T13:29:19Z ngz joined #scheme 2021-02-11T13:36:20Z z-memory joined #scheme 2021-02-11T13:59:25Z amirouche quit (Ping timeout: 240 seconds) 2021-02-11T14:01:37Z amirouche joined #scheme 2021-02-11T14:11:13Z klovett quit (Remote host closed the connection) 2021-02-11T14:11:47Z klovett joined #scheme 2021-02-11T14:12:33Z aeth quit (Ping timeout: 264 seconds) 2021-02-11T14:14:01Z aeth joined #scheme 2021-02-11T14:28:00Z klovett quit (Remote host closed the connection) 2021-02-11T14:28:15Z klovett joined #scheme 2021-02-11T14:34:42Z phillbush quit (Ping timeout: 246 seconds) 2021-02-11T14:43:44Z srandon111 joined #scheme 2021-02-11T14:53:36Z brendyyn quit (Ping timeout: 240 seconds) 2021-02-11T14:57:30Z phillbush joined #scheme 2021-02-11T15:01:12Z webshinra quit (Remote host closed the connection) 2021-02-11T15:03:14Z webshinra joined #scheme 2021-02-11T15:27:35Z phillbush quit (Quit: Leaving) 2021-02-11T15:46:26Z wasamasa quit (Quit: ZNC - https://znc.in) 2021-02-11T15:46:47Z wasamasa joined #scheme 2021-02-11T15:55:50Z raingloom joined #scheme 2021-02-11T16:00:23Z ngz quit (Ping timeout: 272 seconds) 2021-02-11T16:05:52Z _apg joined #scheme 2021-02-11T16:07:26Z phillbush joined #scheme 2021-02-11T16:21:49Z imode joined #scheme 2021-02-11T16:25:32Z badkins joined #scheme 2021-02-11T16:32:42Z mirrorbird joined #scheme 2021-02-11T16:32:56Z z-memory quit (Quit: Connection closed for inactivity) 2021-02-11T17:06:05Z supercoven joined #scheme 2021-02-11T17:06:06Z supercoven quit (Max SendQ exceeded) 2021-02-11T17:06:20Z supercoven joined #scheme 2021-02-11T17:06:21Z supercoven quit (Max SendQ exceeded) 2021-02-11T17:06:35Z supercoven joined #scheme 2021-02-11T17:06:36Z supercoven quit (Max SendQ exceeded) 2021-02-11T17:06:50Z supercoven joined #scheme 2021-02-11T17:07:55Z skapata joined #scheme 2021-02-11T17:09:32Z hugh_marera89 joined #scheme 2021-02-11T17:10:23Z hugh_marera89 quit (Client Quit) 2021-02-11T17:10:43Z hugh_marera17 joined #scheme 2021-02-11T17:10:45Z hugh_marera quit (Ping timeout: 240 seconds) 2021-02-11T17:11:30Z hugh_marera17 is now known as hugh_marera 2021-02-11T17:12:09Z euandreh quit (Ping timeout: 256 seconds) 2021-02-11T17:14:53Z euandreh joined #scheme 2021-02-11T17:17:41Z Riastradh: So map is nondestructive -- it never alters its input list. 2021-02-11T17:17:59Z amirouche quit (Quit: WeeChat 2.8) 2021-02-11T17:19:00Z Riastradh: Is the continuation to the call to the mapped procedure required/expected to be nondestructive too? 2021-02-11T17:19:25Z Riastradh: (Answer with normative references to standards/implementations about requirements or expectations or violations thereof. Obviously if you want to use it with `amb', the answer has to be `yes', but this is a question about requirements or expectations, not about justification from first principles.) 2021-02-11T17:20:24Z Riastradh: Same for filter, take-while, delete, delete-duplicates, lset-union, &c. 2021-02-11T17:21:17Z euandreh quit (Ping timeout: 260 seconds) 2021-02-11T17:23:14Z euandreh joined #scheme 2021-02-11T17:23:26Z X-Scale joined #scheme 2021-02-11T17:24:28Z Riastradh: In MIT Scheme, map has not only never guaranteed this, but actually always violated this since 1996. 2021-02-11T17:28:06Z aeth quit (Ping timeout: 265 seconds) 2021-02-11T17:29:27Z aeth joined #scheme 2021-02-11T17:37:08Z ngz joined #scheme 2021-02-11T17:38:38Z X-Scale` joined #scheme 2021-02-11T17:39:19Z Zipheir: Isn't the continuation to the call to the mapped procedure just "more map"? 2021-02-11T17:40:32Z X-Scale quit (Ping timeout: 256 seconds) 2021-02-11T17:40:33Z X-Scale` is now known as X-Scale 2021-02-11T17:41:00Z Riastradh: Well, here are three different implementations one might use: 2021-02-11T17:41:10Z Riastradh: (define (map f L) (if (pair? L) (cons (f (car L)) (map f (cdr L))) '())) 2021-02-11T17:41:38Z Riastradh: (define (map f L) (let loop ((L L) (R '())) (if (pair? L) (loop (cdr L) (cons (f (car L)) R)) (reverse! R)))) 2021-02-11T17:42:44Z Riastradh: (define (map f L) (if (not (pair? L)) '() (let ((R0 (cons 0 '()))) (let loop ((L L) (R R0)) (if (pair? L) (let ((R (cons (f (car L)) '()))) (set-cdr! R0 R) (loop (cdr L) R0)))) (cdr R0)))) 2021-02-11T17:43:01Z Riastradh: oops should be (loop (cdr L) R) 2021-02-11T17:43:06Z Riastradh: anyway 2021-02-11T17:43:15Z jgart joined #scheme 2021-02-11T17:44:02Z Riastradh: The first one gives f a nondestructive continuation; the second two give f different destructive continuations. 2021-02-11T17:44:05Z Zipheir: None of those mutate L, AFAICT. 2021-02-11T17:44:30Z Riastradh: Correct. 2021-02-11T17:45:47Z Zipheir: So they're all valid implementations. What would an implementation that violates that property look like? 2021-02-11T17:46:05Z Riastradh: The destructive continuations affect the _result_ that map may have already returned. 2021-02-11T17:46:51Z Zipheir: Oh. Hmm. 2021-02-11T17:52:34Z Zipheir: There is this in R7: "If multiple returns occur from map, the values returned by earlier returns are not mutated." 2021-02-11T17:53:27Z Riastradh: https://mumble.net/~campbell/tmp/20210211/evilmap.scm 2021-02-11T17:54:32Z Riastradh: (better, reload) 2021-02-11T17:56:46Z Riastradh: So there is. How widely is that semantics respected? Does that apply to anything other than map like filter? 2021-02-11T17:57:28Z ecraven: wouldn't it be very inconsistent if it *didn't* apply to those others? 2021-02-11T17:59:09Z sz0 quit (Quit: Connection closed for inactivity) 2021-02-11T17:59:24Z Riastradh: Asking about normative references and actual behaviour, not about first principles! 2021-02-11T18:01:24Z hendursaga joined #scheme 2021-02-11T18:03:27Z hendursa1 quit (Ping timeout: 268 seconds) 2021-02-11T18:03:56Z Major_Biscuit quit (Ping timeout: 240 seconds) 2021-02-11T18:14:43Z mirrorbird quit (Quit: Leaving) 2021-02-11T18:20:46Z ecraven: well, R7RS has that exact wording only for `map', `string-map' and `vector-map' 2021-02-11T18:30:51Z Zipheir: And SRFI 1 is silent on the issue. 2021-02-11T18:31:17Z Zipheir: "Most Scheme libraries are written as though call/cc doesn't exist." (Marc Nieper-Wißkirchen) 2021-02-11T18:42:33Z aeth quit (Ping timeout: 264 seconds) 2021-02-11T18:43:52Z aeth joined #scheme 2021-02-11T18:48:46Z badkins quit (Remote host closed the connection) 2021-02-11T18:49:30Z badkins joined #scheme 2021-02-11T18:54:03Z badkins quit (Ping timeout: 246 seconds) 2021-02-11T18:59:56Z gravicappa quit (Ping timeout: 240 seconds) 2021-02-11T19:00:14Z ZombieChicken quit (Remote host closed the connection) 2021-02-11T19:00:16Z gravicappa joined #scheme 2021-02-11T19:00:40Z ZombieChicken joined #scheme 2021-02-11T19:06:33Z Oxyd: Probably not unreasonable, otherwise you might have to pessimise the implementation just to support a very rare use-case. Wonder why R7RS mandates that for map specifically. 2021-02-11T19:16:19Z dpk: question about naming conventions: 2021-02-11T19:16:21Z gwatt: Standards are probably more heavily discussed than any old library 2021-02-11T19:17:07Z dpk: in Scheme, I/O operations are considered non-destructive/non-side-effectual for the purpose of procedure names 2021-02-11T19:17:20Z dpk: so we have display and not display! 2021-02-11T19:17:46Z aeth: which is incorrect 2021-02-11T19:18:04Z dpk: what if i have a procedure call that only directly does I/O, but in doing so causes remote state to change? 2021-02-11T19:18:21Z aeth: the standard is inconsistent in this area 2021-02-11T19:18:27Z dpk: like, say, it does an HTTP DELETE or something 2021-02-11T19:18:32Z aeth: it should be "display!" but it's not 2021-02-11T19:18:55Z Zipheir: dpk: Do you consider the remote state to be part of the state of your program? 2021-02-11T19:19:01Z dpk: are there other IO operations which have bangs in their names? 2021-02-11T19:19:25Z dpk: Zipheir: ooh, good question. i’d guess so, yes 2021-02-11T19:19:39Z Zipheir: Then bang it is. 2021-02-11T19:21:09Z euandreh quit (Ping timeout: 272 seconds) 2021-02-11T19:22:34Z euandreh joined #scheme 2021-02-11T19:22:36Z dpk: aeth: i know Kernel (a cleaned-up Scheme with first-class special forms by means of fexprs) has display! etc. (it also has ?, etc instead of < and > ...) 2021-02-11T19:23:21Z dpk: but i chalked that up to a deeper difference in philosophy concerning the nature of IO procedures 2021-02-11T19:23:38Z aeth: afaik r7rs has renaming so you can just create a library that has the corrected names if "display!" over "display" matters to you 2021-02-11T19:24:24Z dpk: well, it doesn’t, i’m happy to accept Scheme’s convention, i was just wondering about this particular case 2021-02-11T19:25:55Z hendursa1 joined #scheme 2021-02-11T19:26:45Z c7d9 quit (Ping timeout: 240 seconds) 2021-02-11T19:27:03Z mdhughes: I/O isn't destructive, it's not modifying data in your program. 2021-02-11T19:28:20Z s-video joined #scheme 2021-02-11T19:28:33Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-11T19:28:46Z gwatt: Not entirely true. You have string and bytevector input/output ports which act like IO but definitely modify data. 2021-02-11T19:28:53Z mdhughes: Even (with-output-to-string) is a return value, you have to assign it where you want. 2021-02-11T19:29:10Z mdhughes: It doesn't set a variable or redefine anything. 2021-02-11T19:29:19Z Zipheir: Except the universe. 2021-02-11T19:29:56Z Zipheir: (Hence the traditional World -> World types of I/O functions.) 2021-02-11T19:29:57Z mdhughes: The Universe is a big 'un, it can take care of itself. 2021-02-11T19:32:18Z mangol: (write "foo") to a string port mutates the string port 2021-02-11T19:32:21Z dpk: i think the distinction between Scheme and Kernel might be summed up as that Scheme uses ! for destructive procedures, while Kernel uses it for side-effectual procedures (a somewhat larger, not to say less vaguely defined, category) 2021-02-11T19:33:06Z dpk: destructive meaning it affects the memory state of your program; everything else is Somebody Else’s Problem 2021-02-11T19:33:07Z mdhughes: (cons) modifies memory, but it's not cons! 2021-02-11T19:33:28Z mangol: set-car! changes the contents of a pair without changing the `eq` identity of the pair 2021-02-11T19:33:44Z mangol: `write` changes the contents of a string port without changing the `eq` identity of the string port 2021-02-11T19:33:47Z mangol: what's the difference? 2021-02-11T19:33:52Z Zipheir: Indeed, some languages consider memory references to be effects. 2021-02-11T19:34:11Z mdhughes: You've convinced me it should be `set-car` 2021-02-11T19:34:32Z mdhughes: (really, pairs shouldn't be mutable, that's a giant bug-spawner) 2021-02-11T19:34:39Z Zipheir: Yup. 2021-02-11T19:34:55Z mangol: wouldn't that mean that no procedures end with ! 2021-02-11T19:35:00Z mdhughes: But record setters make sense to be Foo-bar-set! because a field is like a variable. 2021-02-11T19:35:09Z Oxyd: I think the important part for me is purity. I can call (f x y z) however many times I want, and I'll always get the same result. (f! x y z), on the other hand, does not work that way. 2021-02-11T19:35:10Z mangol: car and cdr are like variables! 2021-02-11T19:35:14Z mdhughes: Variable setters and deleters are ! 2021-02-11T19:35:25Z mangol: a pair is a record with two anonymous fields 2021-02-11T19:35:26Z euandreh quit (Ping timeout: 264 seconds) 2021-02-11T19:35:28Z dpk: there are Schemes with immutable pairs 2021-02-11T19:35:39Z mangol: yes, racket for example has immutable pairs by default 2021-02-11T19:35:41Z mdhughes: Yeah, Racket's often insane but it gets that right. 2021-02-11T19:35:45Z gwatt: should define be define! because it modifies the lexical environment? 2021-02-11T19:35:51Z mdhughes: Yes. 2021-02-11T19:36:03Z mdhughes: Obviously, since set! is. 2021-02-11T19:36:21Z mdhughes: Much of this is "whatever LISP did, but fix a few things" 2021-02-11T19:36:34Z dpk: Oxyd: i can call (set-car! x 'foo) as many times as i like and it will always do the same thing 2021-02-11T19:36:37Z mangol: there's nothing obvious about any of this stuff 2021-02-11T19:36:39Z mdhughes: If you want a functional assignment, you'd use (letrec) 2021-02-11T19:36:46Z dpk: Kernel indeed has $define! 2021-02-11T19:36:56Z dpk: ($ indicating a special form) 2021-02-11T19:37:12Z Oxyd: dpk: You're right. It does, however, mean that (car x) will no longer return what it did before. 2021-02-11T19:37:46Z Zipheir: Oxyd: Again, though, "purity" vs. "effectual" is not a black and white divide. (f x y z) might trigger an exception if some area of memory is currently offline (in, say, a distributed system). 2021-02-11T19:37:54Z Oxyd: So I suppose a better way to word it would be that the purity of any procedure can only be broken by a call to a !-named procedure. 2021-02-11T19:37:57Z dpk: but iirc It Is An Error to `define` the same name more than once in the same lexical contour, no? 2021-02-11T19:38:16Z dpk: i don’t have the spec to hand 2021-02-11T19:38:20Z mangol: Oxyd: you're getting close to a good definition 2021-02-11T19:38:29Z mdhughes: impl-specific. 2021-02-11T19:38:34Z mangol: but (read) is deeply side-effet-dependent and doesn't have ! 2021-02-11T19:38:47Z mangol: that's why Haskell IO monad etc. 2021-02-11T19:38:58Z mdhughes: What side effects from `read`? 2021-02-11T19:39:04Z dpk: impl-specific is what It Is An Error (currently) means ;-) at least in R7RS 2021-02-11T19:39:24Z Zipheir: But then, Haskell weirdly doesn't consider retrieving OS info (I forget the name of the function) to be IO. 2021-02-11T19:39:32Z mangol: mdhughes: apart from modifying the port, and depending on others who modified the port before, it depends on other programs that wrote to the file 2021-02-11T19:39:33Z Oxyd: `read` advances the current position of the port it's reading as a side-effect. 2021-02-11T19:39:56Z Oxyd: Plus it might cause an effect in the real world. 2021-02-11T19:40:04Z Oxyd: Well, outside world. 2021-02-11T19:40:10Z Oxyd: I suppose Scheme is real. 2021-02-11T19:40:20Z mdhughes: Right, but it doesn't affect your program state, only the Universe. 2021-02-11T19:40:41Z Zipheir: There's no referential transparency with read. The value of (read) depends on conditions outside of the current computational context. 2021-02-11T19:40:44Z mdhughes: I can (read) all day, and I'll eventually get (eof-object), but the program is unchanged. 2021-02-11T19:40:48Z mangol: Oxyd: someone should write a Scheme themed short story in the style of The Stranger. 2021-02-11T19:40:51Z mangol: by Camus 2021-02-11T19:41:20Z Oxyd: I usually write my programs specifically to make some changes in the Universe, so I care about when I do make those changes. 2021-02-11T19:41:32Z Zipheir: Well put. :) 2021-02-11T19:41:40Z mdhughes: Only (set! foo (read)) modifies the program based on that I/O. 2021-02-11T19:42:10Z mdhughes: I care about the results of (+ x y), too, but it shouldn't be (+! x y) 2021-02-11T19:42:30Z Oxyd: (+ x y) changes neither your program, nor the rest of the Universe. 2021-02-11T19:42:36Z mangol: (+ x y) doesn't modify the place where the sum comes from. (read) modified the place where the read datums come from 2021-02-11T19:42:40Z mdhughes: OK, (random) 2021-02-11T19:42:49Z Oxyd: Now, that one's more interesting. 2021-02-11T19:43:18Z mdhughes: It's changing all sorts of internal values, but you don't care, you can perpetually (random) and your program's unchanged, until you assign it with a set! 2021-02-11T19:43:41Z mangol: what causes this drive to arrive at black-and-white delineations of complicated topics? 2021-02-11T19:43:43Z Oxyd: Since random is essentially (let ((result (vector-ref sequence i))) (set! i (+ i 1)) result). 2021-02-11T19:43:50Z s-video quit (Ping timeout: 264 seconds) 2021-02-11T19:43:54Z Oxyd: (For an imaginary pseudo-random sequence.) 2021-02-11T19:44:00Z mangol: the topic is clearly not cut and dried so why pretend that it is? 2021-02-11T19:44:32Z mdhughes: Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. 2021-02-11T19:44:32Z mdhughes: — Stan Kelly-Bootle 2021-02-11T19:44:47Z Zipheir: Interestingly, the initialization of a PRNG can be considered effectual, but, after that, calling the PRNG is not. 2021-02-11T19:45:04Z Zipheir: It's not arbitrary, it's subtle. 2021-02-11T19:45:12Z Oxyd: I do often care about the changes made by random. It's very useful to be able to reproduce a program's run multiple times even if it depends on pseudo-random number generation. 2021-02-11T19:45:15Z dpk: huh, according to R7RS-small 5.3.1 it's actually completely valid to define the same name more than once 2021-02-11T19:45:44Z phillbush quit (Remote host closed the connection) 2021-02-11T19:45:47Z Oxyd: Then again, if the seed is set and you don't change the program itself, it'll give the same answers, assuming everything else in the universe it cares about stays the same. 2021-02-11T19:46:05Z dpk: set! on an unbound variable is verboten, but define on an already-bound one isn't 2021-02-11T19:46:05Z phillbush joined #scheme 2021-02-11T19:46:17Z Zipheir: dpk: Weird. 2021-02-11T19:46:50Z mdhughes: In Chez, (random-seed) is a parameter, which is a weird middle ground (0.5), but if I was doing it from scratch I'd use (randomize!) to initialize, but (random) to read. 2021-02-11T19:46:52Z Zipheir: I thought redefinition was unspecified... 2021-02-11T19:47:01Z dpk: maybe it was in R5RS 2021-02-11T19:47:13Z mangol: but read modifies the port so it whould be `read!` then 2021-02-11T19:47:30Z mdhughes: It's not part of the program, it's the Universe. 2021-02-11T19:47:34Z Oxyd: I think redefinition of imported symbols is unspecified, but defining the same name multiple times is okay. define is essentially set!, except it also introduces a new binding if one doesn't already exist. 2021-02-11T19:47:42Z mangol: wtf? a string port exists only in the program 2021-02-11T19:47:57Z mangol: and the port position of an external port may exist only to the program 2021-02-11T19:47:59Z dpk: although i guess actually forbidding it is annoying in some contexts, like a REPL where i may wish to paste in a new version of a broken procedure and not have to change it to use (set! ... (lambda ...)) 2021-02-11T19:48:04Z gwatt: dpk: yeah, I think the repl semantics of schemes allow redefinition, but in library forms it's probably disallowed 2021-02-11T19:49:59Z mangol: that would seem like the right call 2021-02-11T19:50:44Z mangol: a language where all mutations and IO go through the type/effect system can offer a rigorous definition of what's side effecting and what's not in that language 2021-02-11T19:51:16Z mangol: the point is probably that without such rigor it's not useful to quibble too much about the details of what's a destructive operation and what's not 2021-02-11T19:51:51Z mangol: since we can point out contradictions in all definitions one might come up with 2021-02-11T19:52:51Z Zipheir: There's no !-checker in most Schemes. 2021-02-11T19:53:18Z Zipheir: It's only slightly more meaningful than the %- convention for internal procedures. 2021-02-11T19:53:25Z mangol: exactly. and if you tried to define a !-checker you'd probably end up with a full-fledged static type/effect system 2021-02-11T19:54:14Z Zipheir: There are gradually-typed models with linear types. One doesn't have to through out dynamic typing to get that. 2021-02-11T19:54:29Z Zipheir: (This is a direction for Scheme that I'm finding very interesting.) 2021-02-11T19:54:35Z mangol: but do they apply to the entire language? 2021-02-11T19:54:42Z mdhughes: It could just check the contents of each function for ! (including our new `define!`), and add a !. Loop until every function has a !. Pure text transforms! 2021-02-11T19:54:58Z Zipheir: mangol: How so? 2021-02-11T19:55:25Z Zipheir: Oops, s/through/throw/ 2021-02-11T19:55:45Z mangol: can you prove things about a gradually typed language the way you can about a guaranteed well-typed language? e.g. that you can find all side-effecting operations 2021-02-11T19:56:12Z mangol: granted that e.g. ML doesn't find side effects since the type system ignores those (except some recent work on OCaml) 2021-02-11T19:57:45Z Zipheir: mangol: It would probably be necessary to have two dynamic types, Dyn and Dyn!, for nonlinear and linear computations, respectively. 2021-02-11T19:58:06Z mangol: and by default everything's nonlinear until proven otherwise? 2021-02-11T19:58:47Z Zipheir: The exact compatibility rules of Dyn! and other types might be a little tricky. Presumably linear types are only compatible with linear types. 2021-02-11T19:59:07Z Zipheir: Nonlinear by default seems like the only sane way to go. 2021-02-11T19:59:53Z mangol: if effect types and gradual typing was added to scheme, we'd have to assume everything is side-effecting by default 2021-02-11T20:00:07Z Zipheir: Yeah, that's bogus. 2021-02-11T20:00:15Z Zipheir: This would really be a different language. 2021-02-11T20:00:18Z mangol: excepting some primitives like car and string-ref, if we can prove those bindings point to the primitives with those names 2021-02-11T20:01:09Z mangol: that's why i'm not a fan of gradual typing :) static and dynamic are fine but the hybrids are weird and complicated 2021-02-11T20:02:25Z mangol: there's probably some law about programming communities that all conversations in them are fundamentally about type systems, and only occasionally veer into other topics, only to return again 2021-02-11T20:02:59Z Zipheir: Well, propositions are types, and conversations tend to contain a lot of propositions (if little evidence). 2021-02-11T20:03:18Z mangol: i think type systems research is considered important because there are so many obvious concrete things that can be done about it. 2021-02-11T20:03:22Z Zipheir: I agree that gradual typing can get pretty hairy. 2021-02-11T20:03:32Z dpk: the inconsistency around ! doesn't really bother me about Scheme, but the bizarre combination of a preference for monomorphism (implying we should always know the exact type of everything) and dynamic typing (so we can't actually be sure our assumptions about that are correct at compile-time) is something i do find odd 2021-02-11T20:03:35Z mangol: distributed systems are a thousand times more important than type systems, but nobody knows how to solve that stuff. 2021-02-11T20:03:47Z dpk: (but so baked into the language that it's practically not Scheme any more if you change either) 2021-02-11T20:03:53Z mangol: dpk: good poind :D 2021-02-11T20:03:55Z mangol: *point 2021-02-11T20:04:52Z Zipheir: Yeah, that's an excellent point. 2021-02-11T20:04:57Z mangol: real-time and reactive systems, fault tolerance, how to get people to write documentation that doesn't suck, and actually enjoy writing it. all of these are much more important than type systems, but we're at a loss for what to do. 2021-02-11T20:05:34Z mangol: but we can always figure out how to add another knob to a type system, especially if there's no limit to how convoluted we allow the type system to get 2021-02-11T20:05:39Z Zipheir: mangol: It's not as though people *aren't* trying to work on those problems. I don't think this is an either/or situation. 2021-02-11T20:05:55Z mangol: i'm not referring to the work so much as the fervor 2021-02-11T20:06:10Z mangol: why isn't there more fervor about much more important topics? 2021-02-11T20:06:34Z Zipheir: Isn't there? 2021-02-11T20:07:03Z Zipheir: Why is it important to attack interest in type systems just because you'd like to see more interest in some other topic? 2021-02-11T20:07:12Z dpk: well, given how many languages have type systems which are undecidable now … 2021-02-11T20:07:21Z mangol: i'm not attacking it, just making fun of it lightly 2021-02-11T20:07:29Z Zipheir: It's like getting angry about people talking about football instead of space exploration. 2021-02-11T20:07:35Z dpk: https://3fx.ch/typing-is-hard.html 2021-02-11T20:07:43Z mangol: i'm not angry 2021-02-11T20:07:50Z mangol: i'm amused 2021-02-11T20:07:59Z s-video joined #scheme 2021-02-11T20:08:15Z mangol: football vs space exploration is also amusing. not that there's anything wrong with getting angry about it now and then too 2021-02-11T20:08:49Z Zipheir: dpk: That page is a nice resource. 2021-02-11T20:09:25Z mangol: but anyway i answered my own question. there's less fervor about more important topics because they are vague and daunting. moving on :) 2021-02-11T20:10:09Z Zipheir: mangol: It was a bad analogy. I'd argue that type research can actually be very useful for dealing with, say, distributed systems. The contracts of some distributed models have very nice formalizations as types, I believe. 2021-02-11T20:10:30Z Zipheir: (I mean, my football/space exploration was a bad analogy.) 2021-02-11T20:11:13Z mangol: so one of the main problems causing cell phone networks and cryptocurrencies not to scale, and large scale video broadcasting to be slow or expensive, is lacking type safety? 2021-02-11T20:11:38Z mangol: again, i'm just messing around. it's not that serious :) 2021-02-11T20:11:45Z Zipheir: If there's one thing that I feel disappoint about, it's the Tower of Babel problem we have between programming communities; I need dictionaries to go between OOP and functional discussions. 2021-02-11T20:12:06Z mangol: i think your analogy was very much on point 2021-02-11T20:12:53Z Zipheir: mangol: Anyone claiming type theory is going to solve the world's problems is bonkers in a very unusual and endearing way. 2021-02-11T20:14:10Z badkins joined #scheme 2021-02-11T20:17:45Z mangol: anyway it would still be great to have statically typed scheme too :) 2021-02-11T20:18:25Z badkins quit (Ping timeout: 240 seconds) 2021-02-11T20:19:53Z wasamasa: SML 2021-02-11T20:20:23Z mangol: SML FTW 2021-02-11T20:20:43Z Zipheir: Pie exists. 2021-02-11T20:20:52Z Zipheir: Although it only runs on Racket atm. 2021-02-11T20:22:20Z Zipheir: Extensions would be needed for general programming; general recursion, at the very least. https://github.com/the-little-typer/pie 2021-02-11T20:23:26Z z-memory joined #scheme 2021-02-11T20:23:37Z phillbush quit (Quit: Leaving) 2021-02-11T20:25:46Z mangol: Zipheir: wow, i had no idea there's http://thelittletyper.com/ 2021-02-11T20:27:14Z euandreh joined #scheme 2021-02-11T20:27:22Z gwatt: I should finish that book 2021-02-11T20:28:29Z mangol: Zipheir: if you have ideas for alleviating the tower of babel problem, i would be very interested in that. my idea is just to manually write stuff that is compatible, with some macros and conventions to automate some of the porting work. no fundamental new insight required. 2021-02-11T20:29:11Z mangol: the TUNES project had some ideas for automatic translation (based on types and proofs, curiously enough!) but i dont' understand them 2021-02-11T20:29:55Z mangol: if types could solve the tower of babel problem, they would in fact be as important as all the other stuff. 2021-02-11T20:31:04Z mangol: if not more. enormous amounts of time and money are wasted daily because things that are conceptually compatible are not compatible in inessential technical details 2021-02-11T20:32:47Z Zipheir: Heh, and you thought C FFI was difficult... 2021-02-11T20:34:50Z jobol quit (Quit: Leaving) 2021-02-11T20:34:59Z Zipheir: Part of the conceptual challenge is that so many popular programming communities seem to be allergic to math. Mention category theory (IMHO, a great conceptual unifier) to some OOP fans and you may get trolled out of the room. 2021-02-11T20:36:21Z mangol: do OOP people have a particular competitor to category theory? 2021-02-11T20:36:23Z Zipheir: I think Oleg is a good example of someone who sees issues in a non-tribal way. His work is often a great starting point. 2021-02-11T20:36:34Z Zipheir: (And Riastradh, obviously.) 2021-02-11T20:36:47Z Zipheir: UML??? 2021-02-11T20:37:21Z Zipheir: (https://ro-che.info/ccc/29) 2021-02-11T20:37:29Z mangol: wow. i had the impression that dynamic OOP people are not impressed by UML, and maybe not by modeling in general, but i don't really know that. 2021-02-11T20:37:54Z Zipheir: I don't know. I'll have to ask more OOPers. 2021-02-11T20:38:36Z mangol: part of the problem is that experienced OOPers are not easy to identify as a group 2021-02-11T20:39:00Z mangol: and don't have a set of beliefs or a doctrine that is obvious to outsiders 2021-02-11T20:39:03Z gravicappa quit (Ping timeout: 246 seconds) 2021-02-11T20:39:33Z mangol: i've many times genuinely wanted to find out more about it, but there's no obvious place to start 2021-02-11T20:40:17Z mangol: Alan Kay is great, but he speaks in very, very broad terms so it's hard to bring it down to the level of "ok, so what kinds of smalltalk classes should i write" 2021-02-11T20:40:42Z mangol: heh that comic is great 2021-02-11T20:42:20Z Zipheir: The Gang of 4 is *not* the place to start. That's all I've figured out thus far. 2021-02-11T20:42:36Z mangol: and the smalltalk luminaries outside PARC tend to be so "enterprise"-focused that it's hard for schemers and FPers who are at ease with heavy abstraction to get much to digest beyond "test driven development and user stories are great" 2021-02-11T20:42:46Z Riastradh: So many functional programming communities are addicted to math. Mention category theory (IMHO, generalized abstract nonsense) to some Haskell fans and you may get drowned out of the room with endocofunctorial tales full of sound and fury, signifying nothing. 2021-02-11T20:43:02Z Zipheir: Riastradh: Also accurate. 2021-02-11T20:43:24Z Zipheir: Although "addiction" is an abused term, I believe, and not very helpful. 2021-02-11T20:43:24Z c7d9 joined #scheme 2021-02-11T20:43:45Z Riastradh: Yes, but it alliterated well with `allergic'. 2021-02-11T20:46:43Z s-video quit (Remote host closed the connection) 2021-02-11T20:46:57Z s-video joined #scheme 2021-02-11T20:47:50Z Zipheir: Every community has their favorite arcane languages, I guess. 2021-02-11T20:48:16Z mangol: that tends to be one of the main social problems in programming. there are people who don't care at all about abstraction and rigor, and people who care excessively about abstraction and rigor. 2021-02-11T20:48:35Z Zipheir: Both sufficiently advanced OOP theory and FP talk are indistinguishable from satire. 2021-02-11T20:49:46Z mangol: that's similar to other fields where there are hairy problems no-one knows how to solve, and some invention that is ready to tinker with that kinds goes in the direction of a solution but not really 2021-02-11T20:50:36Z mangol: libertarianism in politics, or in pharmacology in health 2021-02-11T20:52:35Z badkins joined #scheme 2021-02-11T20:52:55Z jcowan: It's simple to get people to write documentation that doesn't suck: pay them. 2021-02-11T20:53:12Z jcowan: See the Interlisp documentation, which was written by professional documenters. 2021-02-11T20:53:16Z Zipheir: Most programmers would probably say they consider abstraction and rigor important. They've got what seem to be very different ideas about what those things mean, though, and inter-tribe discussions can become unbelievably acrimonious. (Almost hitting academia-level acrimony!) 2021-02-11T20:53:28Z gwatt: jcowan: The trick is to convince the moneybags that documentation is worth paying for 2021-02-11T20:54:06Z jcowan: Indeed. 2021-02-11T20:54:16Z jcowan: I solve that problem by not talking about abstraction and rigor. 2021-02-11T20:54:50Z Riastradh: rigor abstractis is setting in 2021-02-11T20:54:54Z gwatt: In my workplace documentation is everyone's job, which means there are usually three-ish places to find anything, all of which disagree and are out of date. 2021-02-11T20:55:23Z gwatt: We then got bought and merged with another company, which has the exact same problem 2021-02-11T20:55:42Z supercoven quit (Read error: Connection reset by peer) 2021-02-11T20:57:33Z badkins quit (Ping timeout: 264 seconds) 2021-02-11T20:57:48Z mangol: oh, yes. the checklist mentality leads to that. we'll look weak to our peers if we don't have this line-item crossed off the list. 2021-02-11T20:59:00Z mangol: Zipheir: indeed, some groups are very rigorous about their testing procedures for example. some are rigorous about planning. 2021-02-11T20:59:16Z mangol: or meeting deadlines. 2021-02-11T21:01:23Z mangol: it has to be said though, that things where you formalize a messy ill-defined real-world problem are often the ones that cause unreasonable enthusiasm 2021-02-11T21:03:31Z madage quit (Ping timeout: 268 seconds) 2021-02-11T21:03:54Z mangol: that's what scrum/agile, types, proofs, UML modeling, design by contract, have in common. libertarianism "people are a mess, just solve everything with contracts". medicine "people are really machines, just isolate the one broken part." 2021-02-11T21:04:32Z Oxyd: I think that's really unfair to medical professionals. 2021-02-11T21:05:18Z mangol: i don't by any means mean to knock down medicine as a whole, but a wide spectrum of things go under that banner 2021-02-11T21:05:30Z mangol: it's clear that it wasn't a good idea to say anything about the topic :) 2021-02-11T21:08:44Z ZombieChicken quit (Remote host closed the connection) 2021-02-11T21:09:34Z Riastradh: architecture astronauts `people are predictable, just sum entire professions into one-sentence aphorisms' 2021-02-11T21:18:30Z badkins joined #scheme 2021-02-11T21:19:41Z hendursa1 quit (Quit: hendursa1) 2021-02-11T21:20:02Z hendursaga joined #scheme 2021-02-11T21:20:45Z s-video quit (Ping timeout: 240 seconds) 2021-02-11T21:21:08Z lritter joined #scheme 2021-02-11T21:24:08Z madage joined #scheme 2021-02-11T21:26:47Z cchristiansen joined #scheme 2021-02-11T21:27:31Z s-video joined #scheme 2021-02-11T21:29:30Z codingquark_ joined #scheme 2021-02-11T21:30:30Z codingquark quit (Ping timeout: 246 seconds) 2021-02-11T21:35:50Z Zipheir: Riastradh: Since that's not technically a sentence, it might be accurate? 2021-02-11T21:39:56Z lritter quit (Remote host closed the connection) 2021-02-11T21:41:36Z Zipheir quit (Quit: Eadem mutata resurgo.) 2021-02-11T21:45:38Z hugh_marera quit (Quit: Connection closed) 2021-02-11T21:46:16Z hugh_marera joined #scheme 2021-02-11T21:46:45Z s-video quit (Ping timeout: 264 seconds) 2021-02-11T21:52:56Z daviid quit (Ping timeout: 240 seconds) 2021-02-11T22:00:05Z amirouche joined #scheme 2021-02-11T22:03:24Z Garbanzo joined #scheme 2021-02-11T22:07:16Z s-video joined #scheme 2021-02-11T22:16:14Z Garbanzo quit (Ping timeout: 264 seconds) 2021-02-11T22:20:05Z mzan quit (Ping timeout: 240 seconds) 2021-02-11T22:20:43Z ngz quit (Ping timeout: 265 seconds) 2021-02-11T22:21:38Z s-video quit (Ping timeout: 264 seconds) 2021-02-11T22:25:18Z lambda-11235 joined #scheme 2021-02-11T22:28:09Z friscosa1 is now known as friscosam 2021-02-11T22:32:09Z phillbush joined #scheme 2021-02-11T22:33:53Z badkins quit (Remote host closed the connection) 2021-02-11T22:34:28Z badkins joined #scheme 2021-02-11T22:35:21Z ski quit (Ping timeout: 264 seconds) 2021-02-11T22:37:45Z badkins quit (Remote host closed the connection) 2021-02-11T22:37:55Z badkins joined #scheme 2021-02-11T22:40:58Z d_run quit (Read error: Connection reset by peer) 2021-02-11T22:41:08Z d_run joined #scheme 2021-02-11T22:41:14Z CORPORAL_groovy quit (Read error: Connection reset by peer) 2021-02-11T22:41:22Z theruran quit (Read error: Connection reset by peer) 2021-02-11T22:41:30Z CORPORAL_groovy joined #scheme 2021-02-11T22:41:37Z theruran joined #scheme 2021-02-11T22:54:55Z mzan joined #scheme 2021-02-11T22:56:24Z lambda-11235 quit (Ping timeout: 240 seconds) 2021-02-11T23:08:36Z lambda-11235 joined #scheme 2021-02-11T23:12:44Z z-memory quit (Quit: Connection closed for inactivity) 2021-02-11T23:17:16Z amirouche quit (Ping timeout: 240 seconds) 2021-02-11T23:17:56Z tatsumaru joined #scheme 2021-02-11T23:18:10Z tatsumaru: hey guys, what do you think about nondeterministic turing machines? 2021-02-11T23:19:14Z tatsumaru: do you think it's possible to simulate nondeterminism with a deterministic machine? 2021-02-11T23:23:42Z Zipheir joined #scheme 2021-02-11T23:23:45Z pankajsg quit (Ping timeout: 240 seconds) 2021-02-11T23:29:39Z tatsumaru left #scheme 2021-02-11T23:31:36Z aeth quit (Ping timeout: 240 seconds) 2021-02-11T23:32:43Z xelxebar quit (Remote host closed the connection) 2021-02-11T23:33:11Z xelxebar joined #scheme 2021-02-11T23:33:48Z aeth joined #scheme 2021-02-11T23:36:04Z ski joined #scheme 2021-02-11T23:39:47Z amirouche joined #scheme 2021-02-11T23:49:41Z rgherdt quit (Ping timeout: 272 seconds) 2021-02-11T23:56:11Z jcowan: In the sense that it is possible to simulate nondeterministic random-number generators with deterministic ones. 2021-02-11T23:57:54Z Oxyd: Usually by simulating a nondeterministic Turing machine, one means creating a deterministic machine that gives the same answers for the same inputs. Which is rather different from trying to make something that appears random on a deterministic machine. 2021-02-12T00:02:43Z badkins quit (Remote host closed the connection) 2021-02-12T00:14:59Z badkins joined #scheme 2021-02-12T00:18:59Z matryoshka` quit (Quit: ZNC 1.8.2 - https://znc.in) 2021-02-12T00:19:02Z s-video joined #scheme 2021-02-12T00:19:39Z badkins quit (Remote host closed the connection) 2021-02-12T00:19:49Z badkins joined #scheme 2021-02-12T00:29:19Z daviid joined #scheme 2021-02-12T00:31:57Z klovett quit 2021-02-12T00:32:15Z lucb joined #scheme 2021-02-12T00:37:14Z s-video quit (Ping timeout: 264 seconds) 2021-02-12T00:40:05Z c7d9_ joined #scheme 2021-02-12T00:41:26Z s-video joined #scheme 2021-02-12T00:42:56Z c7d9 quit (Ping timeout: 240 seconds) 2021-02-12T00:54:31Z torbo joined #scheme 2021-02-12T00:56:32Z klovett joined #scheme 2021-02-12T01:01:57Z badkins quit (Remote host closed the connection) 2021-02-12T01:07:43Z badkins joined #scheme 2021-02-12T01:10:35Z madage quit (Remote host closed the connection) 2021-02-12T01:10:51Z madage joined #scheme 2021-02-12T01:21:08Z srandon111 quit (Quit: leaving) 2021-02-12T01:25:17Z s-video quit (Remote host closed the connection) 2021-02-12T01:25:19Z imode quit (Quit: WeeChat 3.0) 2021-02-12T01:25:29Z s-video joined #scheme 2021-02-12T01:31:49Z imode joined #scheme 2021-02-12T01:45:54Z elliott_ joined #scheme 2021-02-12T01:47:37Z jgart quit (Ping timeout: 260 seconds) 2021-02-12T01:52:09Z s-video quit (Ping timeout: 264 seconds) 2021-02-12T01:53:45Z matryoshka joined #scheme 2021-02-12T01:58:18Z amirouche1 joined #scheme 2021-02-12T02:01:24Z amirouche quit (Ping timeout: 265 seconds) 2021-02-12T02:19:39Z teej joined #scheme 2021-02-12T02:26:57Z amirouche1 quit (Ping timeout: 246 seconds) 2021-02-12T02:34:00Z torbo quit (Remote host closed the connection) 2021-02-12T02:47:01Z s-video joined #scheme 2021-02-12T02:51:02Z jgart joined #scheme 2021-02-12T02:55:48Z badkins quit (Remote host closed the connection) 2021-02-12T02:57:39Z brendyyn joined #scheme 2021-02-12T03:00:47Z phillbush quit (Remote host closed the connection) 2021-02-12T03:08:00Z badkins joined #scheme 2021-02-12T03:08:29Z badkins quit (Remote host closed the connection) 2021-02-12T03:09:03Z badkins joined #scheme 2021-02-12T03:11:12Z s-video quit (Ping timeout: 272 seconds) 2021-02-12T03:14:34Z badkins quit (Ping timeout: 256 seconds) 2021-02-12T03:23:52Z Garbanzo joined #scheme 2021-02-12T03:27:02Z aquijoule__ joined #scheme 2021-02-12T03:29:15Z aquijoule_ quit (Ping timeout: 246 seconds) 2021-02-12T03:55:45Z lucb quit (Ping timeout: 240 seconds) 2021-02-12T03:56:25Z daviid quit (Ping timeout: 240 seconds) 2021-02-12T04:08:57Z s-video joined #scheme 2021-02-12T04:30:43Z hendursa1 joined #scheme 2021-02-12T04:33:04Z hendursaga quit (Ping timeout: 268 seconds) 2021-02-12T04:41:54Z lambda-11235 quit (Ping timeout: 246 seconds) 2021-02-12T04:47:49Z cantstanya quit (Remote host closed the connection) 2021-02-12T04:48:53Z cantstanya joined #scheme 2021-02-12T04:54:32Z lambda-11235 joined #scheme 2021-02-12T04:57:20Z partyclicker joined #scheme 2021-02-12T04:57:38Z pankajsg joined #scheme 2021-02-12T04:58:45Z skapata quit (Ping timeout: 272 seconds) 2021-02-12T04:59:34Z partyclicker quit (Client Quit) 2021-02-12T05:04:14Z partyclicker joined #scheme 2021-02-12T05:16:11Z mdhughes: Paying people to do stuff? That violates the Computer Communism Foundation's 500-page manifesto. And corporate devs don't need docs because it's job security. 2021-02-12T05:17:11Z mdhughes: All programming theories are the result of people with too much downtime, not enough actual programming to solve real problems. 2021-02-12T05:26:49Z Zipheir: Uh huh, uh huh. We'd have very few computers if people had stuck to "real problems". 2021-02-12T05:28:14Z s-video quit (Ping timeout: 264 seconds) 2021-02-12T05:29:47Z Zipheir: "What a weirdo that guy Alonzo with his weird computability stuff was. What does the Ain't Shy Dungs Problem have to do with the price of beans?" 2021-02-12T05:29:52Z mdhughes: Computers were invented to solve real problems, German cryptography, accounting, etc. 2021-02-12T05:30:48Z mdhughes: Even AI has occasional practical goals, like the extermination of Man. Uh, conveniently identifying birds or something. 2021-02-12T05:39:03Z Zipheir: But they rest on theories that had no apparent practical value at the time of their discovery. That hard-boiled "real world" myopia misses a lot of details. 2021-02-12T05:41:59Z mdhughes: So you've got one mathematician (whose problem was "I need to publish or perish"), and his co-author had practical problems to solve. 2021-02-12T05:43:33Z Zipheir: You mean this practical problem? https://en.wikipedia.org/wiki/Entscheidungsproblem 2021-02-12T05:44:21Z Zipheir: λ-calculus and Turing machines were both attempts to solve that, as you probably know already. 2021-02-12T05:48:29Z klovett quit (Remote host closed the connection) 2021-02-12T05:49:05Z klovett joined #scheme 2021-02-12T05:53:24Z Zipheir: Anyway, why attack projects or topics just because they're "impractical"? 2021-02-12T05:54:20Z Zipheir: We've obviously learned most of what we know about the universe because of impractical people. 2021-02-12T05:59:35Z raingloom quit (Ping timeout: 246 seconds) 2021-02-12T06:11:56Z aeth quit (Ping timeout: 256 seconds) 2021-02-12T06:12:16Z siraben: Zipheir: ++ 2021-02-12T06:13:36Z aeth joined #scheme 2021-02-12T06:13:50Z siraben: funnily enough, number theory was even regarded as one of the purest branches of mathematics for thousands of years and it's used to solve very real problems in cryptography 2021-02-12T06:17:32Z siraben: "Thousands of years ago, the Egyptian priesthood developed the rudiments of geometry in order to figure out how to restore the boundaries of fields that were destroyed in the flooding of the Nile." - Abelson, SICP 2021-02-12T06:29:26Z gravicappa joined #scheme 2021-02-12T06:36:21Z cchristiansen quit (Remote host closed the connection) 2021-02-12T06:37:19Z jgart quit (Remote host closed the connection) 2021-02-12T06:37:42Z jgart joined #scheme 2021-02-12T06:49:15Z amirouche1 joined #scheme 2021-02-12T06:58:01Z klovett quit (Remote host closed the connection) 2021-02-12T06:58:18Z klovett joined #scheme 2021-02-12T07:03:01Z badkins joined #scheme 2021-02-12T07:06:16Z gravicappa quit (Ping timeout: 240 seconds) 2021-02-12T07:07:25Z badkins quit (Ping timeout: 256 seconds) 2021-02-12T07:12:00Z aeth quit (Ping timeout: 256 seconds) 2021-02-12T07:12:01Z hugh_marera quit (Ping timeout: 256 seconds) 2021-02-12T07:13:48Z aeth joined #scheme 2021-02-12T07:20:44Z partyclicker quit (Ping timeout: 272 seconds) 2021-02-12T07:24:53Z mangol: Zipheir: if you're referring to this channel, i don't people have been attacking anything, just pointing out that some fields are prone to unreasonable expectations about how much that field can solve and how soon. 2021-02-12T07:28:22Z mangol: i think communities like this, where people stir things up on the regular, are extremely valuable to have. it's important that a subset of the people in an intellectual community regularly try the boundaries of good conduct 2021-02-12T07:28:26Z jgart quit (Quit: Leaving) 2021-02-12T07:28:48Z mangol: because if people don't, those boundaries keep closing in by default. 2021-02-12T07:29:55Z mangol: see for example: mainstream culture in the west in the last couple decades 2021-02-12T07:31:04Z mangol: being kind is a virtue. being nice is not a virtue. 2021-02-12T07:33:43Z mangol: (in case it isn't obvious, good thinking and good conduct often don't mix. it's rude to point out someone's dearly held opinions are wrong) 2021-02-12T07:37:38Z gravicappa joined #scheme 2021-02-12T07:39:14Z Zipheir: I was referring to mdhughes's Glengarry Glen Ross-esque spiel. 2021-02-12T07:40:22Z mangol: we should all be very grateful to have people like mdhughes on our channel. we don't know how good we have it. 2021-02-12T07:40:23Z Zipheir: And I wouldn't encourage anyone in this or other channels to "try the boundaries of good conduct". 2021-02-12T07:41:14Z mangol: if we excise "rude" people, we'll get something far, far worse. a culture where dissent of all kinds is gradually made impossible 2021-02-12T07:41:35Z jobol joined #scheme 2021-02-12T07:42:16Z DGASAU` quit (Quit: ERC (IRC client for Emacs 25.3.1)) 2021-02-12T07:42:31Z mangol: why wouldn't you encourage it? 2021-02-12T07:42:45Z DGASAU joined #scheme 2021-02-12T07:46:11Z Zipheir: Explicitly testing the boundaries with aggressive interaction makes channels unpleasant, and it's unnecessary. I've had plenty of experience with communities which never warned anyone who behaved aggressively, etc. and which, as a result, eventually turned into nasty, abusive places. 2021-02-12T07:48:16Z Zipheir: Anyone who's been on the Internet for more than a short while probably knows similar anti-communities. 2021-02-12T07:51:11Z mangol: i don't know what to make of that. it's hard to debate without examples of specific communities. i think the distinguishing factor is whether it's always the same people giving offense, and the same people who have to take offense 2021-02-12T07:51:48Z mangol: a community where everyone is offended regularly may be healthiest in the long term 2021-02-12T07:52:23Z mangol: a community where some people are singled out is bad, but so is a community where being nice is more important than being right 2021-02-12T07:53:20Z mdhughes: That was a GGR spiel? Always Be Computing. 2021-02-12T07:53:41Z mangol: mdhughes tells me "wtf are you thinking?" and i tell him "wtf are you thinking?" every now and then. that's a good community. we both have to question our assumptions. 2021-02-12T07:53:51Z Zipheir: Moderation is a delicate thing. 2021-02-12T07:53:56Z mdhughes: First prize is a new compiler. Second prize is you get to implement another loop macro. Third prize is you go home and write theory. 2021-02-12T07:54:39Z mdhughes: Despite having seen both the play and the movie, that presentation's about all I can remember of it. 2021-02-12T07:55:12Z Zipheir: Hah, I've only seen the movie. 2021-02-12T07:55:21Z mdhughes: I dunno why people get all panicky when I don't like something they do. They don't like what I do half the time, neither! 2021-02-12T07:55:36Z mangol: mdhughes: i feel exactly the same way 2021-02-12T07:56:58Z mangol: i'm offended about a couple dozen times a day on average. that's a good thing. one can choose to take offense or not to take offense. 2021-02-12T07:57:16Z Zipheir: It's often a matter of the language and the focus of the criticism. 2021-02-12T07:58:17Z mdhughes: I'm pretty careful when I point at people. Ideas get a full blast of either sarcasm or technical deconstruction. You can't get too attached to ideas, they're gonna die quick. 2021-02-12T07:58:18Z Zipheir: "Be conservative in what you send, and liberal in what you receive" remains good guidance. 2021-02-12T07:59:20Z mangol: i don't agree at all with the praise of moderation as a virtue that's part of the current zeitgeist 2021-02-12T08:00:04Z Zipheir: Which meaning of moderation is that? 2021-02-12T08:00:44Z mangol: heh, i was wondering which meaning you used as well :D i'm using it in the sense of taking the middle way, or being measured and reserved 2021-02-12T08:01:24Z ArneBab quit (Ping timeout: 240 seconds) 2021-02-12T08:02:21Z ArneBab joined #scheme 2021-02-12T08:02:22Z ArneBab quit (Changing host) 2021-02-12T08:02:22Z ArneBab joined #scheme 2021-02-12T08:03:59Z hugh_marera joined #scheme 2021-02-12T08:04:14Z Zipheir: People have been advising (philosophical) moderation for a long time, although I'm not sure any of them agree on the details. 2021-02-12T08:05:01Z mangol: intelligent people disagree on pretty much every topic, and generally always done so 2021-02-12T08:05:21Z mangol: you pick out the ones that support your preconceived notions 2021-02-12T08:05:49Z mangol: there are even intelligent people who think reading is bad for you 2021-02-12T08:06:36Z Zipheir: Yes, but disagreements on controversial topics can be friendly and respectful. That's a very different thing than attacking people in a channel. 2021-02-12T08:08:31Z mangol: i think this channel is friendly 2021-02-12T08:09:26Z Zipheir: There's a familiar false equivalence: "We have to be allowed to offend people! That's why we insult everyone and attack them for their ignorance." 2021-02-12T08:10:10Z mangol: in an intellectual community, if everyone is insulted, that's better than if no-one's insulted. 2021-02-12T08:10:43Z Zipheir: Which is quite a different attitude from seasoned netizens who can hold respectful debates, even on highly controversial topics. 2021-02-12T08:11:01Z mangol: are our debates disrespectful? 2021-02-12T08:11:17Z Zipheir: It's obviously not an exclusive-or situation. 2021-02-12T08:11:36Z Zipheir: No, clearly not, I think. 2021-02-12T08:12:21Z mdhughes: Who's been insulted? 2021-02-12T08:12:44Z mangol: yet i felt agitated enough to start this conversation, and you felt agitated enough to continue it. that means we're trying the boundaries of good conduct. 2021-02-12T08:12:47Z Zipheir: No-one in #scheme, as far as I know. 2021-02-12T08:13:10Z mdhughes: All right, then. 2021-02-12T08:13:30Z mangol: it's a vital conversation to have every now and then too 2021-02-12T08:13:39Z Zipheir: I'm not feeling agitated. It's an interesting topic. 2021-02-12T08:13:45Z Zipheir: I agree. 2021-02-12T08:14:08Z Major_Biscuit joined #scheme 2021-02-12T08:14:43Z mangol: i felt offended; that's a neutral feeling. i still feel agitated; that's a good feeling. i feel insulted daily by the zeitgeist in the west. that's a bad but very necessary feeling. 2021-02-12T08:15:23Z Zipheir: I will say that, personally, I am extremely opposed to stopping people from discussing topics on the grounds that those topics might be offensive to some. Any topic might be! 2021-02-12T08:15:52Z Zipheir: But it's a false equivalence used by trolls to claim that name-calling and aggression are somehow Socratic activities. 2021-02-12T08:16:08Z Zipheir: I'm sorry to hear that you feel agitated. 2021-02-12T08:17:04Z mangol: sorry to hear that i feel good? :D being agitated feels good. 2021-02-12T08:17:38Z Zipheir: Well... good, then. :) 2021-02-12T08:17:44Z mangol: it is :) 2021-02-12T08:17:51Z Zipheir: In any case, it's quite late here, and I need sleep. 2021-02-12T08:17:55Z mangol: sure 2021-02-12T08:17:58Z Zipheir: Good