2020-04-01T00:27:08Z xelxebar joined #scheme 2020-04-01T00:30:32Z SGASAU` quit (Remote host closed the connection) 2020-04-01T00:30:54Z SGASAU` joined #scheme 2020-04-01T00:32:56Z SGASAU` quit (Remote host closed the connection) 2020-04-01T00:33:19Z SGASAU` joined #scheme 2020-04-01T00:37:29Z pilne_ joined #scheme 2020-04-01T00:39:27Z pilne quit (Ping timeout: 260 seconds) 2020-04-01T00:41:17Z ngz quit (Ping timeout: 246 seconds) 2020-04-01T01:00:36Z lockywolf joined #scheme 2020-04-01T01:11:26Z aeth: Idk, I think inheritance is fine, even multiple-inheritance. It just needs to be kept to one layer, and used rarely. 2020-04-01T01:11:54Z aeth: Some things naturally are hierarchical, too, like conditions (imo). 2020-04-01T01:12:17Z aeth: e.g. arithmetic-error is a natural parent of a bunch of different things, like divide-by-zero 2020-04-01T01:12:51Z aeth: Ironically, it's when you start trying to model the real world that OOP like this breaks down because hierarchies of how to classify things are incredibly arbitrary (see: biology) 2020-04-01T01:17:11Z aeth: I'm probably going to have a 3 layer condition hierarchy, although I haven't designed that yet (and I might want to wait on the SRFI). That is, there's one that's the base of everything, and then there's one or two levels of inheritance. Maybe 4 if I want to copy Common Lisp and have 'error as a condition. 2020-04-01T01:19:46Z Riastradh: is mayonnaise a sandwich 2020-04-01T01:20:19Z aeth: Riastradh: if you have code that handles all sandwiches and you need to handle that too, then, yes, maybe :-p 2020-04-01T01:21:12Z aeth: literally all intro OOP examples are trash because they start talking about stuff like "cat is a mammal is an animal"... as if you're going to use mammalian dispatch (implement a mammal.milk() or something? you probably only want that on cows, goats, etc.) 2020-04-01T01:22:02Z pjb: aeth: you want mammal.milk() in a lot of methods about mammal.child(i) 2020-04-01T01:22:33Z pjb: aeth: OOP is consistent, you cannot argue against it. 2020-04-01T01:25:06Z aeth: pjb: if I'm making some program to represent animals, I probably only need Animal or even Entity. 2020-04-01T01:25:38Z mdhughes: Monotremes just throw an exception when you try to milk them. 2020-04-01T01:26:02Z Riastradh: probably throw more than an exception, probably throw claws (or at least flippers) and teeth 2020-04-01T01:28:06Z zaifir: It's funny that so many basic programming books demonstrate OOP via animal examples, even though, as aeth says, that model breaks down pretty fast. 2020-04-01T01:28:39Z aeth: data structures and exceptions/conditions seem to lend themselves to an OOP hierarchy very well. Maybe just them. 2020-04-01T01:28:48Z aeth: e.g. sequence as a parent of (linked) list and vector 2020-04-01T01:29:48Z Riastradh: Why is the concept of `parent' useful to relate those? 2020-04-01T01:30:07Z mdhughes: I learned OOP from an Object Pascal book, which built up a GUI library from graphics primitives. Which is usually where you run into real-world OOP, because GUIs have hierarchies of view and type. 2020-04-01T01:30:44Z aeth: Riastradh: Because you can write a generic API that works on all sequences, even though the concrete implementation for linked-list (lots of CDRing) and vector (index-based algorithms) are probably going to be different. 2020-04-01T01:31:08Z aeth: Riastradh: e.g. CL:MAP in CL, or the proposed map+ (is that the proposed name?) for r7rs-large 2020-04-01T01:31:28Z Riastradh: aeth: But why is `parent' the right concept? 2020-04-01T01:32:11Z Riastradh: In Haskell you would say that lists and arrays (two concrete types) are instances of the mappable type class (called `Functor' for hysterical raisins). 2020-04-01T01:33:23Z aeth: Riastradh: "parent" is just one way to describe the relationship, of course. 2020-04-01T01:33:43Z aeth: I'm just saying that as far as inheritance goes, it's useful there (not the only way to implement it) as opposed to e.g. Cat/Dog/etc. 2020-04-01T01:33:53Z Riastradh: Type classes _also_ have a notion of inheritance (perhaps more accurately called `entailment') which is separate. 2020-04-01T01:34:19Z Riastradh: That is, there is a relation IS AN INSTANCE OF , and another relation ENTAILS (or `inherits from'). 2020-04-01T01:34:53Z Riastradh: (or perhaps `implies' is a better term) 2020-04-01T01:35:25Z Riastradh: So, e.g., in , Ring implies Additive, meaning any type that represents a Ring is also a type that you can add elements of. 2020-04-01T01:35:36Z aeth: heh, entailment. If it doesn't use โŠข I am very disappointed in the language. 2020-04-01T01:36:18Z aeth: Or the weak, ASCII equivalent |- 2020-04-01T01:36:27Z Riastradh: Nope, it's: => 2020-04-01T01:36:38Z Riastradh: (which is a little silly because it's the _reverse_ of the standard implication symbol) 2020-04-01T01:36:40Z aeth: bah 2020-04-01T01:36:51Z aeth: what's with this arrow cargo culting 2020-04-01T01:37:06Z aeth: |- or |= depending on the specifics is just as ASCII as => 2020-04-01T01:37:11Z Riastradh: class (AdditiveMonoid g) => AdditiveGroup g where 2020-04-01T01:37:29Z aeth: I guess it would be more |= than |- 2020-04-01T01:37:51Z terpri_ quit (Remote host closed the connection) 2020-04-01T01:37:57Z aeth: Riastradh: Fortunately, we can still fix this in r7rs-large, unless they've already SRFIed and balloted it 2020-04-01T01:38:07Z Riastradh: Anyway... 2020-04-01T01:38:16Z terpri_ joined #scheme 2020-04-01T01:39:04Z Riastradh: My point is there are two different relations here: IS AN INSTANCE OF , and IMPLIES (or INHERITS FROM) . Neither one carries the notion of `inheritance' of run-time data representation the way, e.g., class inheritance in Python or C++ does. 2020-04-01T01:42:10Z aeth: Core Scheme is a bit different than OOP here, anyway. Predicate-based in the core API. Essentially, anything that satisfies vector? and list? would also return #t for sequence? in this hypothetical of a generic map, at least if exactly like CL:MAP. 2020-04-01T01:42:57Z aeth: Except in Scheme, strings and bytevectors, etc., aren't vectors. In CL, vectors are just 1D arrays of which simple-vectors (T vectors, like Scheme vectors), strings, octet arrays, bitvectors, etc., are included 2020-04-01T01:43:37Z aeth: So it might be necessary to add another layer above vector? to describe index-based sequences (or at least for bytevectors, vectors, and potentially other typed vectors like flonum-vectors) 2020-04-01T01:48:58Z seepel joined #scheme 2020-04-01T01:52:21Z lockywolf_ joined #scheme 2020-04-01T01:54:14Z lritter quit (Ping timeout: 256 seconds) 2020-04-01T01:55:00Z lritter joined #scheme 2020-04-01T01:55:18Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-01T01:58:30Z v_m_v joined #scheme 2020-04-01T02:03:27Z v_m_v quit (Ping timeout: 260 seconds) 2020-04-01T02:03:45Z seepel quit (Ping timeout: 250 seconds) 2020-04-01T02:07:55Z lockywolf__ joined #scheme 2020-04-01T02:08:26Z f8l quit (Ping timeout: 240 seconds) 2020-04-01T02:10:27Z lockywolf__ quit (Remote host closed the connection) 2020-04-01T02:10:27Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-01T02:10:56Z lockywolf__ joined #scheme 2020-04-01T02:12:25Z lockywolf__ quit (Max SendQ exceeded) 2020-04-01T02:12:41Z f8l joined #scheme 2020-04-01T02:12:57Z lockywolf__ joined #scheme 2020-04-01T02:16:25Z lockywolf_ joined #scheme 2020-04-01T02:18:17Z TCZ quit (Quit: Leaving) 2020-04-01T02:18:54Z lockywolf__ quit (Ping timeout: 240 seconds) 2020-04-01T02:20:32Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-01T02:34:22Z pjb quit (Read error: Connection reset by peer) 2020-04-01T02:35:46Z pjb joined #scheme 2020-04-01T02:39:02Z torbo joined #scheme 2020-04-01T02:44:26Z klovett quit 2020-04-01T02:48:24Z aeth: For the 5 people interested in Airship Scheme... I just redid the milestone system on Gitlab to split it from having 0.1 and 0.2 to having 0.0.1, 0.0.2, 0.0.3, and 0.1. That is, I added a 0 in front. 0.0.1 is basic features, 0.0.2 is advanced features, 0.0.3 is "feature complete" but still not usable, and 0.1 is a hopefully-usable r7rs-small. https://gitlab.com/mbabich/airship-scheme/-/milestones 2020-04-01T02:48:52Z aeth: e.g. Emacs integration is set for 0.1, and nobody uses a Lisp without Emacs integration... 2020-04-01T02:50:20Z lritter quit (Ping timeout: 256 seconds) 2020-04-01T02:55:49Z klovett joined #scheme 2020-04-01T03:03:10Z kori joined #scheme 2020-04-01T03:03:10Z kori quit (Changing host) 2020-04-01T03:03:10Z kori joined #scheme 2020-04-01T03:04:40Z aeth: 7 more feature issues to file, and then I think it's just implementing them... 2020-04-01T03:09:00Z erkin: Can you tell me more about Airship Scheme? 2020-04-01T03:10:50Z erkin: Oh there's a GitLab link. 2020-04-01T03:11:11Z erkin: Ooh, embedded in CL. 2020-04-01T03:11:21Z aeth: erkin: It is Scheme written in Common Lisp. Why? From the CL perspective: It's Scheme-as-a-library, which is very convenient. From the Scheme perspective: It is designed with SBCL in mind, which means it should be one of the fastest implementations, maybe 1st 2nd or 3rd. 2020-04-01T03:11:29Z erkin: Neat! 2020-04-01T03:11:41Z aeth: And from both perspectives, it allows you to wrap libraries written for one for us in the other. 2020-04-01T03:11:43Z erkin: Reminds me of Cloture. Although I forgot how that solved the Lisp-2 problem. 2020-04-01T03:11:57Z erkin: Yeah, CL FFI would be neat. 2020-04-01T03:13:40Z aeth: s/for us/for use/ 2020-04-01T03:13:51Z aeth: erkin: More than that. C FFI as well. :-) 2020-04-01T03:13:59Z aeth: erkin: cffi is just a CL library, after all. 2020-04-01T03:14:05Z aeth: So you can just CL FFI C FII :-p 2020-04-01T03:16:54Z skapata quit (Remote host closed the connection) 2020-04-01T03:18:17Z elderK joined #scheme 2020-04-01T03:20:00Z aeth: erkin: I added it to the readme... https://gitlab.com/mbabich/airship-scheme/-/tree/master#why-use-this-project 2020-04-01T03:24:46Z erkin: Haha 2020-04-01T03:25:02Z aeth: erkin: As far as Clojure-in-CL, I think the problem with that is that most Clojure isn't portable. I mean, most Scheme isn't portable, either, but at least there are enough (okay, way more than enough) Schemes that there is some effort at portability, so there's probably 200-600 portable Scheme packages. 2020-04-01T03:25:52Z aeth: It also probably helps to be faster than the main implementation rather than slower, although of course I can't run benchmarks yet. 2020-04-01T03:26:17Z aeth: Given portability, I think the fastest implementation usually wins. 2020-04-01T03:33:44Z turtleman quit (Ping timeout: 256 seconds) 2020-04-01T03:35:16Z aeth: (I don't know about Clojure's portability issues first hand, but I have heard about complaints about portability between JVM Clojure and JS Clojure) 2020-04-01T03:41:49Z erkin: Yeah, unfortunately Clojure relies too much on the backend. 2020-04-01T03:42:25Z erkin: You often find yourself cluttering your code with Java FFI for any non-trivial program. 2020-04-01T03:50:58Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-01T03:52:01Z lockywolf joined #scheme 2020-04-01T03:55:56Z pilne_ quit (Quit: Now if you will excuse me, I have a giant ball of oil to throw out my window) 2020-04-01T04:05:27Z v_m_v joined #scheme 2020-04-01T04:09:29Z SGASAU`` joined #scheme 2020-04-01T04:10:14Z v_m_v quit (Ping timeout: 256 seconds) 2020-04-01T04:13:28Z SGASAU` quit (Ping timeout: 256 seconds) 2020-04-01T04:13:50Z retropikzel joined #scheme 2020-04-01T04:18:55Z lockywolf_ joined #scheme 2020-04-01T04:20:50Z SGASAU``` joined #scheme 2020-04-01T04:21:04Z lockywolf__ joined #scheme 2020-04-01T04:21:06Z elderK quit (Quit: WeeChat 1.9) 2020-04-01T04:21:34Z SGASAU`` quit (Ping timeout: 240 seconds) 2020-04-01T04:21:47Z lockywolf quit (Ping timeout: 258 seconds) 2020-04-01T04:21:57Z lockywolf__ quit (Remote host closed the connection) 2020-04-01T04:22:26Z lockywolf__ joined #scheme 2020-04-01T04:24:01Z tryte quit (Remote host closed the connection) 2020-04-01T04:24:10Z lockywolf_ quit (Ping timeout: 265 seconds) 2020-04-01T04:24:16Z tryte joined #scheme 2020-04-01T04:27:04Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-01T04:30:52Z daviid` joined #scheme 2020-04-01T04:32:45Z daviid quit (Ping timeout: 256 seconds) 2020-04-01T04:38:56Z torbo quit (Remote host closed the connection) 2020-04-01T04:40:15Z SGASAU``` quit (Ping timeout: 260 seconds) 2020-04-01T04:52:25Z drakonis quit (Quit: WeeChat 2.7.1) 2020-04-01T04:55:58Z stepnem_ joined #scheme 2020-04-01T04:56:37Z stepnem quit (Ping timeout: 264 seconds) 2020-04-01T05:18:20Z jao quit (Remote host closed the connection) 2020-04-01T05:20:19Z jao joined #scheme 2020-04-01T05:38:25Z gravicappa joined #scheme 2020-04-01T05:45:40Z daviid` quit (Quit: ERC (IRC client for Emacs 26.1)) 2020-04-01T05:48:33Z daviid joined #scheme 2020-04-01T05:53:41Z ArthurStrong quit (Quit: leaving) 2020-04-01T06:01:24Z nly quit (Ping timeout: 256 seconds) 2020-04-01T06:28:20Z jao quit (Remote host closed the connection) 2020-04-01T06:32:56Z wasamasa: aeth: let me know once you've run it along the rest on https://github.com/ecraven/r7rs-benchmarks 2020-04-01T06:44:17Z retropikzel quit (Remote host closed the connection) 2020-04-01T06:44:54Z retropikzel joined #scheme 2020-04-01T06:49:37Z f8l quit (Remote host closed the connection) 2020-04-01T06:50:54Z f8l joined #scheme 2020-04-01T06:52:33Z malaclyps quit (Ping timeout: 265 seconds) 2020-04-01T06:53:12Z v_m_v joined #scheme 2020-04-01T06:55:56Z gabot quit (Ping timeout: 265 seconds) 2020-04-01T06:57:44Z malaclyps joined #scheme 2020-04-01T06:57:52Z v_m_v quit (Ping timeout: 265 seconds) 2020-04-01T07:00:31Z gabot joined #scheme 2020-04-01T07:05:14Z xelxebar quit (Remote host closed the connection) 2020-04-01T07:05:45Z xelxebar joined #scheme 2020-04-01T07:34:07Z SUP3RN3T5_ joined #scheme 2020-04-01T07:34:07Z SUP3RN3T5_: THIS CHANNEL HAS SMALL DICK NRG N HAS BEEN INFECTED WITH COVID-19 | ALL CHATTERS MUST QUARANTINE ON ๐–จ๐–ฑ๐–ข.๐–ฒ๐–ด๐–ฏ๐–ค๐–ฑ๐–ญ๐–ค๐–ณ๐–ฒ.๐–ฎ๐–ฑ๐–ฆ #๐–ฒ๐–ด๐–ฏ๐–ค๐–ฑ๐–ก๐–ฎ๐–ถ๐–ซ 2020-04-01T07:34:07Z SUP3RN3T5_: โ–ˆ.โ–ˆโ–€โ–ˆ.โ–ˆโ–€โ–€...โ–ˆโ–€.โ–ˆ.โ–ˆ.โ–ˆโ–€โ–ˆ.โ–ˆโ–€โ–€.โ–ˆโ–€โ–ˆ.โ–ˆโ–„.โ–ˆ.โ–ˆโ–€โ–€.โ–€โ–ˆโ–€.โ–ˆโ–€...โ–ˆโ–€โ–ˆ.โ–ˆโ–€โ–ˆ.โ–ˆโ–€โ–€ 2020-04-01T07:34:08Z SUP3RN3T5_: โ–ˆ.โ–ˆโ–€โ–„.โ–ˆ.....โ–€โ–ˆ.โ–ˆ.โ–ˆ.โ–ˆโ–€โ–€.โ–ˆโ–€โ–€.โ–ˆโ–€โ–„.โ–ˆโ–€โ–„โ–ˆ.โ–ˆโ–€โ–€..โ–ˆ..โ–€โ–ˆ...โ–ˆ.โ–ˆ.โ–ˆโ–€โ–„.โ–ˆ.โ–„โ–„ 2020-04-01T07:34:08Z SUP3RN3T5_: โ–ˆ.โ–ˆ.โ–ˆ.โ–ˆโ–„โ–„.โ–„.โ–„โ–ˆ.โ–ˆโ–„โ–ˆ.โ–ˆ...โ–ˆโ–„โ–„.โ–ˆ.โ–ˆ.โ–ˆ.โ–€โ–ˆ.โ–ˆโ–„โ–„..โ–ˆ..โ–„โ–ˆ.โ–„.โ–ˆโ–„โ–ˆ.โ–ˆ.โ–ˆ.โ–ˆโ–„โ–ˆ 2020-04-01T07:34:09Z SUP3RN3T5_: HAVE A SAFE ๐™ฐ๐™ฟ๐š๐™ธ๐™ป ๐™ต๐™ป๐™พ๐™พ๐™ณ๐š‚๐™ณ๐™ฐ๐šˆ FAGGOTS! 2020-04-01T07:34:09Z SUP3RN3T5_: UP3RN3T5_ xelxebar gabot malaclyps f8l retropikzel daviid gravicappa stepnem_ tryte kori klovett pjb terpri_ X-Scale sz0 belmarca kopiyka lavaflow mjsir911 aos whiteline titanbiscuit snits webshinra epony stux|work mario-goulart Zenton edgar-rft nckx foof madage ohama manualcrank notzmv dan64 dieggsy mbakke Gnuxie[m] hansbauer[m] siraben amnesic[m] keep-learning[m] Ericson2314 amirouche[m] xlei 2020-04-01T07:34:10Z SUP3RN3T5_: mats gf3_ r1b Kooda eagleflo `micro DGASAU` acarrico oxum jxy goes ecraven nevermind eMBee ullbeking Adso_of_Jelq erkin Oddity h11 omtrent DeeEff__ nerdypepper cibs dsp evhan lbtjp Blkt Urfin balkamos joast DerGuteMoritz cmatei ineiros ski zaifir kbtr_ aoh copec wigust- mgh r0kc4t_ shymega delucks terrorjack___ rann d_run bchar jcowan physpi jyc_ samth fowlduck stephe lloda heredoc uplime pounce 2020-04-01T07:34:11Z SUP3RN3T5_ left #scheme 2020-04-01T07:34:52Z erkin: Speaking of Scheme on CL; is Pseudoscheme still maintained? 2020-04-01T07:35:44Z retropikzel quit (Remote host closed the connection) 2020-04-01T07:35:58Z retropikzel joined #scheme 2020-04-01T07:44:31Z CyDefect joined #scheme 2020-04-01T07:46:16Z seepel joined #scheme 2020-04-01T07:50:33Z aeth: wasamasa: I intend to (1) run those benchmarks as soon as I reach 0.0.3 or even just as soon as I can run them and (2) like any good implementor, I'll optimize the hell out of the microbenchmarks 2020-04-01T07:51:05Z erkin: It seems someone recently took it up: https://github.com/jar398/pseudoscheme 2020-04-01T07:51:41Z aeth: erkin: it's an r4rs designed to be, well, pseudo 2020-04-01T07:52:04Z aeth: early on in my design I rejected bilingual and easy-route stuff in favor of full conformance 2020-04-01T07:52:18Z aeth: in theory Pseudoscheme II has its place 2020-04-01T07:53:22Z erkin: Oh no, don't get me wrong, I do think there needs to be a real Scheme on CL. 2020-04-01T07:53:41Z erkin: Airship Scheme just reminded of Pseudoscheme. 2020-04-01T07:58:06Z retropikzel quit (Read error: Connection reset by peer) 2020-04-01T08:06:33Z TwoFinger joined #scheme 2020-04-01T08:10:08Z Deknos joined #scheme 2020-04-01T08:11:54Z terpri_ quit (Remote host closed the connection) 2020-04-01T08:12:15Z terpri_ joined #scheme 2020-04-01T08:12:47Z TwoFinger quit (Ping timeout: 265 seconds) 2020-04-01T08:13:27Z v_m_v joined #scheme 2020-04-01T08:22:42Z hidetora joined #scheme 2020-04-01T08:31:42Z nullus quit (Quit: leaving) 2020-04-01T08:37:16Z angelds joined #scheme 2020-04-01T08:37:21Z seepel quit (Remote host closed the connection) 2020-04-01T08:37:46Z seepel joined #scheme 2020-04-01T08:39:46Z ggole joined #scheme 2020-04-01T08:50:39Z angelds quit (Ping timeout: 250 seconds) 2020-04-01T09:12:23Z klovett quit (Remote host closed the connection) 2020-04-01T09:12:59Z klovett joined #scheme 2020-04-01T09:29:46Z jobol joined #scheme 2020-04-01T09:49:03Z tryte quit (Ping timeout: 240 seconds) 2020-04-01T09:49:26Z erkin quit (Quit: Ouch! Got SIGIRL, dying...) 2020-04-01T09:49:49Z erkin joined #scheme 2020-04-01T09:50:03Z cartwright quit (Ping timeout: 240 seconds) 2020-04-01T09:50:19Z tryte joined #scheme 2020-04-01T09:50:34Z ohama quit (Ping timeout: 256 seconds) 2020-04-01T09:50:34Z tdammers quit (Ping timeout: 256 seconds) 2020-04-01T09:50:53Z tohoyn joined #scheme 2020-04-01T09:51:08Z aoh quit (Ping timeout: 256 seconds) 2020-04-01T09:51:15Z aoh joined #scheme 2020-04-01T09:51:41Z adiaphora joined #scheme 2020-04-01T09:51:44Z ohama joined #scheme 2020-04-01T09:51:46Z tdammers joined #scheme 2020-04-01T09:52:09Z civodul joined #scheme 2020-04-01T09:52:18Z cartwright joined #scheme 2020-04-01T09:52:33Z adiaphora quit (Remote host closed the connection) 2020-04-01T09:52:43Z aeth: erkin: It probably wouldn't be too hard to do a "Pseudoscheme" flag since it's just removing features. Like, e.g. instead of having a separate #f, #f would read into NIL. 2020-04-01T09:53:31Z aeth: oh, wait, Peusodscheme did distinguish that. :-p 2020-04-01T09:54:25Z aeth: looks like it just had flaws in tail recursion and continuations 2020-04-01T09:54:35Z aeth: r4rs, though, so the languages were semantically closer 2020-04-01T09:56:16Z aeth: and syntactically 2020-04-01T09:59:58Z tohoyn quit (Quit: Lรคhdรถssรค) 2020-04-01T10:08:45Z Deknos left #scheme 2020-04-01T10:10:03Z Naptra joined #scheme 2020-04-01T10:12:21Z TCZ joined #scheme 2020-04-01T10:23:23Z seepel quit (Ping timeout: 250 seconds) 2020-04-01T10:24:20Z v_m_v quit (Remote host closed the connection) 2020-04-01T10:25:41Z v_m_v joined #scheme 2020-04-01T10:27:01Z xkapastel joined #scheme 2020-04-01T10:34:31Z tryte_ joined #scheme 2020-04-01T10:35:03Z tryte quit (Ping timeout: 240 seconds) 2020-04-01T10:54:03Z lockywolf joined #scheme 2020-04-01T11:07:15Z TCZ quit (Quit: Leaving) 2020-04-01T11:18:48Z epony quit (Quit: reconfig) 2020-04-01T11:19:19Z epony joined #scheme 2020-04-01T11:27:16Z lockywolf_ joined #scheme 2020-04-01T11:30:18Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-01T11:32:59Z v_m_v quit (Remote host closed the connection) 2020-04-01T11:59:56Z terpri_ quit (Remote host closed the connection) 2020-04-01T12:00:17Z terpri_ joined #scheme 2020-04-01T12:04:32Z xelxebar quit (Remote host closed the connection) 2020-04-01T12:12:01Z xelxebar joined #scheme 2020-04-01T12:26:36Z skapata joined #scheme 2020-04-01T12:40:19Z TCZ joined #scheme 2020-04-01T12:49:54Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-01T12:57:09Z xelxebar quit (Remote host closed the connection) 2020-04-01T13:01:29Z xelxebar joined #scheme 2020-04-01T13:02:19Z tohoyn joined #scheme 2020-04-01T13:05:25Z lockywolf joined #scheme 2020-04-01T13:18:27Z v_m_v joined #scheme 2020-04-01T13:22:48Z v_m_v quit (Remote host closed the connection) 2020-04-01T13:23:31Z srandon111 joined #scheme 2020-04-01T13:23:44Z srandon111: guys how can i in racket load an image to a constant without drracket? 2020-04-01T13:23:52Z srandon111: i mean with drracket i just drag and drop the image 2020-04-01T13:23:58Z srandon111: but i am using vim 2020-04-01T13:25:44Z wasamasa: you can't 2020-04-01T13:26:09Z wasamasa: some emacs package should support this feature though 2020-04-01T13:26:27Z lritter joined #scheme 2020-04-01T13:26:55Z srandon111: wasamasa, wait probably i didn't explain myself enough good 2020-04-01T13:27:01Z srandon111: i dont want to drag and drop an image 2020-04-01T13:27:12Z srandon111: but i just want to be able to load an image with text in an analogous way 2020-04-01T13:27:26Z wasamasa: same answer 2020-04-01T13:27:26Z srandon111: something like (def my-image (load "./path/to/image.png")) 2020-04-01T13:27:43Z srandon111: wasamasa, ???? so you mean i have a programming language where i cannot load an image? 2020-04-01T13:27:48Z wasamasa: it's a feature of their beefed up repl integration 2020-04-01T13:28:20Z wasamasa: now the scheme way would be to do a thorough investigation of how exactly it works and what it's doing behind the scenes 2020-04-01T13:28:31Z klovett quit (Remote host closed the connection) 2020-04-01T13:28:37Z gwatt: presumably you can load an image from disk and assign that image to a constant 2020-04-01T13:28:49Z klovett joined #scheme 2020-04-01T13:29:12Z jcowan: And if you ran PseudoII on sbcl or ccl (and what's the point of running it on anything else?) you'd get your tail recursion. 2020-04-01T13:29:40Z jcowan: It's true that R4RS doesn't *require* distinguishing between #f and (), but it allows it, and its immediate successor the IEEE standard does require it. 2020-04-01T13:32:52Z jcowan: I don't think there's any ongoing development in PseudoScheme: there is only one commit at https://github.com/sharplispers/pseudoscheme 2020-04-01T13:39:08Z wasamasa: dulllispers 2020-04-01T13:40:18Z jcowan: Or flatlispers 2020-04-01T13:40:33Z jcowan: The big baby's motto: "Everyone is either a sharp or a flat." 2020-04-01T13:55:07Z tohoyn quit (Quit: Lรคhdรถssรค) 2020-04-01T14:02:40Z v_m_v joined #scheme 2020-04-01T14:07:43Z amerigo joined #scheme 2020-04-01T14:08:11Z v_m_v quit (Ping timeout: 260 seconds) 2020-04-01T14:14:43Z Tirifto joined #scheme 2020-04-01T14:17:47Z turtleman joined #scheme 2020-04-01T14:21:29Z lockywolf_ joined #scheme 2020-04-01T14:22:18Z lockywolf_ quit (Remote host closed the connection) 2020-04-01T14:22:50Z lockywolf_ joined #scheme 2020-04-01T14:24:13Z lockywolf_ quit (Max SendQ exceeded) 2020-04-01T14:24:23Z cartwright quit (Ping timeout: 240 seconds) 2020-04-01T14:24:28Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-01T14:24:48Z lockywolf_ joined #scheme 2020-04-01T14:26:01Z lockywolf_ quit (Max SendQ exceeded) 2020-04-01T14:26:37Z lockywolf_ joined #scheme 2020-04-01T14:27:16Z cartwright joined #scheme 2020-04-01T14:27:18Z lucasb joined #scheme 2020-04-01T14:27:45Z lockywolf_ quit (Max SendQ exceeded) 2020-04-01T14:28:31Z lockywolf_ joined #scheme 2020-04-01T14:28:46Z drakonis joined #scheme 2020-04-01T14:29:18Z lockywolf_ quit (Remote host closed the connection) 2020-04-01T14:29:52Z lockywolf_ joined #scheme 2020-04-01T14:31:29Z lockywolf_ quit (Max SendQ exceeded) 2020-04-01T14:32:09Z lockywolf_ joined #scheme 2020-04-01T14:33:23Z lockywolf_ quit (Max SendQ exceeded) 2020-04-01T14:34:10Z lockywolf_ joined #scheme 2020-04-01T14:34:44Z DKordic is now known as S-Jack 2020-04-01T14:39:00Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-01T14:44:19Z daviid quit (Ping timeout: 258 seconds) 2020-04-01T14:46:54Z lavaflow quit (Read error: Connection reset by peer) 2020-04-01T14:47:02Z lavaflow_ joined #scheme 2020-04-01T14:47:11Z lavaflow_ quit (Client Quit) 2020-04-01T14:51:54Z turtleman quit (Ping timeout: 240 seconds) 2020-04-01T14:52:10Z lavaflow joined #scheme 2020-04-01T15:06:12Z CyDefect quit (Ping timeout: 256 seconds) 2020-04-01T15:28:14Z TCZ quit (Quit: Leaving) 2020-04-01T15:50:09Z TCZ joined #scheme 2020-04-01T15:53:24Z SGASAU joined #scheme 2020-04-01T15:57:16Z nullus joined #scheme 2020-04-01T16:01:39Z v_m_v joined #scheme 2020-04-01T16:26:13Z TCZ quit (Quit: Leaving) 2020-04-01T16:26:32Z TCZ joined #scheme 2020-04-01T16:35:48Z amirouche[m] is now known as kriptick[m] 2020-04-01T16:38:02Z kriptick[m] is now known as fly[m] 2020-04-01T16:52:30Z ggole quit (Quit: Leaving) 2020-04-01T16:56:00Z TCZ quit (Quit: Leaving) 2020-04-01T16:58:01Z jobol quit (Quit: Leaving) 2020-04-01T16:58:15Z tohoyn joined #scheme 2020-04-01T17:02:23Z mr_machina joined #scheme 2020-04-01T17:15:31Z tohoyn quit (Quit: Lรคhdรถssรค) 2020-04-01T17:32:38Z smazga joined #scheme 2020-04-01T17:33:53Z mdhughes: racket has image libraries, but you need to use the GUI toolkit to show them. 2020-04-01T17:34:52Z mdhughes: read-bitmap is the function 2020-04-01T17:34:59Z v_m_v quit (Remote host closed the connection) 2020-04-01T17:45:33Z ecraven: SLIME supports images in-line in emacs, r7rs-swank supports it, I think 2020-04-01T17:56:29Z madage quit (Remote host closed the connection) 2020-04-01T17:56:52Z madage joined #scheme 2020-04-01T17:57:52Z v_m_v joined #scheme 2020-04-01T18:09:18Z ArthurStrong joined #scheme 2020-04-01T18:12:45Z kopiyka quit (Remote host closed the connection) 2020-04-01T18:13:19Z kopiyka joined #scheme 2020-04-01T18:14:11Z even4void joined #scheme 2020-04-01T18:14:55Z v_m_v quit (Remote host closed the connection) 2020-04-01T18:33:01Z ullbeking just entered and is reading the backlog. holy moly, i want some of what you folks are smoking. 2020-04-01T18:34:34Z even4void quit (Quit: Textual IRC Client: www.textualapp.com) 2020-04-01T18:35:02Z notzmv: well, it doesn't really sound like they're smoking the good stuff 2020-04-01T18:36:19Z izh_ joined #scheme 2020-04-01T18:37:14Z xlei quit (Ping timeout: 256 seconds) 2020-04-01T18:40:04Z ullbeking: notzmv: it sounds so weird 2020-04-01T18:40:14Z ullbeking: ecraven: i didn't think SLIME could do scheme.....? 2020-04-01T18:41:38Z ullbeking: aeth: everybody complains about scheme not being portable but idk if that's ever been a *real* problem. scheme fills its niche very well, imo. 2020-04-01T18:46:17Z xlei joined #scheme 2020-04-01T18:59:50Z zig joined #scheme 2020-04-01T19:08:50Z pilne joined #scheme 2020-04-01T19:14:33Z aeth: jcowan: sharplispers is kind of a graveyard for dead/abandoned/ancient/etc. CL projects afaik 2020-04-01T19:14:58Z aeth: Well, I guess, it's to prevent the project from being truly dead, i.e. giving a place for critical patches, etc. 2020-04-01T19:16:07Z aeth: ecraven: SLIME can support in-line images? interesting. 2020-04-01T19:17:55Z aeth: ullbeking: Schemers tend to prefer non-portability, writing for a given implementation. It might somewhat be changing with r6rs and r7rs. 2020-04-01T19:18:26Z aeth: ullbeking: Common Lispers will absolutely reject your program if you imply it's non-portable, see how pjb responded to me repeatedly mentioning SBCL instead of CL earlier (maybe 2 days ago?) 2020-04-01T19:18:34Z aeth: That's one of the key culture differences. 2020-04-01T19:19:19Z ullbeking: aeth: one of my collaborators used to -- and i think still does -- maintain stalin scheme. i have always been curious about what kinds of optimizations it does to make it notoriously and blazingly fast. is it still really fast comparably? 2020-04-01T19:19:40Z aeth: ullbeking: any benchmarks? 2020-04-01T19:21:09Z jcowan: Interprocedural optimization 2020-04-01T19:21:17Z jcowan: It's a whole-program compiler 2020-04-01T19:21:29Z aeth: I don't think it's on the r7rs benchmarks... 2020-04-01T19:21:36Z aeth: jcowan: ah 2020-04-01T19:21:38Z aeth: right 2020-04-01T19:21:45Z gwatt: It is, but it doesn't pass any of the tests at the moment 2020-04-01T19:22:12Z aeth: CL only lets you optimize at the per-file level. C/C++ are the same way. That's why "LTO" link-time optimization, or whatever it is, is a big buzzword in C/C++ compiler design now, but it's really hard to fit into the language. 2020-04-01T19:22:34Z pjb: aeth: not all, but a big proportion of them indeed will prefer to deal with conforming code. 2020-04-01T19:23:12Z jcowan: It's an R4RS; it would have to be front-ended and have the standard library (which is basically just prepended to your code) rewritten. 2020-04-01T19:23:58Z jcowan: Precisely because it works so hard, it is very slow to compile anything, and extraordinarily slow to compile itself. 2020-04-01T19:24:06Z aeth: pjb: sorry, conforming CL, and, yes, in theory you could do an implementation-specific whole-program pass for the final compilation step. SBCL should be able to do this, one day. 2020-04-01T19:24:09Z pjb: aeth: and for this category, it's not even a question of using their "prefered" implementation, I'd have the same restrictions if it was specific to ccl, or ecl, or clisp, etc. The point, for this category of CLers, is that we use multiple implementations, depending on the circumstances. 2020-04-01T19:24:10Z aeth: I think CMUCL did/does 2020-04-01T19:24:27Z jcowan should one fine day set up an EC2 box and see how long it takes to compile Stalin with Stalin 2020-04-01T19:24:43Z pjb: aeth: yes. The tools can do anything they want, on conforming code. 2020-04-01T19:25:18Z jcowan: There's a difference between conforming code (does not violate any constrains) and strictly conforming code (does not exercise any nonstandard features). 2020-04-01T19:26:05Z Riastradh: ...and useful code... 2020-04-01T19:26:29Z wasamasa: there's a fun illustration of the intersection between valid and useful code in haskell 2020-04-01T19:28:43Z luni joined #scheme 2020-04-01T19:29:25Z aeth: jcowan: I think some compilers have moved away from the Stalin-like approach because of the long compile times for not much of an extra gain. Of course, these are statically typed, so they know more about their types from the start, unlike Stalin Scheme. 2020-04-01T19:34:44Z elderK joined #scheme 2020-04-01T19:36:18Z tryte_ quit (Quit: _) 2020-04-01T19:36:21Z yosafbridge quit (Quit: Leaving) 2020-04-01T19:37:23Z madage quit (Ping timeout: 240 seconds) 2020-04-01T19:38:22Z tryte joined #scheme 2020-04-01T19:39:50Z yosafbridge joined #scheme 2020-04-01T19:40:30Z jcowan: Riastradh: Depends on how narrow your window is. If you are writing code today to use tomorrow (or today) the code can be as system-specific as you want. But the story of the last 70 years is that code lasts a lot longer than anyone expects. 2020-04-01T19:41:29Z Riastradh: (this was more a comment on the language standards than on the code) 2020-04-01T19:46:39Z ecraven: ullbeking: github.com/ecraven/r7rs-swank.. partially works for some Schemes, it needs a bit of scheme-specific code, most of it is kind of r7rs 2020-04-01T19:47:02Z ecraven: aeth: yes, it's in contrib, works well enough, I'm using it for reverse engineering old games, very nice to work with images directly in the repl 2020-04-01T19:47:49Z aeth: ecraven: now we just need a way to embed entire SDL applications directly in the REPL so we can use it for engineering new games. :-) 2020-04-01T19:48:24Z aeth: jcowan: which is why every language is a 100-year language! Whether you wanted it to be or not! 2020-04-01T19:50:14Z ecraven: aeth: well, I haven't found a good way to play animated gifs or some other sort of animations in emacs, so it isn't ideal yet 2020-04-01T19:50:22Z ecraven: also, no proper way to really make the image interactive 2020-04-01T19:50:26Z ecraven: an actual lisp listener would be much nicer 2020-04-01T19:50:30Z ecraven: but that's a project for Soonโ„ข 2020-04-01T19:50:57Z ecraven: I'd love to have *real* presentations, not the poor copy SLIME has :-/ (even though that is much better than nothing) 2020-04-01T19:51:07Z ecraven: but, as always, real life is interfering 2020-04-01T19:54:23Z madage joined #scheme 2020-04-01T19:56:36Z hidetora quit (Quit: leaving) 2020-04-01T19:58:02Z TCZ joined #scheme 2020-04-01T20:03:11Z fly[m]: hello 2020-04-01T20:03:50Z stepnem_ quit (Read error: Connection reset by peer) 2020-04-01T20:07:49Z stepnem joined #scheme 2020-04-01T20:09:08Z jcowan: Life is what happens when you're making other plans. 2020-04-01T20:09:32Z ecraven: well, in the end, life is about more than Scheme programming, so that's fine too ;) 2020-04-01T20:10:06Z ecraven: also, I hope to have some good years left, in which I might get a bit of work done :D 2020-04-01T20:10:30Z aeth: jcowan: is there a SRFI for syntax-case? (well, syntax-case, not syntax-case? heh... the Scheme predicate naming convention interferes here). The only direct match is a withdrawn R6RS syntax-case 2020-04-01T20:11:02Z aeth: (That's SRFI 93) 2020-04-01T20:11:12Z aeth: It looks like it might be in SRFI 72, though? 2020-04-01T20:11:33Z jcowan: R6RS itself serves as the SRFI for R7RS-large purposes. 2020-04-01T20:11:49Z jcowan: But yes, SRFI 72 is a dialect of syntax-case and is used by Larceny. 2020-04-01T20:12:09Z jcowan: and Chibi too, I think 2020-04-01T20:12:19Z jcowan: you can build syntax-case on top of ER if you modify your ER somewhat 2020-04-01T20:12:40Z aeth: ER? 2020-04-01T20:13:05Z luni quit (Remote host closed the connection) 2020-04-01T20:13:12Z jcowan: explicit renaming 2020-04-01T20:13:26Z jcowan: It's why we are going to vote on syntax-case and explicit renaming separately 2020-04-01T20:13:45Z jcowan: syntactic closures and implicit renaming I am ruling off the ballot as they have very little implementation support 2020-04-01T20:14:32Z aeth: jcowan: is explicit renaming sort of like alexandria:with-gensyms in cl:defmacro? 2020-04-01T20:14:40Z aeth: except automated to some degree? 2020-04-01T20:14:53Z Riastradh: aeth: Read `Implementing Lexically Scoped Macros' by Jonathan Rees. 2020-04-01T20:14:58Z Riastradh: (Lisp Pointers, 1992ish) 2020-04-01T20:15:08Z jcowan: Not sure. You get passed the form to expand, a renamer, and a version of identifier=? 2020-04-01T20:15:19Z pilne quit (Ping timeout: 250 seconds) 2020-04-01T20:15:19Z aeth: Riastradh: another not-srfi :-( 2020-04-01T20:15:36Z pilne joined #scheme 2020-04-01T20:15:46Z jcowan: So typical ER macros involve binding every standard name you need to use via the renamer 2020-04-01T20:15:54Z jcowan: which is why IR was invented, less verbose. 2020-04-01T20:16:01Z ecraven: pdf download here: https://dl.acm.org/doi/abs/10.1145/173770.173774 2020-04-01T20:16:02Z jcowan: IR has a reverse-renamer 2020-04-01T20:16:14Z ecraven: isn't that roughly the same as sc? 2020-04-01T20:17:13Z gwatt: jcowan: probably not worth anything but you can also build ER/IR on top of syntax case 2020-04-01T20:18:50Z jcowan: no, sc is quite different and not AFAIK interoperable with syntax-case 2020-04-01T20:19:00Z Riastradh: (kind of silly; the point of ER is that it is very simple to understand and implement) 2020-04-01T20:19:48Z jcowan: SC is supported only by MIT, Picrin, and Chibi, and it implies support for ER 2020-04-01T20:19:55Z jcowan: whereas ER and IR need to be implemented in parallel 2020-04-01T20:20:28Z jcowan: IR is supported on Picrin and Chicken only 2020-04-01T20:23:43Z aeth: oh, right, explicit. 2020-04-01T20:24:10Z aeth: something built on gensyms is actually a bit less explicit 2020-04-01T20:25:02Z aeth: in CL: (alexandria:with-gensyms (a b c) `(,a ,b ,c)) => (#:A545 #:B546 #:C547) 2020-04-01T20:25:14Z aeth: where the number is from some hidden counter 2020-04-01T20:25:57Z aeth: no need to say ([a 545] [b 546] [c 547]) but you (1) need to quote/unquote manually and (2) need to list your gensyms up front. 2020-04-01T20:26:08Z jcowan: Riastradh: ER does involve an annoying amount of boilerplate, though 2020-04-01T20:27:06Z ecraven: jcowan: write a macro to remove that! :D 2020-04-01T20:27:21Z jcowan snorts 2020-04-01T20:27:30Z jcowan: That's the point of IR, but it is new and has not spread much. 2020-04-01T20:27:52Z ecraven: doesn't it also have some non-ideal worst-case time complexity? 2020-04-01T20:28:17Z jcowan: Yes, the obvious implementation is O(n^2), but that's not to say that no better implementation is possible 2020-04-01T20:28:32Z jcowan: The boilerplate arises with macros that are mostly hygienic 2020-04-01T20:28:43Z jcowan: IMO syntax-parameter is the Best Thing 2020-04-01T20:28:50Z jcowan: it bends rather than breaks hygiene 2020-04-01T20:29:29Z Riastradh: I recall concluding with chandler about a decade ago that syntax-parameter is wrong. 2020-04-01T20:30:15Z ecraven: they are nice, but don't they also introduce new problems? say a syntax-parameter `exit' is used by two different macros.. 2020-04-01T20:32:29Z ecraven: Riastradh: would you mind elaborating on *why8 2020-04-01T20:32:33Z ecraven: *why* they are wrong? 2020-04-01T20:32:40Z Riastradh: Something like... 2020-04-01T20:32:57Z Riastradh: Suppose you have a macro (if-it x y z) that does the obvious thing meant by (let ((it x)) (if it y z)). 2020-04-01T20:33:23Z Riastradh: Now you want to use it as such: (define-syntax or (syntax-rules () ((or x y) (if-it x it y)))) 2020-04-01T20:34:03Z Riastradh: This should be a correct definition of `or' (at least, for the two-operand case), in the sense that it has the usual semantics of `or' and doesn't interfere with the user's lexical bindings, so (let ((it 42)) (or #f it)) yields 42 and not #f. 2020-04-01T20:36:12Z Riastradh: Obviously we could define if-it to do (let ((tmp x)) (if tmp (let ((it tmp)) y) z)), but that's not the premise here; the point is that the name `it' should be introduced by `if-it' only in the context of the `or' template, and not leak out of `or' into the user's environment. 2020-04-01T20:37:58Z ecraven: so the syntax parameter can be used *everywhere* inside the binding scope, not just by the surrounding macro context? 2020-04-01T20:38:12Z ecraven: because the syntax parameter is global, and thus accessible? 2020-04-01T20:38:33Z Riastradh: Hmm. 2020-04-01T20:38:37Z izh_ quit (Quit: Leaving) 2020-04-01T20:38:53Z Riastradh: I think the example may have been a little more elaborate to break with syntax parameters. 2020-04-01T20:39:19Z ecraven: it's not a very urgent question, I was just curious 2020-04-01T20:39:42Z ecraven: I like syntax parameters, because they let me do things I couldn't do otherwise, but somehow they don't "feel" totally right 2020-04-01T20:40:05Z ecraven: I lack the prowess to explain my misgivings 2020-04-01T20:40:43Z ecraven: I'm off for tonight, thank you very much for explaining! 2020-04-01T20:44:47Z lritter quit (Ping timeout: 250 seconds) 2020-04-01T20:49:26Z daviid joined #scheme 2020-04-01T20:49:26Z lritter joined #scheme 2020-04-01T20:52:54Z gwatt: Riastradh: for your definition of `if-it' and `or' are you saying that syntax-parameters do not provide that guarantee that your expression returns 42? 2020-04-01T20:55:40Z aeth: For when you want to return 42?: (define (42? obj) (and (number? obj) (= 42 obj))) 2020-04-01T20:58:12Z aeth: Of course, the real work is when you want to catch any undefined ? and automatically define ? in that case... 2020-04-01T20:58:28Z Riastradh: gwatt: No, I'm trying to reconstruct from memory an example that syntax-parameters did wrong. 2020-04-01T21:00:40Z Riastradh: (if-it #t (or #f it) 0) 2020-04-01T21:01:07Z Riastradh: I say this should return #t, but I suspet if you cast this into syntax-parameters the obvious way it will return #f. 2020-04-01T21:01:26Z Riastradh: ...that is, if you use the above definition of `or' in terms of `if-it'. 2020-04-01T21:02:01Z gwatt: Ah, I see 2020-04-01T21:02:46Z aeth: jcowan: so how should I build a hygienic macro system from a non-hygienic one? It looks like explicit-renaming sort of does that, I looked up http://wiki.call-cc.org/explicit-renaming-macros for IR, but it's mostly ER 2020-04-01T21:02:48Z Riastradh: In other words, syntax-parameters break hygiene in the sense that the implementation detail of how we chose to write `or' leaked out into the lexical environment of the user in an observable way. 2020-04-01T21:02:49Z hugh_marera joined #scheme 2020-04-01T21:02:57Z aeth: I noticed near the end there's a with-explicit-renaming in Chicken's define-macro... 2020-04-01T21:03:09Z Riastradh: aeth: You should read Jonathan's article; have you read it yet? 2020-04-01T21:03:55Z aeth: Riastradh: The ACM link? I skimmed it. 2020-04-01T21:04:20Z Riastradh: gwatt: (I should clarify: I have not confirmed that syntax-parameters behave this way; I should have qualified my last message with `I suspect'. Happy to hear confirmation one way or another!) 2020-04-01T21:04:45Z gwatt: Well, if I replace "syntax-parameters" with "fluid-let-syntax" they behave the way you fear 2020-04-01T21:05:25Z aeth: Riastradh: I didn't read it carefully the first time around, I thought it was something racketish where [let 13] was the system, not the output, which I mentioned a bunch of lines up 2020-04-01T21:05:46Z smazga quit (Quit: leaving) 2020-04-01T21:06:06Z Riastradh: Not racketish, and very simple, and worth reading actually reading the paper and playing with the examples! 2020-04-01T21:06:24Z aeth: yes, I see that [let 13] is basically a gensym 2020-04-01T21:06:34Z aeth: conceptually speaking 2020-04-01T21:08:48Z aeth: and haha, hygiene is usually not an issue in CL but I think I found a good breaking of it. 2020-04-01T21:09:35Z aeth: (defun foo (x) (* x x)) (foo 42) ;=> 1764 2020-04-01T21:09:37Z aeth: (defmacro foobar (x) `(foo ,x)) (foobar 42) ;=> 1764 2020-04-01T21:09:53Z aeth: (defun barfoo (x) (flet ((foo (y) (+ y y))) (foobar x))) (barfoo 42) ;=> 84 2020-04-01T21:10:47Z aeth: CL normally avoids hygiene issues because (1) symbols are namespaced into packages, (2) the package CL is locked from redefinition, and (3) variables and functions are in separate binding namespaces 2020-04-01T21:10:54Z aeth: But, as this shows, it can still happen! 2020-04-01T21:13:07Z aeth: (FLET is also pretty uncommonly used in CL) 2020-04-01T21:15:59Z gravicappa quit (Ping timeout: 250 seconds) 2020-04-01T21:17:37Z tessier quit (Ping timeout: 258 seconds) 2020-04-01T21:42:02Z tessier joined #scheme 2020-04-01T21:42:02Z tessier quit (Changing host) 2020-04-01T21:42:02Z tessier joined #scheme 2020-04-01T21:46:10Z TCZ quit (Quit: Leaving) 2020-04-01T21:53:14Z Tirifto quit (Quit: Leaving.) 2020-04-01T22:03:35Z Naptra quit (Remote host closed the connection) 2020-04-01T22:04:28Z hugh_marera quit (Ping timeout: 256 seconds) 2020-04-01T22:06:20Z weinholt` joined #scheme 2020-04-01T22:07:13Z pilne quit (Quit: Hello, 911? Yeah, it's caught in the window this time.) 2020-04-01T22:07:30Z pilne joined #scheme 2020-04-01T22:08:07Z copec quit (*.net *.split) 2020-04-01T22:08:07Z weinholt quit (*.net *.split) 2020-04-01T22:08:07Z akkad quit (*.net *.split) 2020-04-01T22:08:07Z cky quit (*.net *.split) 2020-04-01T22:08:08Z Ober is now known as akkad 2020-04-01T22:08:54Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-01T22:11:41Z turtleman joined #scheme 2020-04-01T22:16:53Z zig quit (Quit: WeeChat 1.9.1) 2020-04-01T22:30:16Z stultulo joined #scheme 2020-04-01T22:30:27Z f8l quit (Ping timeout: 258 seconds) 2020-04-01T22:30:37Z stultulo is now known as f8l 2020-04-01T22:30:50Z akkad is now known as 7YUAAD074 2020-04-01T22:30:52Z copec joined #scheme 2020-04-01T22:30:52Z akkad joined #scheme 2020-04-01T22:30:52Z cky joined #scheme 2020-04-01T22:32:58Z ArthurStrong quit (Quit: leaving) 2020-04-01T22:34:43Z ArthurStrong joined #scheme 2020-04-01T22:54:54Z turtleman quit (Ping timeout: 240 seconds) 2020-04-01T22:58:41Z lritter quit (Ping timeout: 250 seconds) 2020-04-01T23:28:03Z turtleman joined #scheme 2020-04-01T23:28:50Z TCZ joined #scheme 2020-04-01T23:41:19Z TCZ quit (Quit: Leaving) 2020-04-01T23:56:21Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-02T00:02:47Z torbo joined #scheme 2020-04-02T00:20:41Z lritter joined #scheme 2020-04-02T00:32:25Z SGASAU quit (Remote host closed the connection) 2020-04-02T00:32:37Z SGASAU joined #scheme 2020-04-02T00:43:25Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-02T01:07:07Z amerigo quit (Quit: Connection closed for inactivity) 2020-04-02T01:09:47Z mdhughes: Anyone know enough about Racket's GUI to tell me why this is so slow? https://gitlab.com/mdhughes/gridtest-racket 2020-04-02T01:10:18Z mdhughes: (I don't really plan to use Racket, but I was curious if newer Racket had improved matters, and it has not) 2020-04-02T01:24:42Z aeth quit (Ping timeout: 265 seconds) 2020-04-02T01:26:08Z aeth joined #scheme 2020-04-02T01:30:31Z mr_machina quit (Remote host closed the connection) 2020-04-02T01:52:14Z lritter quit (Ping timeout: 240 seconds) 2020-04-02T01:53:10Z lritter joined #scheme 2020-04-02T02:10:22Z drakonis quit (Quit: WeeChat 2.7.1) 2020-04-02T02:16:18Z drakonis joined #scheme 2020-04-02T02:44:02Z seepel joined #scheme 2020-04-02T02:57:36Z seepel quit (Read error: Connection reset by peer) 2020-04-02T03:07:44Z mr_machina joined #scheme 2020-04-02T03:13:14Z turtleman quit (Ping timeout: 240 seconds) 2020-04-02T03:19:26Z terpri_ quit (Remote host closed the connection) 2020-04-02T03:20:05Z terpri_ joined #scheme 2020-04-02T03:28:48Z skapata quit (Quit: ฤœis!) 2020-04-02T03:40:49Z ArthurStrong quit (Quit: leaving) 2020-04-02T03:41:31Z lritter quit (Quit: Leaving) 2020-04-02T03:59:56Z pilne quit (Quit: Hello, 911? Yeah, it's caught in the window this time.) 2020-04-02T04:17:54Z angelds joined #scheme 2020-04-02T04:20:06Z elderK quit (Quit: WeeChat 1.9) 2020-04-02T04:29:13Z mr_machina quit (Remote host closed the connection) 2020-04-02T04:31:15Z retropikzel joined #scheme 2020-04-02T04:44:21Z gravicappa joined #scheme 2020-04-02T04:46:58Z sz0 quit (Quit: Connection closed for inactivity) 2020-04-02T04:48:41Z drakonis quit (Quit: WeeChat 2.7.1) 2020-04-02T05:14:26Z oxum quit (Quit: Leaving...) 2020-04-02T05:30:14Z angelds quit (Ping timeout: 265 seconds) 2020-04-02T05:35:06Z xelxebar_ joined #scheme 2020-04-02T05:48:36Z xelxebar_ quit (Quit: ZNC 1.7.2+deb3 - https://znc.in) 2020-04-02T06:04:50Z amerigo joined #scheme 2020-04-02T06:10:51Z Naptra joined #scheme 2020-04-02T06:16:42Z teardown joined #scheme 2020-04-02T06:24:45Z torbo quit (Remote host closed the connection) 2020-04-02T06:38:27Z pounce quit (Ping timeout: 260 seconds) 2020-04-02T06:52:55Z wasamasa: racket-on-chez wasn't about performance improvements 2020-04-02T06:53:16Z wasamasa: it was to use more scheme in favor of C 2020-04-02T07:07:43Z sz0 joined #scheme 2020-04-02T07:08:16Z weinholt` quit 2020-04-02T07:08:25Z weinholt joined #scheme 2020-04-02T07:09:27Z CyDefect joined #scheme 2020-04-02T07:24:10Z ggole joined #scheme 2020-04-02T07:29:16Z Ericson2314 quit (Quit: killed) 2020-04-02T07:29:17Z siraben quit (Quit: killed) 2020-04-02T07:29:17Z keep-learning[m] quit (Quit: killed) 2020-04-02T07:29:17Z mbakke quit (Quit: killed) 2020-04-02T07:29:18Z hansbauer[m] quit (Quit: killed) 2020-04-02T07:29:29Z amnesic[m] quit (Quit: killed) 2020-04-02T07:29:31Z Gnuxie[m] quit (Quit: killed) 2020-04-02T07:29:31Z dieggsy quit (Quit: killed) 2020-04-02T07:29:46Z fly[m] quit (Quit: killed) 2020-04-02T07:31:21Z luni joined #scheme 2020-04-02T07:56:12Z siraben joined #scheme 2020-04-02T07:58:36Z civodul joined #scheme 2020-04-02T08:01:08Z SGASAU quit (Remote host closed the connection) 2020-04-02T08:01:35Z SGASAU joined #scheme 2020-04-02T08:04:44Z mbakke joined #scheme 2020-04-02T08:04:44Z keep-learning[m] joined #scheme 2020-04-02T08:04:44Z amnesic[m] joined #scheme 2020-04-02T08:04:44Z dieggsy joined #scheme 2020-04-02T08:04:44Z Ericson2314 joined #scheme 2020-04-02T08:04:44Z Gnuxie[m] joined #scheme 2020-04-02T08:04:44Z amirouche[m] joined #scheme 2020-04-02T08:04:51Z hansbauer[m] joined #scheme 2020-04-02T08:23:45Z CyDefect quit (Ping timeout: 265 seconds) 2020-04-02T08:24:21Z CyDefect joined #scheme 2020-04-02T08:31:31Z notzmv quit (Ping timeout: 258 seconds) 2020-04-02T08:32:30Z CyDefect quit (Ping timeout: 256 seconds) 2020-04-02T08:32:41Z ski quit (Read error: Connection reset by peer) 2020-04-02T08:33:28Z notzmv joined #scheme 2020-04-02T08:48:40Z jobol joined #scheme 2020-04-02T08:59:09Z sz0 quit 2020-04-02T08:59:21Z sz0 joined #scheme 2020-04-02T09:01:08Z CyDefect joined #scheme 2020-04-02T09:03:36Z SGASAU quit (Remote host closed the connection) 2020-04-02T09:04:21Z SGASAU joined #scheme 2020-04-02T09:17:46Z mdhughes: Which should make it faster, if they can optimize the runtime as well as programs. 2020-04-02T09:27:17Z Lysandros quit (Quit: rebooting) 2020-04-02T09:34:51Z CyDefect quit (Remote host closed the connection) 2020-04-02T09:35:06Z CyDefect joined #scheme 2020-04-02T09:36:21Z SGASAU quit (Remote host closed the connection) 2020-04-02T09:36:35Z SGASAU joined #scheme 2020-04-02T09:39:23Z CyDefect quit (Remote host closed the connection) 2020-04-02T09:39:40Z CyDefect joined #scheme 2020-04-02T09:46:40Z Lysandros joined #scheme 2020-04-02T09:46:41Z Lysandros quit (Changing host) 2020-04-02T09:46:41Z Lysandros joined #scheme 2020-04-02T09:51:05Z SGASAU quit (Remote host closed the connection) 2020-04-02T09:51:19Z SGASAU joined #scheme 2020-04-02T09:53:05Z TCZ joined #scheme 2020-04-02T09:53:40Z ArthurStrong joined #scheme 2020-04-02T09:58:23Z luni quit (Remote host closed the connection) 2020-04-02T10:00:08Z retropikzel_ joined #scheme 2020-04-02T10:02:34Z retropikzel quit (Ping timeout: 240 seconds) 2020-04-02T10:04:21Z SGASAU quit (Remote host closed the connection) 2020-04-02T10:04:44Z SGASAU joined #scheme 2020-04-02T10:04:48Z luni joined #scheme 2020-04-02T10:21:57Z hugh_marera joined #scheme 2020-04-02T10:25:41Z hugh_marera quit (Client Quit) 2020-04-02T10:56:48Z TCZ quit (Quit: Leaving) 2020-04-02T10:59:25Z ArthurStrong quit (Quit: leaving) 2020-04-02T11:00:06Z tryte quit (Remote host closed the connection) 2020-04-02T11:00:23Z tryte joined #scheme 2020-04-02T11:11:21Z skapata joined #scheme 2020-04-02T11:48:48Z coffeeturtle joined #scheme 2020-04-02T12:10:00Z coffeeturtle quit (Quit: leaving) 2020-04-02T12:26:56Z TCZ joined #scheme 2020-04-02T12:27:47Z TCZ quit (Client Quit) 2020-04-02T12:28:32Z TCZ joined #scheme 2020-04-02T12:33:54Z lockywolf joined #scheme 2020-04-02T12:39:38Z luni quit (Remote host closed the connection) 2020-04-02T12:40:26Z Lysandros quit (Remote host closed the connection) 2020-04-02T12:41:12Z Lysandros joined #scheme 2020-04-02T12:41:13Z Lysandros quit (Changing host) 2020-04-02T12:41:13Z Lysandros joined #scheme 2020-04-02T12:50:56Z turtleman joined #scheme 2020-04-02T12:55:48Z xkapastel joined #scheme 2020-04-02T13:00:39Z nly joined #scheme 2020-04-02T13:03:23Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-02T13:06:03Z cartwright quit (Ping timeout: 240 seconds) 2020-04-02T13:06:43Z SGASAU quit (Remote host closed the connection) 2020-04-02T13:07:00Z SGASAU` joined #scheme 2020-04-02T13:20:26Z cartwright joined #scheme 2020-04-02T13:28:05Z turtleman quit (Remote host closed the connection) 2020-04-02T13:28:50Z turtleman joined #scheme 2020-04-02T13:32:16Z drakonis joined #scheme 2020-04-02T13:32:46Z TCZ quit (Quit: Leaving) 2020-04-02T13:49:02Z turtleman quit (Ping timeout: 256 seconds) 2020-04-02T13:51:36Z asdfjkl joined #scheme 2020-04-02T13:51:51Z asdfjkl: Hry there, has anyone here tried gnurobots? 2020-04-02T13:52:04Z asdfjkl: https://www.gnu.org/software/gnurobots/ 2020-04-02T13:52:35Z asdfjkl: I'm trying to learn scheme and thought this would be a fun little thing to play around with; but I have no idea how to start 2020-04-02T14:13:00Z klovett quit (Remote host closed the connection) 2020-04-02T14:19:22Z amirouche[m]: forget it, it requires to be updated to 2.9 2020-04-02T14:19:31Z amirouche[m]: guile 3.0 I mean 2020-04-02T14:19:48Z amirouche[m]: This is certainly not a newbie task, also see #guile 2020-04-02T14:21:39Z TCZ joined #scheme 2020-04-02T14:31:40Z stultulo joined #scheme 2020-04-02T14:32:37Z f8l quit (Ping timeout: 264 seconds) 2020-04-02T14:32:38Z stultulo is now known as f8l 2020-04-02T14:32:46Z whiteline quit (Remote host closed the connection) 2020-04-02T14:33:48Z whiteline joined #scheme 2020-04-02T14:36:01Z tohoyn joined #scheme 2020-04-02T14:39:34Z whiteline_ joined #scheme 2020-04-02T14:39:42Z whiteline quit (Read error: Connection reset by peer) 2020-04-02T14:42:28Z gwatt: alternatively, you could run it in an old version of guile 2020-04-02T14:43:47Z asdfjkl quit (Ping timeout: 250 seconds) 2020-04-02T14:50:02Z klovett joined #scheme 2020-04-02T14:50:12Z sarna joined #scheme 2020-04-02T14:53:04Z ngz joined #scheme 2020-04-02T14:53:19Z Tirifto joined #scheme 2020-04-02T14:57:27Z whiteline_ quit (Quit: Leaving) 2020-04-02T14:58:56Z pilne joined #scheme 2020-04-02T14:59:32Z whiteline joined #scheme 2020-04-02T15:09:55Z amirouche[m]: +1 2020-04-02T15:26:35Z whiteline quit (Quit: Leaving) 2020-04-02T15:28:18Z whiteline joined #scheme 2020-04-02T15:38:01Z luni joined #scheme 2020-04-02T15:40:26Z kori quit (Ping timeout: 240 seconds) 2020-04-02T15:41:23Z CyDefect quit (Remote host closed the connection) 2020-04-02T15:41:40Z CyDefect joined #scheme 2020-04-02T15:48:29Z acarrico quit (Quit: Leaving.) 2020-04-02T15:49:25Z retropikzel_ quit (Quit: Leaving) 2020-04-02T15:54:23Z lritter joined #scheme 2020-04-02T16:05:53Z turtleman joined #scheme 2020-04-02T16:13:50Z TCZ quit (Quit: Leaving) 2020-04-02T16:15:18Z hugh_marera joined #scheme 2020-04-02T16:23:34Z turtleman quit (Ping timeout: 240 seconds) 2020-04-02T16:25:05Z pigajunior joined #scheme 2020-04-02T16:25:29Z hugh_marera quit (Quit: hugh_marera) 2020-04-02T16:36:06Z pigajunior: /set weechat.bar.title.color_bg 60 2020-04-02T16:37:09Z pigajunior 2020-04-02T16:43:16Z pigajunior quit (Quit: WeeChat 1.9.1) 2020-04-02T16:45:09Z asdfjkl joined #scheme 2020-04-02T16:46:27Z zaifir: Is there anything wrong with using (apply values xs) as the standard idiom for returning as values the elements of the list xs? 2020-04-02T16:48:06Z asdfjkl: amirouche[m], gnurobots, you mean? 2020-04-02T16:51:35Z retropikzel joined #scheme 2020-04-02T16:52:42Z TCZ joined #scheme 2020-04-02T16:57:25Z pigajunior joined #scheme 2020-04-02T17:01:36Z tohoyn quit (Quit: Lรคhdรถssรค) 2020-04-02T17:29:34Z pigajunior quit (Ping timeout: 240 seconds) 2020-04-02T17:30:05Z jcowan: Fortunately Guile, like Python, coexists comfortably in multiple versions. 2020-04-02T17:32:10Z gwatt: zaifir: nope, if that's the interface you want 2020-04-02T17:33:52Z klovett quit (Remote host closed the connection) 2020-04-02T17:33:58Z jcowan: That is indeed the standard idiom. 2020-04-02T17:34:16Z klovett joined #scheme 2020-04-02T17:37:49Z TCZ quit (Quit: Leaving) 2020-04-02T17:39:24Z mgh quit (Quit: WeeChat 2.6) 2020-04-02T17:41:35Z erkin: Is there a standard way to do a `case' that evals its cases? Like CHICKEN's `select' but in R6RS. 2020-04-02T17:41:59Z erkin: It feels a tad wordy to do several lines of (cond ((= foo ... 2020-04-02T17:44:59Z ecraven: well, `select' is used to do that in Dylan.. I thought I had implemented it, but can't find it now 2020-04-02T17:46:14Z ecraven: there, seems I did: http://ix.io/2gnA 2020-04-02T17:46:24Z ecraven: that should work on any Scheme with syntax-rules support 2020-04-02T17:46:31Z pjb: zaifir: but there's already values-list! (values-list (list 1 2 3)) #| --> 1 ; 2 ; 3 |# (apply (function values) (list 1 2 3)) #| --> 1 ; 2 ; 3 |# 2020-04-02T17:47:04Z pjb: erkin: you can always write a macro! 2020-04-02T17:47:23Z Riastradh: pjb: remember what channel you're in... 2020-04-02T17:48:34Z hugh_marera joined #scheme 2020-04-02T17:50:57Z pjb: Oops, sorry. 2020-04-02T17:51:23Z pilne_ joined #scheme 2020-04-02T17:51:35Z pjb: That said, instead of calling apply each time, wouldn't it be nice to put a values-list function in some library? 2020-04-02T17:52:07Z gwatt: which calls apply each time 2020-04-02T17:52:54Z pilne quit (Ping timeout: 240 seconds) 2020-04-02T17:53:39Z Riastradh: (apply values ...) vs (values-list ...) is a difference of 1 character 2020-04-02T17:57:15Z jcowan: But it has higher cognitive complexity 2020-04-02T17:57:45Z Riastradh: for an operation that's not worth much 2020-04-02T17:57:48Z erkin: ecraven: Guess I can steal that. :-) 2020-04-02T18:01:01Z retropikzel quit (Quit: Leaving) 2020-04-02T18:02:01Z jcowan: I have just been the object of a campaign to convince me that monads in Scheme should accept n arguments and deliver m values (of course it is up to you to make sure that each joint in a monad bind matches values with arguments). 2020-04-02T18:02:36Z jcowan: I believe the practical utility of 1-argument-1-value is 99% of the total value. 2020-04-02T18:04:34Z erkin: Is `any' the same thing as `ormap'? 2020-04-02T18:04:38Z pjb: gwatt: until it's implemented in the implementation, and optimized out by open-coding itโ€ฆ 2020-04-02T18:08:29Z gwatt: I'm unconvinced that (list-values list) is going to be that much faster than (apply values list) or even used enough to make open-coding worthwhile 2020-04-02T18:08:56Z mdhughes: I've never been convinced "monad" means anything, it's just a word Haskellers made up to describe functions. 2020-04-02T18:09:42Z gwatt: Many schemes implement goofy multiple values that are just a tagged list and call-with-values just ... calls apply! 2020-04-02T18:14:50Z asdfjkl quit (Remote host closed the connection) 2020-04-02T18:17:30Z choas_ joined #scheme 2020-04-02T18:18:13Z choas_ quit (Client Quit) 2020-04-02T18:21:35Z choas joined #scheme 2020-04-02T18:22:00Z choas quit (Client Quit) 2020-04-02T18:24:34Z zaifir: jcowan: It turns out that allowing multiple values in a Maybe/Either container adds very little code to the implementation. But I guess the main question is, indeed, whether it's useful. 2020-04-02T18:27:17Z zaifir: (maybe-bind (just 2 3 4) *) ; => 24 That's rather cool, I think. 2020-04-02T18:27:45Z gwatt: but there's already a monad for multiple values; it's a list 2020-04-02T18:28:02Z zaifir: Er, (maybe-bind (just 2 3 4) (lambda (x y z) (just (* x y z)))) 2020-04-02T18:28:34Z zaifir: gwatt: True. 2020-04-02T18:31:04Z zaifir: Also, the simplest implementation is to store the values internally as a list, which means a tiny bit of overhead for the single-value case. 2020-04-02T18:31:17Z jcowan: Yes, but I really don't think one more cons matters. 2020-04-02T18:31:30Z zaifir: A very tiny bit :) 2020-04-02T18:32:37Z mr_machina joined #scheme 2020-04-02T18:33:49Z gwatt: mdhughes: disclaimer: I know nothing about racket/gui. I'm looking at `on-paint' and wondering if it would be faster to generate one giant bitmap that represents the whole map and then draw the visible section of that bitmap 2020-04-02T18:34:19Z choas joined #scheme 2020-04-02T18:35:00Z gwatt: if the overhead of (send draw-sprite ...) is high then that would cut out some wasted time 2020-04-02T18:35:30Z mdhughes: I'd be doing the same graphics calls to a dc (drawing context). 2020-04-02T18:37:19Z mdhughes: It could be that an offscreen bitmap would be faster than onscreen, but it shouldn't be; it's not in the Cocoa API, wouldn't think (qt? Whatever they use underneath) is different. 2020-04-02T18:37:28Z zaifir: mdhughes: Monads are a fantastic abstraction. I hope you don't let their popularity among Haskellers drive you away from using them. 2020-04-02T18:39:28Z mdhughes: Oh, and if you mean like render the whole map once, that's not possible, it changes and has to be animated in a real game. 2020-04-02T18:43:27Z erkin: CHICKEN's ability to inline C makes it trivial to include header files. I wonder if there's a way to do it in other Schemes without having to write a C parser. 2020-04-02T18:44:20Z erkin: I've embarked on a journey to write bindings for a library and at the moment I'm just rewriting the entire header in Scheme to expose the API. 2020-04-02T18:45:17Z mdhughes: erkin: Yep, that's pretty much what I've been doing. It's no fun but the alternative requires compiling thru C. 2020-04-02T18:45:37Z erkin: Ugh, that's what I was fearing. 2020-04-02T18:46:12Z gwatt: mdhughes: the whole map changes? like the terrain moves around? 2020-04-02T18:46:15Z mdhughes: The only other option is writing client/server, where your C code takes a port or stdin or whatever, Scheme talks to it over that pipeline. 2020-04-02T18:46:34Z erkin: I feel like that's even more of a hassle. 2020-04-02T18:47:05Z mdhughes: gwatt: Yeah, you knock open doors, water animates, visibility has to be shown or hidden as you move. 2020-04-02T18:47:38Z jcowan: "You fool! As if it mattered how a man falls down!" "When the fall is all there is, it matters." 2020-04-02T18:48:10Z jcowan: zaifir: Anyway, I think the conceptual complexity is too high to be worthwhile. 2020-04-02T18:48:29Z erkin: I have a feeling that it was a foolish idea to attempt to redefine constant enums in Scheme instead of just calling a foreign variable procedure. 2020-04-02T18:49:35Z erkin: But there are thousands of them. 2020-04-02T18:49:45Z mdhughes: gwatt: In SDL from C, Chicken, or Scheme, or even a Javascript canvas, I can redraw a screen in <5ms usually. So the Racket one is really anomalous. 2020-04-02T18:50:42Z gwatt: Yeah, I got nothing 2020-04-02T18:51:45Z erkin: So far, I've been doing enums with a macro that defines every given symbol over a range of integers. 2020-04-02T18:51:51Z mdhughes: I need to hit up the Racket Slack or mailing list again, but last time was very unproductive. 2020-04-02T18:52:03Z wasamasa: erkin: sounds familiar 2020-04-02T18:52:13Z erkin: Hi wasamasa 2020-04-02T18:52:18Z wasamasa: hello 2020-04-02T18:52:38Z jcowan: If you want a design (not yet implemented), see the pre-SRFI at https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/EnumsCowan.md 2020-04-02T18:52:47Z wasamasa: https://github.com/wasamasa/chip8.el/blob/master/chip8.el#L182 2020-04-02T18:53:04Z erkin: Haha, great minds think alike. 2020-04-02T18:53:24Z mdhughes: erkin: That's what thunderchez does, it has a (define-flags) helper but it's still thousands of lines of enum mapping. 2020-04-02T18:53:28Z erkin: I just wrote a `range' procedure with `case-lambda'. It just loops and conses over the index. 2020-04-02T18:53:38Z wasamasa: at that point I gained some respect for the clever things people do in C 2020-04-02T18:53:44Z jcowan: It's meant to be pretty comprehensive, and makes enums records instead of symbols. An enum has a type, a name (symbol), an ordinal (integer), and a value (anything). 2020-04-02T18:53:44Z erkin: Hahah 2020-04-02T18:54:06Z erkin: I considered using R6RS's enum library for this but... It's overkill. 2020-04-02T18:54:16Z wasamasa: if you mostly work with native number types, it's not a bad DSL 2020-04-02T18:54:18Z erkin: Also enums might be the least useful part of R6RS, to be perfectly honest. 2020-04-02T18:55:38Z gwatt: Yeah, they feel pretty clunky 2020-04-02T18:55:46Z jcowan: The trouble with symbols is that they cannot be "type checked" in the sense that you do not know if a symbol belongs to the "right" enum type, as it may belong to many of them. 2020-04-02T18:55:57Z erkin: I ended up going with XForms instead of libui because it has a decent and stable API (one that barely changed since 2002) and it looks ugly as sin^W^W^Wvery retro aesthetic. 2020-04-02T18:56:05Z jcowan: The main problem with R6RS enums is that they don't clearly distinguish enum types from enum sets. 2020-04-02T18:56:16Z wasamasa: erkin: that sounds like something Felix would have done 2020-04-02T18:56:22Z erkin: Haha 2020-04-02T18:56:43Z wasamasa: except he defected and decided to write all graphical stuff in TCL 2020-04-02T18:56:56Z wasamasa: speaking to scheme via IPC if needed 2020-04-02T18:57:01Z erkin: It was my friend dmbaturin who recommended it. He and I both like ugly clunky 1990s aesthetics. Like graphics of SGI, SunOS, VMS etc. 2020-04-02T18:57:04Z gwatt: jcowan: definining an r6rs enum also generates a macro that "typecheck" the argument list for that macro 2020-04-02T18:57:27Z jcowan: But given a symbol used as an enum you cannot say what type it has. 2020-04-02T18:57:28Z CyDefect quit (Remote host closed the connection) 2020-04-02T18:57:32Z amirouche[m]: erkin: what is xforms I looked it up in a search engine, but could not find something interesting. 2020-04-02T18:57:45Z CyDefect joined #scheme 2020-04-02T18:57:49Z erkin: This GUI toolkit http://xforms-toolkit.org/ 2020-04-02T18:57:52Z jcowan: By using record instances you can make that go away, as well as being able to both order them *and* give them arbitrary values. 2020-04-02T18:58:02Z erkin: Mmm, beautiful http://xforms-toolkit.org/screenshots/virgo1.png 2020-04-02T18:58:41Z erkin: Apparently there once was Scheme bindings for it called SForms, in SCM (R4RS). The source code was lost to sands of time since Archive.org neglected to archive the tarball. 2020-04-02T18:58:47Z erkin: Abandoned circa 2001. 2020-04-02T18:59:15Z jcowan: agh, the PDF for the XForms documentation is 375 pages 2020-04-02T18:59:24Z jcowan: that makes it about the same size as R6RS 2020-04-02T18:59:27Z erkin: Hahah 2020-04-02T18:59:35Z jcowan: including rationale and all 2020-04-02T18:59:40Z erkin: The HTML version is surprisingly easy to read actually. 2020-04-02T18:59:44Z mdhughes: jcowan: That's why thunderchez has define-flags, you pass the typename first, so it's sort of type-safe. 2020-04-02T18:59:48Z erkin: Although I've only read like 5% of it. 2020-04-02T18:59:55Z jcowan: Of course 2020-04-02T19:00:17Z erkin: What surprised me about XForms is that it's still maintained. There are yearly commits. 2020-04-02T19:00:20Z amirouche[m]: what application or kind of application do you want to build? 2020-04-02T19:00:39Z jcowan: More than (pointless) copyright updates? 2020-04-02T19:00:51Z ecraven: is there a reason to prefer one or the other of sxml vs. x-expressions? 2020-04-02T19:00:53Z erkin: dmbaturin suggested a music player for the vapourwave aesthetics but... that means we need to write audio stuff as well. 2020-04-02T19:01:12Z wasamasa: who is "we"? 2020-04-02T19:01:21Z erkin: At the moment, it's exclusively me. 2020-04-02T19:01:27Z erkin: I'm trying to recruit two more people to the project. 2020-04-02T19:01:33Z wasamasa: what project? 2020-04-02T19:01:35Z erkin: ie the TeamWau Cooperative 2020-04-02T19:01:40Z ggole quit (Quit: Leaving) 2020-04-02T19:01:47Z erkin: https://github.com/TeamWau/SCForms 2020-04-02T19:01:51Z erkin: I haven't pushed anything yet. 2020-04-02T19:02:11Z wasamasa: ah, yes, anime avatars 2020-04-02T19:02:16Z erkin: shhh 2020-04-02T19:02:27Z wasamasa: I kind of missed these 2020-04-02T19:02:28Z erkin: It's a long story. 2020-04-02T19:02:46Z wasamasa: been some time since I saw an impressive repo, clicked on the user and saw a pony or anime avatar 2020-04-02T19:03:02Z erkin: Maybe I'll just transfer it back to my account. 2020-04-02T19:03:39Z erkin: There we go https://github.com/erkin/SCForms 2020-04-02T19:03:47Z wasamasa: https://github.com/tetracat 2020-04-02T19:04:06Z erkin: Question: Should I license the API rewrite under LGPL? 2020-04-02T19:04:11Z erkin: It's practically derivative work. 2020-04-02T19:04:21Z wasamasa: it's a safe option 2020-04-02T19:04:35Z wasamasa: spares people from checking licenses for both projects 2020-04-02T19:04:57Z erkin: Makes sense. 2020-04-02T19:05:08Z amirouche[m]: I used to create lot of orgs to organize things. 2020-04-02T19:07:18Z amirouche[m]: erkin: what do you think of the "virtual dom" diff + patch algorithm as used nowadays in most web frontend framework and with https://github.com/bodil/vgtk 2020-04-02T19:08:02Z erkin: I like it. 2020-04-02T19:08:16Z erkin: I've always liked reactive and declarative GUI design but I have no idea how to go about making one myself. 2020-04-02T19:09:07Z wasamasa: you translate changes between two data structures representing something stateful to a chain of imperative commands 2020-04-02T19:09:26Z erkin: I think I've seen something similar with Clojure, using entirely symbols and maps. 2020-04-02T19:09:35Z erkin: s/entirely/only/ 2020-04-02T19:09:37Z jcowan: Exactly how ncurses works 2020-04-02T19:09:46Z wasamasa: yeah, it's not exactly a novel idea 2020-04-02T19:10:09Z wasamasa: even emacs does it with its character display while avoiding ncurses 2020-04-02T19:10:25Z amirouche[m]: fwiw, vue.js was diff + patch algorithm was forked from https://github.com/snabbdom/snabbdom 2020-04-02T19:10:43Z amirouche[m]: erm.. I mean vuejs use a fork of snabbdom. 2020-04-02T19:11:23Z jcowan: In one case I was working with a known terminal that had four internal buffers, so my program had four internal buffers too, ran the algorithm on all four (including the switch-buffer code if need be) and picked the result with the fewest bytes. 2020-04-02T19:11:33Z wasamasa: the problem with retrofitting that on top of something like the DOM is that you cannot represent all interesting changes to it 2020-04-02T19:11:48Z wasamasa: for example representing input elements and their focus behavior is a challenge 2020-04-02T19:11:58Z amirouche[m]: wasamasa: +1 2020-04-02T19:12:36Z wasamasa: you can try hard to do it, but you end up at something not nearly as ergonomic as a plain old website 2020-04-02T19:12:40Z amirouche[m]: input element is a mess even in reactjs, it is better nowadays but they released the thing with major undocumented gotchas. 2020-04-02T19:13:33Z amirouche[m]: the thing is JS does not have full access to input elements, unlike XForms. 2020-04-02T19:13:52Z wasamasa: exactly, that's why it's hard to do 2020-04-02T19:14:09Z amirouche[m]: like caret position, for instance is not available in the DOM. 2020-04-02T19:14:12Z wasamasa: the best solution is to not touch the input element if you can avoid it, but good luck with that :D 2020-04-02T19:15:35Z amirouche[m]: fwiw, here is the documentation related to those problems: https://reactjs.org/docs/uncontrolled-components.html 2020-04-02T19:16:47Z amirouche[m]: I want to stress the fact that the problem is somewhat different with XForms or any native toolkit 2020-04-02T19:17:41Z amirouche[m]: also fully functional API is possible, non-OOP approach is possible. 2020-04-02T19:18:42Z amirouche[m]: The thing that made me really appreciate the diff + patch approach, is that the code is much more readable for an html native like me. 2020-04-02T19:18:48Z amirouche[m]: also, html in scheme is trivial. 2020-04-02T19:27:56Z terpri_ quit (Remote host closed the connection) 2020-04-02T19:28:22Z terpri_ joined #scheme 2020-04-02T19:30:14Z terpri_ quit (Read error: Connection reset by peer) 2020-04-02T19:30:14Z TCZ joined #scheme 2020-04-02T19:33:58Z elderK joined #scheme 2020-04-02T19:34:23Z hugh_marera quit (Quit: hugh_marera) 2020-04-02T19:35:10Z amirouche[m] quit (Changing host) 2020-04-02T19:35:10Z amirouche[m] joined #scheme 2020-04-02T19:35:10Z amirouche[m] quit (Changing host) 2020-04-02T19:35:10Z amirouche[m] joined #scheme 2020-04-02T19:41:56Z luni quit (Remote host closed the connection) 2020-04-02T19:46:35Z erkin: Pushed the first file: https://github.com/erkin/SCForms/blob/master/src/api/basic.sls 2020-04-02T19:46:43Z madage quit (Ping timeout: 240 seconds) 2020-04-02T19:48:52Z lritter quit (Ping timeout: 256 seconds) 2020-04-02T19:50:23Z wasamasa: ;; to be continued 2020-04-02T19:50:31Z wasamasa plays progressive rock 2020-04-02T19:50:58Z erkin: Yeah, it turns out I don't remember C as well as I thought I did. 2020-04-02T19:51:42Z erkin: I have no idea how to rewrite this: http://git.savannah.nongnu.org/cgit/xforms.git/tree/lib/include/Basic.h#n703 2020-04-02T19:53:34Z lritter joined #scheme 2020-04-02T19:53:41Z CyDefect quit (Quit: Verlassend) 2020-04-02T19:55:08Z wasamasa: there isn't exactly scheme syntax for declaring a special kind of function signature as value 2020-04-02T19:56:01Z wasamasa: it's function pointer syntax 2020-04-02T19:56:22Z erkin: Ohh 2020-04-02T19:56:35Z wasamasa: handle function taking six arguments returning int 2020-04-02T19:56:40Z erkin: Then I guess I can just mark it as `pointer' and move on. 2020-04-02T19:56:48Z daviid quit (Ping timeout: 256 seconds) 2020-04-02T19:58:41Z wasamasa: why they don't use their typedef is beyond me 2020-04-02T19:59:12Z erkin: I can't find the definition of FL_FORM though. 2020-04-02T19:59:19Z wixxyi joined #scheme 2020-04-02T19:59:24Z zaifir: A good meme never dies. "A monad on a category C is *nothing but* a monoid in the monoidal category of endofunctors [C, C] over C." --SRFI 165 2020-04-02T19:59:27Z erkin: Or rather, FL_FORM_. 2020-04-02T19:59:39Z erkin: zaifir: Hah 2020-04-02T20:00:15Z wixxyi: I need a good scheme tutorial that is short and elegant just like scheme 2020-04-02T20:00:39Z zaifir: wixxyi: I've written https://en.wikibooks.org/wiki/Scheme_Programming/A_taste_of_Scheme recently. 2020-04-02T20:00:41Z wixxyi: the problem i don't learn scheme is because of tutorial that is too terse and lengthy 2020-04-02T20:00:44Z aeth: jcowan: fwiw, I like multiple values for 1-4 elements. There's a chance that they cons anyway, but not using multiple values will necessarily cons for that sort of thing. 2020-04-02T20:00:50Z zaifir: wixxyi: The rest of the book is a WIP. 2020-04-02T20:01:02Z aeth: jcowan: e.g. in linear algebra. 2020-04-02T20:01:33Z aeth: Sometimes it's just natural that it's (values x y z w) instead of a vector... 2020-04-02T20:02:10Z jcowan: Even with let-values they are hard to capture, because even though Scheme is at base a continuation-based imperative language with a symmetry between arguments and values, people go on treating it as if they were writing in a (mostly) functional language, pretty much typeless ML. 2020-04-02T20:02:37Z aeth: With the right macros, composing them can be very natural, e.g. setting-or-binding multiple values from a procedure that returns multiple values... 2020-04-02T20:02:53Z jcowan: Sometimes I think the loss of "out" arguments, which the callee assigns to mutate places known to the caller, was a great mistake. 2020-04-02T20:03:41Z ecraven: those *feel* abominable to me ;) 2020-04-02T20:03:42Z jcowan: One very real asymmetry is that arguments have names, whereas values only have positions. 2020-04-02T20:03:54Z ecraven: couldn't they have names too? 2020-04-02T20:04:03Z ecraven: did any language ever try that? 2020-04-02T20:04:09Z aeth: their names are 0, 1, 2, 3, ... :-p 2020-04-02T20:04:20Z ecraven: well, to me, part of the asymmetry is that (+ (values 1 2 3)) does not return 6 2020-04-02T20:04:26Z jcowan: And my name is xxxxx8098. Not. 2020-04-02T20:04:45Z jcowan: Yes, precisely in Fortran and other call-by-reference languages. 2020-04-02T20:04:46Z aeth: Multiple return values are in a sense the hidden sequence type that most Lisps have. Except you can't map or do other sequence related things over them. 2020-04-02T20:05:05Z jcowan: Right, because they aren't reified (at least at the language level; many implementations do reify them). 2020-04-02T20:05:13Z amirouche[m]: erkin: look at an partial example use of function as argument in chez https://github.com/amirouche/arew-scheme/blob/f907324eaab34805e58a98340c1fe3161e15c794/src/arew/data/base/foundationdb.scm#L170-L179 2020-04-02T20:05:14Z rudybot: https://teensy.info/unYydy60gO 2020-04-02T20:05:47Z erkin: Chez FFI is pretty neat. 2020-04-02T20:05:52Z jcowan: The trick is, how do these *out* arguments get their values, other than by assignment? 2020-04-02T20:05:56Z erkin: I like how it makes C strings easier to deal with. 2020-04-02T20:06:02Z lritter quit (Ping timeout: 265 seconds) 2020-04-02T20:06:30Z ecraven: just make (return (foo 3) (bar 5) (baaz 16)) assign to them :P 2020-04-02T20:06:32Z amirouche[m]: erkin: it depends if you release GC or not IIRC 2020-04-02T20:07:09Z wixxyi: I already know python, is scheme as easy to learn with that wikibooks tutorial 2020-04-02T20:07:29Z wixxyi: idk, i am just beginning so have no idea. 2020-04-02T20:07:42Z amirouche[m]: erkin: for instance here I do not release the GC: https://github.com/amirouche/arew-scheme/blob/f907324eaab34805e58a98340c1fe3161e15c794/src/arew/data/base/foundationdb.scm#L98-L101 2020-04-02T20:07:42Z rudybot: https://teensy.info/eNLI1rUvFK 2020-04-02T20:07:48Z jcowan: But if the values are computed in different parts of the procedure, that looks like (return (foo foo) (bar bar) (baaz baaz)), where the second instance is an ordinary let- or lambda-bound variable. 2020-04-02T20:07:50Z zaifir: wixxyi: The wikibook (beyond what I've rewritten, if I may say so) is currently not very helpful. 2020-04-02T20:07:51Z aeth: jcowan: multiple values compose incredibly well with CL's SETF because SETF macros (not SETF functions) can take multiple values as input so you can e.g. (setf (values x y z) (values u v w)) and then that naturally leads to composition of defining a SETF that takes in 3 values and a function that returns 3 values 2020-04-02T20:07:53Z wasamasa: wixxyi: it depends on whether you expect it to be anything like python 2020-04-02T20:08:07Z jcowan sings "Lambda bound, I wish I was" 2020-04-02T20:08:11Z madage joined #scheme 2020-04-02T20:08:13Z ecraven: jcowan: to me it still feels strange to mix in and out parameters in the same syntactic part. 2020-04-02T20:08:22Z wixxyi: zaifir: what do you mean your book is not helpful 2020-04-02T20:08:23Z zaifir: wixxyi: But there are many useful books on the language. c.f. The Little Schemer, TSPL, etc. 2020-04-02T20:08:27Z aeth: jcowan: one example of what I'm talking about in my own CL APIs is (setf (array-of-3 v) (array-of-3 u)) which in effect just copies u into v. 2020-04-02T20:08:31Z amirouche[m]: erkin sorry forget about that, that code is bizarre it as if I did not write it 2020-04-02T20:08:35Z zaifir: zaifir: It's a wikibook. I didn't write 98% of it. 2020-04-02T20:09:06Z jcowan: It's pretty much equivalent to let-values on the caller side, I don't care about that. It's keeping the callee self-documenting that matters. 2020-04-02T20:09:36Z wixxyi: TSPL and the little schemer are too big 2020-04-02T20:09:49Z aeth: jcowan: in my custom MV-using macro/function CL API, you can do (setf (array-row-of-3 v 3) (array-of-3 u)) to copy into a 2D array, too 2020-04-02T20:09:55Z ecraven: self-documenting in the sense that you'd have to write down out-parameters, but you have no idea what a function returns (as it isn't written down anywhere explicitly)? 2020-04-02T20:10:13Z zaifir: wixxyi: What do you mean by "too big"? 2020-04-02T20:10:14Z aeth: jcowan: https://gitlab.com/zombie-raptor/zombie-raptor/-/blob/ea4acc5614556d4a4d20a3545e266050aad238d8/util/array.lisp 2020-04-02T20:10:15Z rudybot: https://teensy.info/8R5GhgG16T 2020-04-02T20:10:18Z wixxyi: zaifir: the reason i don't learn scheme is those books are too bloated unlike scheme itself. 2020-04-02T20:10:23Z aeth: jcowan: All I need is to support offsets, too, and it is essentially a complete API 2020-04-02T20:10:39Z ecraven: (add x y #:out z) seems .. ugly 2020-04-02T20:10:44Z wixxyi: take for example gigamonkeys.com/book is smaller than those, although still big. 2020-04-02T20:10:45Z zaifir: wixxyi: If you've looked at The Little Schemer, you'll know that it's, uh, little. 2020-04-02T20:10:49Z aeth: jcowan: Only up to line 130 is relevant, it's remarkably concise and elegant ime 2020-04-02T20:11:03Z wasamasa: wixxyi: good luck learning scheme from going over short tutorials 2020-04-02T20:11:17Z zaifir: wixxyi: Why is it that you want a really short tutorial? 2020-04-02T20:11:21Z wasamasa: wixxyi: you can get away learning python like that due to its immense popularity 2020-04-02T20:11:25Z jcowan: Quick or satisfying, pick one. :-) 2020-04-02T20:12:04Z lritter joined #scheme 2020-04-02T20:12:43Z aeth: jcowan: anyway, in short, I love composing setf taking in MV (which would be set! in r7rs-large) with MV-returning functions to essentially insta-bind (or insta-set) short vectors or short array rows. 2020-04-02T20:13:18Z aeth: Ideally, compilers optimize away the middle step. SBCL absolutely does. Idk if any Scheme (except my own, of course) would 2020-04-02T20:14:03Z aeth: e.g. (multiple-value-bind (x y z) (array-of-3 v) ...) which of course could be macroified further 2020-04-02T20:14:27Z aeth: Although I think I normally do the binding via multiple-value-call 2020-04-02T20:14:28Z wixxyi: ok is this the book https://7chan.org/pr/src/The_Little_Schemer_4th_2.pdf if so, this book has no words such as macros,syntax? 2020-04-02T20:14:46Z zaifir: wixxyi: No. 2020-04-02T20:15:27Z zaifir: wixxyi: It uses a very small subset of Scheme, but it's a great introduction. 2020-04-02T20:15:51Z ecraven: some people love those books, some do not 2020-04-02T20:15:59Z jcowan: If you can't do Scheme at run time, there's no point in even thinking about macros yet, any more than the first idea of a Python beginner should be using decorators, or of a beginning C programmer to change the language to add try-case-finally. 2020-04-02T20:16:02Z zaifir: Of course. 2020-04-02T20:16:10Z aeth: I think I put the essence of SICP/TLS/etc. into 13 lines of a hello world for my examples directory. https://gitlab.com/mbabich/airship-scheme/-/blob/28a58b9db69fd46955cabc10ec2197373681b53e/examples/hello-world.scm 2020-04-02T20:16:11Z rudybot: https://teensy.info/Wzwgo8cw3G 2020-04-02T20:16:17Z aeth: Scheme macros are... weird. 2020-04-02T20:16:21Z erkin: You can pick a book here: https://erkin.party/scheme/bibliography/ 2020-04-02T20:16:36Z zaifir: aeth: For personal values of "weird", I suppose. 2020-04-02T20:16:51Z aeth: There's syntax-rules and that's pretty easy, but almost everything else is way harder than unhygienic macros because they're about limited breaking of hygiene. Compared to e.g. CL-style defmacro/define-macro 2020-04-02T20:16:53Z jcowan: All macros are weird 2020-04-02T20:17:06Z zaifir: ^^ 2020-04-02T20:17:32Z aeth: defmacro/define-macro is basically just quasiquote, unquote, and unquote-splice, and if you an understand those and (that's the key part) remember to unquote the right things, then that's pretty easy/simple. 2020-04-02T20:17:45Z jcowan: Or to put it Tolstoy-style: "All hygienic macros are the same, but all non-hygienic macros are different, each in its own way." 2020-04-02T20:17:48Z zaifir: aeth: Unhygienic macros are "way harder" than anything else, IMHO, because of the nightmarish semantics you get into. Plus multiple layers of quasiquote... 2020-04-02T20:17:49Z erkin: It gets progressively more convoluted: define-macro: work on with lists, syntax-rules: work with patterns, syntax-case: work with syntax objects 2020-04-02T20:18:03Z erkin: -on 2020-04-02T20:18:06Z aeth: zaifir: If you have multiple layers of quasiquote, you should move it into helper functions. 2020-04-02T20:18:06Z wixxyi: zaifir: so that link is not the book TLS? 2020-04-02T20:18:19Z aeth: zaifir: As long as it's in a separate function it stays composable and conceptually simple 2020-04-02T20:18:33Z jcowan: Explicit renaming: work mostly with lists, transform using renamer procedure if you need hygiene. 2020-04-02T20:18:50Z aeth: zaifir: Airship Scheme is basically just a series of unhygienic macros, at least until I build the hygienic layers. 2020-04-02T20:19:16Z jcowan: "Relax, it's all just ones and zeros" 2020-04-02T20:19:18Z zaifir: aeth: I still don't understand why respected CL books like Peter Seibel's act like CL macros are just a little tiny itty bitty bit difficult. 2020-04-02T20:19:22Z erkin: Why is GitHub so slow today? 2020-04-02T20:19:39Z wasamasa: to push you away from it 2020-04-02T20:19:48Z erkin: Anyway, some guy wrote a bunch of SRFIs as well as syntax-rules in CL. I think you might be interested, aeth. 2020-04-02T20:19:53Z jcowan: Because they give you pretty good boots, but not perfect, to keep you from shooting your foot off. But when you do, you might as well be using a cannon. 2020-04-02T20:19:55Z erkin: https://github.com/g000001?tab=repositories 2020-04-02T20:19:55Z zaifir: wixxyi: That looks like it. 2020-04-02T20:20:01Z aeth: erkin: oh, I probably can't look at those. 2020-04-02T20:20:16Z aeth: erkin: If the license is incompatible, it's best for me not to see the internals. 2020-04-02T20:20:18Z erkin: They're all under Unlicense. 2020-04-02T20:20:26Z aeth: eh, that could still cause issues 2020-04-02T20:20:31Z erkin: Which is effectively "public domain, just attribute me" 2020-04-02T20:20:34Z wixxyi: zaifir: ok so I want the tutorial to be only as big as CL gigamonkeys.com? Isn't that reasonable? 2020-04-02T20:20:34Z jcowan: No, it could not. 2020-04-02T20:20:58Z erkin: I do agree that Scheme lacks a comprehensive tutorial. 2020-04-02T20:21:00Z zaifir: wixxyi: I still don't understand why you need it to be a certain length. 2020-04-02T20:21:03Z jcowan wanted to rewrite Practical CL as Practical ISLisp, but there were rights issues and probably still are. 2020-04-02T20:21:15Z wasamasa: zaifir: it might have something to do with frequenting 7chan 2020-04-02T20:21:21Z zaifir: erkin: Contribute to the wikibook! It's a great place for it. 2020-04-02T20:21:26Z erkin: It's either very basic and generic stuff or complicated domain-specific stuff. 2020-04-02T20:21:31Z erkin: zaifir: I might actually! 2020-04-02T20:21:36Z aeth: erkin: heh, there's that Linguist Ruby app being terrible and identifying non-idiomatic CL as "NewLisp"... all over those repositories 2020-04-02T20:21:48Z erkin: aeth: Amazing. 2020-04-02T20:21:57Z erkin: It doesn't highlight my Scheme code because it doesn't know what .sls is. 2020-04-02T20:21:58Z wixxyi: zaifir: that book is like C++ by stroustroup TSPL... I don't want to be like that 2020-04-02T20:22:23Z erkin: wasamasa: Why are so many channers attracted to Scheme? 2020-04-02T20:22:25Z zaifir: wixxyi: Don't worry, it won't turn you into Bjarne Stroustroup. 2020-04-02T20:22:30Z wasamasa: erkin: it's great meme material 2020-04-02T20:22:34Z erkin: :-( 2020-04-02T20:22:38Z wasamasa: yeah, I know 2020-04-02T20:22:53Z aeth: erkin: You have to edit .gitattributes to manually tell it what to do 2020-04-02T20:23:00Z zaifir: Something to do with https://twobithistory.org/2018/10/14/lisp.html 2020-04-02T20:23:02Z erkin: Oh that's a good idea. 2020-04-02T20:23:03Z wasamasa: I recall a repository with images of anime girls holding programming books 2020-04-02T20:23:08Z aeth: erkin: e.g. this gets rid of the NewLisp bug. https://gitlab.com/mbabich/airship-scheme/-/blob/28a58b9db69fd46955cabc10ec2197373681b53e/.gitattributes 2020-04-02T20:23:16Z aeth: erkin: but I should probably also add Scheme lines there, too 2020-04-02T20:23:29Z aeth: note that any spaces in names need to be replaced with hyphens 2020-04-02T20:23:39Z Riastradh: why has nobody written a Scheme interpreter in TeX yet 2020-04-02T20:23:45Z zaifir: aeth: You're going to provide syntax-case, right? ;-) 2020-04-02T20:23:51Z aeth: zaifir: I mean, yes. 2020-04-02T20:24:04Z erkin: I wish Linguist would listen to .dir-locals.el 2020-04-02T20:24:38Z aeth: zaifir: Ideally everything will be implemented for both CL and Scheme, although once the optimizing is zero-overhead most of the non-macro stuff could just be written in Scheme alone to achieve the two API goal. 2020-04-02T20:25:09Z aeth: Now, that "ideally" of course means things that are actually feasible. e.g. you simply can't do a full call/cc in CL 2020-04-02T20:25:15Z wasamasa: click at your own peril: https://github.com/laynH/Anime-Girls-Holding-Programming-Books 2020-04-02T20:25:36Z aeth: wasamasa: seems like typical #lispcafe material to me 2020-04-02T20:25:54Z aeth: see e.g. https://old.reddit.com/r/LispMemes/ which gets posted all the time in #lispcafe 2020-04-02T20:26:08Z wasamasa: you'll notice sicp is disproportionately represented 2020-04-02T20:26:26Z aeth: probably one of the Lisp memers made those images 2020-04-02T20:26:47Z partyclicker joined #scheme 2020-04-02T20:27:51Z ecraven: how does the following code feel? (define x (vector (bytevector 0 1) 2 3)) (set! (ref* x 0 1) 5) x => #(#u8(0 5) 2 3) 2020-04-02T20:28:03Z ecraven: is that "unschemely" because it is entirely non-monomorphic? 2020-04-02T20:28:14Z aeth: zaifir: Airship Scheme is actually two things... it's an implementation of Scheme in Common Lisp and it's an implementation of Scheme APIs in Common Lisp because that was the natural way to do the primitives in standard-procedures where semantics mismatches existed. 2020-04-02T20:28:43Z aeth: zaifir: Now, of course, it's easier to do small semantics mismatch fixes that will be used directly by the Scheme and another to do syntax-case in CL just because, but it's still kind of in scope. 2020-04-02T20:28:46Z wasamasa: aeth: wow, these memes are awful 2020-04-02T20:28:49Z erkin: Actually 2020-04-02T20:28:52Z aeth: zaifir: see e.g. https://gitlab.com/mbabich/airship-scheme/-/blob/28a58b9db69fd46955cabc10ec2197373681b53e/scheme-string.lisp 2020-04-02T20:29:06Z aeth: zaifir: That's probably not quite 100% correct yet, especially outside of SBCL 2020-04-02T20:29:12Z erkin: Is there a way to make .dir-locals.el apply stuff to a path *recursively*? 2020-04-02T20:29:36Z erkin: Emacs also doesn't recognise .sls out of the box. 2020-04-02T20:29:48Z ecraven: wasamasa: your posting that link broke github :P 2020-04-02T20:30:03Z erkin: GitHub is having a case of hiccups. 2020-04-02T20:30:04Z wasamasa: yeah, I feel the same 2020-04-02T20:30:06Z zaifir: aeth: It looks good. 2020-04-02T20:30:08Z wasamasa: let's clone it 2020-04-02T20:30:18Z aeth: wasamasa: I mean, I kind of agree, but it's reddit so it's almost like the whole wiki issue... if it's awful, you can improve it by contributing 2020-04-02T20:30:34Z aeth: wasamasa: unless you'd prefer a schemememes subreddit instead, ideally without any hyphen or capitalization 2020-04-02T20:30:59Z wasamasa: it would be a text-only sub with lame puns by me 2020-04-02T20:31:06Z erkin: Both /r/lisp and /r/lispmemes are heavily CL dominated. 2020-04-02T20:31:12Z zaifir: I can spell 'schemememe' but I don't know when to stop. 2020-04-02T20:31:15Z zaifir: Yes. 2020-04-02T20:31:27Z aeth: erkin: it's OK 2020-04-02T20:31:29Z erkin: schememememe 2020-04-02T20:31:43Z aeth: zaifir: that's why you need a base case to terminate the tail recursion 2020-04-02T20:31:51Z wasamasa: ok, so the top 3 in terms of count are SICP, C and Other 2020-04-02T20:32:01Z zaifir: aeth: Speaking of memes. 2020-04-02T20:32:30Z aeth: erkin: the thing is, if something is Lisp-family but predominantly CL you can undermine this by promoting Airship Scheme there when it's ready. It's just a CL library. 2020-04-02T20:32:31Z erkin: wasamasa: It's worth noting that there're no Scheme books barring SICP. 2020-04-02T20:32:32Z wasamasa: the latter holding three more SICP ones 2020-04-02T20:32:40Z wasamasa: true 2020-04-02T20:32:59Z wasamasa: that explains why wixxyi doesn't know whether any other scheme books are worth reading 2020-04-02T20:33:07Z erkin: aeth: Cloture (Clojure on CL written by a respected member of /r/lisp) was a huge blow to the anti-Clojure circlejerk in /r/lisp. 2020-04-02T20:33:39Z erkin: wasamasa: I'm hoping someone starts a meme about SICM as well. 2020-04-02T20:33:49Z wasamasa: don't hold your breath 2020-04-02T20:33:49Z aeth: erkin: yeah, but the problem with Clojure is that it's not particularly portable 2020-04-02T20:34:01Z erkin: shh 2020-04-02T20:34:07Z zaifir: Eisenberg's Programming In Scheme is a really good tutorial, but out of print, IIRC. 2020-04-02T20:34:17Z ecraven: it can be found digitally 2020-04-02T20:34:22Z aeth: erkin: technically speaking, if you write an r6rs Scheme, you can port the entirety of Racket to it by porting Racket-on-Chez to it. That's incredibly more portable than another Clojure backend, even though it's still a multiyear effort. 2020-04-02T20:34:45Z aeth: To make a Clojure backend useful, you'd have to implement Java... 2020-04-02T20:34:53Z erkin: Isn't Programming in Scheme grossly outdated? 2020-04-02T20:35:06Z wasamasa: well, it can still be made to run in anything more modern easily 2020-04-02T20:35:08Z erkin: It's older than me. 2020-04-02T20:35:19Z zaifir: I'm guessing it's RยฒRS. 2020-04-02T20:35:20Z wasamasa: I ported the CGA stuff for fun 2020-04-02T20:35:24Z ecraven: aeth: I don't think that is true, racket depends on a lot of chez internals.. you'd have to write a chez, not an r6rs scheme 2020-04-02T20:35:45Z aeth: ecraven: there is a list of extensions, but it's a finite list, and it's a Scheme list, rather than a Java list. 2020-04-02T20:36:04Z aeth: ecraven: You can make another Clojure backend useful, but that involves implementing a Java. 2020-04-02T20:36:06Z ecraven: I'm not saying it is harder than java, just saying it isn't pure r6rs 2020-04-02T20:36:11Z wasamasa: zaifir: nah, r3rs: https://www.cs.cmu.edu/Groups/AI/lang/scheme/impl/pcscheme/pcs/0.html 2020-04-02T20:36:15Z zaifir: wasamasa: ty 2020-04-02T20:36:34Z aeth: r3rs is practically CL :-p 2020-04-02T20:36:42Z ecraven: hehe, I have the pcscheme manual somewhere here 2020-04-02T20:36:48Z wixxyi: wasamasa: TSPL book is thousands of pages like C++ book 2020-04-02T20:36:48Z aeth: is r3rs before the great renaming? 2020-04-02T20:36:55Z zaifir: One goal I'm adopting with the Scheme Wikibook is to use up-to-date Scheme and to not pretend the world stopped in 1998 (R5). 2020-04-02T20:36:56Z aeth: I think the first Scheme didn't rename all of the historic lisp stuff 2020-04-02T20:37:16Z wasamasa: wixxyi: nope 2020-04-02T20:37:18Z ecraven: zaifir: the changes between r5rs and r7rs aren't that great 2020-04-02T20:37:29Z wixxyi: what explains that i don't know scheme books are worth reading... i missed your thinking 2020-04-02T20:37:48Z aeth: zaifir: of course... the world stopped in 1999 because of the y2k 2020-04-02T20:37:58Z wixxyi: SICP is too big 2020-04-02T20:38:06Z wasamasa: wixxyi: TSPL3 is 242 pages, PCL is 520 pages 2020-04-02T20:38:15Z wixxyi: SICP is for programs and algo or for learning scheme? 2020-04-02T20:38:18Z aeth: SICP is too *hard* 2020-04-02T20:38:26Z wixxyi: looks like my scheme journey is going downhill 2020-04-02T20:38:29Z aeth: You can't expect people to do SICP to learn Scheme 2020-04-02T20:38:30Z wasamasa: wixxyi: go trolling somewhere else 2020-04-02T20:38:33Z zaifir: wixxyi: The Little Schemer is 196 pages. 2020-04-02T20:38:41Z aeth: The Little Schemer is the way to go 2020-04-02T20:38:45Z aeth: The SICP videos are nice, too 2020-04-02T20:39:15Z jcowan: aeth: R0RS and R1RS defined no procedures whatsoever, they were simply inherited from the host language, Maclisp. 2020-04-02T20:39:16Z aeth: wixxyi: https://www.youtube.com/playlist?list=PLE18841CABEA24090 2020-04-02T20:39:18Z zaifir: ecraven: Not in ways that affect a basic Scheme book much. The advanced sections will see some changes. 2020-04-02T20:40:22Z aeth: jcowan: okay, so R2RS was probably the great renaming? Or R3RS? 2020-04-02T20:40:34Z aeth: where was the break with compatibility? 2020-04-02T20:40:48Z akflcar joined #scheme 2020-04-02T20:42:22Z jcowan: R2RS 2020-04-02T20:42:41Z jcowan: the first Scheme _standard_; R0 and R1 were truly research reports. 2020-04-02T20:43:08Z jcowan: R3 was a set of fixes to R2 FWIU, though my margin is too small to contain a proof of this assertion 2020-04-02T20:43:44Z wixxyi quit (Ping timeout: 265 seconds) 2020-04-02T20:44:22Z akflcar: TLS has no macros???? wtf 2020-04-02T20:45:41Z aeth: wasamasa: Now we have a rival meme subreddit. https://old.reddit.com/r/schemememe/ 2020-04-02T20:46:54Z pigajunior joined #scheme 2020-04-02T20:47:06Z aeth: wasamasa: I chose to go with schemememe instead of schemememes so it's tail recursive 2020-04-02T20:47:55Z aeth: The sidebar: Memes for Scheme. A meme about Scheme is a "schemememe", but if you forget to end your tail recursion, it's a schememememememememe... 2020-04-02T20:48:33Z aeth: apologies to zaifir who came up with that concept 2020-04-02T20:50:11Z amirouche[m]: great 2020-04-02T20:50:48Z amirouche[m]: what is the state of the art in terms of 'constructed language' 2020-04-02T20:50:49Z amirouche[m]: ? 2020-04-02T20:51:55Z aeth: amirouche[m]: Do you mean a Scheme implementation or a language embedded within a Scheme or a Scheme standard? 2020-04-02T20:52:25Z amirouche[m]: I mean things like lojban and esperanto. 2020-04-02T20:52:34Z aeth: oh, conlang 2020-04-02T20:52:52Z aeth: There actually is a #conlangs or ##conlangs here iirc 2020-04-02T20:52:52Z zaifir: amirouche[m]: Define "state of the art" for general-purpose languages! 2020-04-02T20:53:05Z aeth: Oh, it's ##conlang 2020-04-02T20:53:31Z aeth: zaifir: only a Lojban speaker would think in terms of "state of the art" for human languages, I'm guessing. 2020-04-02T20:54:08Z zaifir: aeth: Engilang fans in general, maybe. 2020-04-02T20:54:12Z aeth: yeah 2020-04-02T20:54:30Z aeth: hmmm... I wonder if Schemememers should call unhygienic macros "neckbeard macros" 2020-04-02T20:54:53Z aeth: sounds like something LispMemes would do if they were Schemememers 2020-04-02T20:55:14Z amirouche[m]: I mean what do you recommend me to learn? Not necessarly lojban, I only know about lojban... 2020-04-02T20:55:50Z zaifir: aeth: Gross old beard macros. 2020-04-02T20:56:16Z aeth: zaifir: oh, yeah, or just "gross macros" 2020-04-02T20:56:46Z aeth: Is implementing a hygienic macro system in a gross macro system a process called showering? 2020-04-02T20:57:53Z zaifir: Or shaving. Yak shaving, specifically. 2020-04-02T20:58:08Z zaifir gets shown the door. 2020-04-02T20:59:53Z turtleman joined #scheme 2020-04-02T21:02:13Z Tirifto quit (Quit: Leaving.) 2020-04-02T21:06:28Z ecraven: toki pona is a nice conlang ;) 2020-04-02T21:07:13Z elderK quit (Quit: WeeChat 2.7.1) 2020-04-02T21:07:25Z gravicappa quit (Ping timeout: 265 seconds) 2020-04-02T21:07:45Z retropikzel joined #scheme 2020-04-02T21:09:25Z zaifir: Or Toaq, if you can deal with the 8 tones. 2020-04-02T21:11:09Z elderK joined #scheme 2020-04-02T21:17:39Z jobol quit (Quit: Leaving) 2020-04-02T21:25:37Z Naptra quit (Remote host closed the connection) 2020-04-02T21:30:50Z choas quit (Ping timeout: 258 seconds) 2020-04-02T21:31:14Z terpri joined #scheme 2020-04-02T21:33:27Z daviid joined #scheme 2020-04-02T21:36:49Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-02T21:51:58Z ggoes quit (Quit: WeeChat 2.3) 2020-04-02T21:52:40Z ggoes joined #scheme 2020-04-02T21:54:55Z elderK quit (Quit: WeeChat 2.7.1) 2020-04-02T21:57:53Z pjb: (incf zaifir) 2020-04-02T21:58:14Z lavaflow quit (Ping timeout: 240 seconds) 2020-04-02T21:59:12Z lavaflow joined #scheme 2020-04-02T22:00:07Z jboy quit (Quit: bye) 2020-04-02T22:02:36Z aeth: pjb: you mean (inc! zaifir) 2020-04-02T22:03:04Z amirouche[m] left #scheme 2020-04-02T22:04:19Z aeth: idk if any Scheme has that API, but it will be in my CL library. 2020-04-02T22:04:49Z aeth: What I'm probably going to do is translate airship-scheme/foo/bar to (foo bar) from the perspective of the Scheme, at least for the standard library. 2020-04-02T22:04:56Z retropikzel quit (Quit: Leaving) 2020-04-02T22:05:01Z Lambdajack joined #scheme 2020-04-02T22:05:18Z aeth: That is, the ASDF-idiomatic / naming scheme for CL just becomes spaces in the r7rs-idiomatic naming scheme for Scheme 2020-04-02T22:05:40Z erkin: What's the R6RS syntax for "export all symbols in the library"? 2020-04-02T22:09:24Z S-Jack quit (Ping timeout: 256 seconds) 2020-04-02T22:14:55Z jboy joined #scheme 2020-04-02T22:21:35Z pilne_ quit (Quit: Me fail English? That's unpossible.) 2020-04-02T22:21:54Z pilne joined #scheme 2020-04-02T22:34:09Z erkin: ...there isn't one, is there? 2020-04-02T22:35:41Z akflcar quit (Ping timeout: 250 seconds) 2020-04-02T22:36:28Z jcowan: What I want is a way to do define-modify-macro with syntax-rules, and then we can have all the !-macros we want 2020-04-02T22:36:38Z jcowan: erkin: No, there isn't 2020-04-02T22:38:06Z erkin: :-( 2020-04-02T22:38:22Z erkin: Will there be one in R7RS? 2020-04-02T22:43:17Z aeth: jcowan: It looks like define-modify-macro macros use the same machinery as setf macros? At least to some extent. http://www.lispworks.com/documentation/HyperSpec/Body/m_defi_2.htm 2020-04-02T22:43:20Z aeth: get-setf-expansion... 2020-04-02T22:43:37Z jcowan: It's hard to understand that particular part of the ANS 2020-04-02T22:43:58Z aeth: If the definable set! that permits things like (set! (car x) 42) also permits the two macro definitions in addition to the (set! car) functions... 2020-04-02T22:44:11Z aeth: Then I think some of the work is shared, I'm not 100% sure 2020-04-02T22:45:03Z aeth: jcowan: Personally, if I were you I'd just wait a few months because if I'm going to port CL to Scheme then I'm going to have to figure this out eventuallly. :-) 2020-04-02T22:45:15Z jcowan: Oh yes, no hurry. 2020-04-02T22:45:41Z aeth: There is a really old SRFI 17 but I'm not sure if that set! is enough for my setf "port" 2020-04-02T22:45:56Z aeth: I do intend to port as much as I can, and I expect most of my work will be CL's loop 2020-04-02T22:46:18Z aeth: SBCL's loop.lisp is currently 1951 lines... https://github.com/sbcl/sbcl/blob/20b959dcaa555f3727222baeadf226f7694b5702/src/code/loop.lisp 2020-04-02T22:46:26Z jcowan: The issue is about (setf (car (cons 1 2)) (f (car (cons 1 2))) 2020-04-02T22:46:47Z aeth: I want to say that loop's a scary macro, but I think I've written larger macros at this point... 2020-04-02T22:46:51Z jcowan: where the ANS seems to require that (cons 1 2) is evaluated only once) 2020-04-02T22:50:54Z TCZ quit (Quit: Leaving) 2020-04-02T22:51:45Z ngz quit (Ping timeout: 272 seconds) 2020-04-02T22:55:08Z aeth: jcowan: I wonder, should I call the type of CL arrays cl-array i.e. satisfying the predicate cl-array?? That way it avoids conflicting with other array systems... 2020-04-02T22:55:28Z jcowan: LGTM 2020-04-02T22:55:33Z jcowan: also cl-hash-table 2020-04-02T22:55:41Z aeth: right, I'm not sure where else there would be clashes 2020-04-02T22:55:46Z aeth: but those I know will happen 2020-04-02T22:56:38Z jcowan: unless indeed you want to just supplement SRFI 125, which would make the hash tables interoperable 2020-04-02T22:57:05Z aeth: maybe I could have a cl-sequence as well although I'm not sure if Schemes tend to have a sequence? type because they're not particularly generic 2020-04-02T22:58:07Z aeth: jcowan: I think I'm going to expose all of CL that is not problematic as CL libraries or a CL library. That then means that e.g. Scheme hash tables could be implemented on top of CL hash tables in Scheme, Scheme arrays on top of CL arrays in Scheme, etc., without needing foreign CL. 2020-04-02T22:59:20Z jcowan: iwbni cl-simple-vec and sch vec interop 2020-04-02T22:59:56Z jcowan: I agree on exposing the identifiers in a lib 2020-04-02T23:00:16Z aeth: well, fortunately (and the only time where it's convenient), a CL simple-vector is a T vector so it is literally just a Scheme vector. If you want a typed 1D simple-array you can't call it a simple-vector, you have to say e.g. (simple-array double-float (*)) 2020-04-02T23:00:19Z jcowan: but the underlying data structures are another story' 2020-04-02T23:00:59Z jcowan: The simplest implementation of CL arrays is as their own datatype, but that prevents easy interop of two types that are intensionally the same 2020-04-02T23:01:18Z jcowan: but otherwise you end up with the nasssty special cases, we hates them 2020-04-02T23:01:23Z aeth: jcowan: Well, it's not just a matter of exposing the identifiers. The functions are easy, those are literally just going to become procedures or predicates. The macros, those might involve rewriting. 2020-04-02T23:01:50Z aeth: As in, it might just be easier to write a CL-compatible LOOP rather than try to interoperate with CL macros that are that complicated. 2020-04-02T23:03:47Z aeth: A few functions seem designed to be complicated, though. Especially general accessors like GETHASH. The second value is clearly a predicate, but the first should probably be left alone because it's too general to disambiguate a NIL from () vs. #f 2020-04-02T23:04:29Z aeth: And of course that means that some hash-table-based APIs will be imperfectly wrapped... 2020-04-02T23:07:04Z jcowan: Presumably when you call cl:gethash from Scheme you get back whatever you put there, be it ()/cl:nil or #f 2020-04-02T23:07:15Z jcowan: No conversion is even appropriate 2020-04-02T23:08:10Z aeth: jcowan: No conversion on the primary value, but a conversion on the secondary value is preferable because you might be doing a conversion based on it. The second return value of gethash is essentially presentp 2020-04-02T23:08:33Z jcowan: right, so it should be converted to #t/#f when called from Scheme, that is clear. 2020-04-02T23:08:40Z aeth: jcowan: arguably, you might want to convert the primary value's default to be #f instead of cl:nil as well, but GETHASH does permit a default value 2020-04-02T23:09:01Z jcowan: I think that would be data corruption. What goes in has to be eqv?/eql to what comes out. 2020-04-02T23:09:02Z aeth: That is (gethash :foo hash-table #f) 2020-04-02T23:09:21Z jcowan: That's a principle of Scheme, and de facto of CL as well 2020-04-02T23:09:54Z aeth: jcowan: No, this isn't what goes in/out, this is the default value if presentp is nil (i.e. false) in the event that you don't care about the secondary value, but just want a reasonable default 2020-04-02T23:10:30Z aeth: it is (gethash key hash-table &optional default) which is implicitly (gethash key hash-table &optional (default nil)) which when wrapped is probably better as (gethash key hash-table &optional (default #f)) 2020-04-02T23:11:11Z jcowan: oic now 2020-04-02T23:11:41Z aeth: Some but not all of the default values that are NIL make more sense as #f, so that's an additional wrapping consideration 2020-04-02T23:12:38Z aeth: so, in short, GETHASH is one of the most complicated to wrap because (1) its primary return value should be unchanged, (2) its secondary return value needs to be wrapped as a predicate, and (3) it has a NIL-defaulting optional that in its wrapped API should be #f-defaulting 2020-04-02T23:13:27Z jcowan: enter the Maybe! 2020-04-02T23:13:57Z aeth: oh, and GETHASH has a setter, i.e. a (setf gethash) which has to be wrapped as (set! gethash) which means that I need to write a SETF-as-general-set! 2020-04-02T23:14:02Z aeth: So it even has a prereq 2020-04-02T23:14:30Z aeth: jcowan: I think involving a maybe is something that would belong in a separate library 2020-04-02T23:15:22Z aeth: but little details like this are why I'm not going to go anywhere close to a "1.0" anytime soon 2020-04-02T23:16:12Z jcowan laughs; it was a joke 2020-04-02T23:16:59Z aeth: jcowan: Well, I mean, the real end game is to (1) gradually type the language, (2) expand the gradual type system and encourage its use, (3) rewrite everything as monads 2020-04-02T23:17:02Z aeth: :-p 2020-04-02T23:17:15Z jcowan: AAAAAAAAAAAAA 2020-04-02T23:17:20Z aeth: Haskell? That's just syntactic sugar over the lazy library... 2020-04-02T23:18:14Z aeth: SRFI 534: H-expressions 2020-04-02T23:18:43Z aeth: Riastradh: ^ 2020-04-02T23:19:09Z brendyyn joined #scheme 2020-04-02T23:19:37Z aeth: The real question is how many custom arrow-looking things can Scheme support? 2020-04-02T23:19:46Z Riastradh: aeth: https://mumble.net/~campbell/tmp/Scheme.hs 2020-04-02T23:19:59Z aeth: Riastradh: that, but backwards 2020-04-02T23:20:38Z Riastradh: aeth: sh.emehcS\pmt\llebpmac~\ten.elbmum\\:sptth 2020-04-02T23:21:10Z aeth: Riastradh: wow, a backwards URL is almost like Usenet! 2020-04-02T23:21:51Z aeth: Also, today I learned that sh is the opposite of hs. I guess it makes sense. 2020-04-02T23:22:37Z aeth: Of course I made https://old.reddit.com/r/schemememe/ today specifically for the more goofy stuff (no posts yet). 2020-04-02T23:26:15Z aeth: Wow, new reddit doesn't handle the recursion joke link I posted very well. (1) the main link is the comments section instead of the main link and (2) it opens each click in a new tab so it's not tail recursive optimized 2020-04-02T23:29:53Z aeth: I added a comment about this important issue... https://www.reddit.com/r/schemememe/comments/ftx00c/recursion/ 2020-04-02T23:32:25Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-02T23:38:00Z xelxebar joined #scheme 2020-04-02T23:45:43Z klovett_ joined #scheme 2020-04-02T23:48:34Z klovett quit (Ping timeout: 256 seconds) 2020-04-02T23:52:37Z epony quit (Quit: reconf) 2020-04-02T23:55:01Z epony joined #scheme 2020-04-02T23:57:15Z TCZ joined #scheme 2020-04-02T23:57:35Z cibs quit (Ping timeout: 250 seconds) 2020-04-02T23:58:40Z cibs joined #scheme 2020-04-03T00:37:37Z TCZ quit (Quit: Leaving) 2020-04-03T01:03:21Z lockywolf joined #scheme 2020-04-03T01:16:56Z choas joined #scheme 2020-04-03T01:21:39Z choas quit (Ping timeout: 250 seconds) 2020-04-03T01:28:46Z lockywolf_ joined #scheme 2020-04-03T01:32:01Z lockywolf quit (Ping timeout: 264 seconds) 2020-04-03T01:32:14Z lritter quit (Ping timeout: 240 seconds) 2020-04-03T01:45:16Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-03T01:48:17Z Lambdajack is now known as DKordic 2020-04-03T01:50:19Z lockywolf__ joined #scheme 2020-04-03T01:53:37Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-03T02:00:56Z amerigo quit (Quit: Connection closed for inactivity) 2020-04-03T02:06:18Z lockywolf_ joined #scheme 2020-04-03T02:08:46Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-03T02:09:12Z aeth: Well, this is weird. I installed the Linguist (github-linguist) package that Github and Gitlab use to try to avoid more false positives by using github-linguist --breakdown 2020-04-03T02:09:24Z aeth: It looks like Linguist is hardcoded to ignore examples/* 2020-04-03T02:09:35Z aeth: like... why? 2020-04-03T02:09:54Z aeth: It doesn't ignore tests/* or anything else that might be worth ignoring. Just the examples. 2020-04-03T02:12:21Z terpri quit (Remote host closed the connection) 2020-04-03T02:20:33Z erkin: Oh my god this was absolutely tedious even with layers upon layers of macros https://github.com/erkin/SCForms/blob/master/src/api/basic.sls 2020-04-03T02:21:10Z aeth: Oh no, I added Emacs modeline to the Scheme files to fix even more tooling problems, but there's still more autodetection. Apparently a define-library in a .sld makes my file "Chibi" (to Geiser?) 2020-04-03T02:21:59Z aeth: erkin: looks like you could do more macros! 2020-04-03T02:22:41Z erkin: Maybe I can put the shared object call `xforms' behind a parameter. 2020-04-03T02:40:26Z pigajunior quit (Ping timeout: 265 seconds) 2020-04-03T02:48:11Z torbo joined #scheme 2020-04-03T03:00:18Z choas joined #scheme 2020-04-03T03:04:47Z choas quit (Ping timeout: 250 seconds) 2020-04-03T03:05:26Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-03T03:06:36Z lockywolf joined #scheme 2020-04-03T03:08:02Z lockywolf quit (Max SendQ exceeded) 2020-04-03T03:09:06Z lockywolf joined #scheme 2020-04-03T03:09:50Z lockywolf quit (Remote host closed the connection) 2020-04-03T03:10:15Z lockywolf joined #scheme 2020-04-03T03:11:13Z lockywolf quit (Max SendQ exceeded) 2020-04-03T03:11:43Z lockywolf joined #scheme 2020-04-03T03:22:23Z madage quit (Ping timeout: 240 seconds) 2020-04-03T03:26:55Z skapata quit (Remote host closed the connection) 2020-04-03T03:27:39Z terpri joined #scheme 2020-04-03T03:35:38Z madage joined #scheme 2020-04-03T03:38:56Z terpri quit (Remote host closed the connection) 2020-04-03T03:40:23Z terpri joined #scheme 2020-04-03T03:48:26Z terpri quit (Remote host closed the connection) 2020-04-03T03:53:11Z terpri joined #scheme 2020-04-03T03:57:04Z pilne quit (Quit: Tis but a scratch) 2020-04-03T03:58:21Z terpri quit (Remote host closed the connection) 2020-04-03T03:58:49Z terpri joined #scheme 2020-04-03T04:00:26Z terpri_ joined #scheme 2020-04-03T04:04:26Z terpri quit (Ping timeout: 240 seconds) 2020-04-03T04:12:28Z ArthurStrong joined #scheme 2020-04-03T04:14:30Z erkin: `define-values' is surprisingly difficult to implement. 2020-04-03T04:15:45Z Riastradh: I think you pretty much have to do (define x) (define y) (define z) (let ... (set! x ...) (set! y ...) (set! z ...)). 2020-04-03T04:17:53Z erkin: How do I incorporate `call-with-values' into that though? 2020-04-03T04:18:17Z sz0 quit 2020-04-03T04:18:34Z sz0 joined #scheme 2020-04-03T04:18:58Z gwatt: erkin: which scheme are you using? 2020-04-03T04:19:02Z erkin: Any R6RS 2020-04-03T04:19:17Z Riastradh: Doesn't R6RS have define-values natively? 2020-04-03T04:19:22Z erkin: Nope. 2020-04-03T04:19:26Z Riastradh: bummer 2020-04-03T04:19:27Z erkin: I was surprised too. 2020-04-03T04:19:33Z aeth: Well, define-values is derived in 7.3... but I'll probably break hygiene in implementing it, personally. At least globally, it's fine. Locally, that might cause more of an issue? It looks like it has a local version... 2020-04-03T04:20:09Z Riastradh: Oh, right, it's even trickier if you want it to work with the stupid definitions-then-expressions rule in a body. 2020-04-03T04:20:54Z aeth: I didn't even notice it until I checked just now. It has a (let () (define-values ...) ...) in 5.3.3. Very well hidden :-p 2020-04-03T04:21:17Z aeth: that's one of the reasons why I'm naming implementing r7rs.pdf 0.0.3 instead of 0.1 2020-04-03T04:21:21Z aeth: very easy to miss things 2020-04-03T04:21:21Z Riastradh: I forget whether that was kept in the R6RS. 2020-04-03T04:21:40Z gwatt: Riastradh: r6rs libraries also can't set! exported identifiers 2020-04-03T04:22:05Z aeth: heh 2020-04-03T04:22:44Z aeth: I'll probably let you set! exported identifiers, but given how I implement the "global" environment, that won't do what you think it will do, since the "global" environment is just a lexical closure. The original binding will still exist. 2020-04-03T04:24:05Z aeth: This actually reduces the problem of unhygienic macros (as does r6rs's solution) 2020-04-03T04:24:06Z erkin: http://pasterack.org/pastes/8146 2020-04-03T04:24:25Z erkin: `syntax-rules' solution I adapted from a SchemeWiki snippet. 2020-04-03T04:24:37Z turtleman quit (Ping timeout: 256 seconds) 2020-04-03T04:25:31Z aeth: erkin: Have you seen define-values on page 70 (the index says 69, it's an error) of r7rs in section 7.3? 2020-04-03T04:26:11Z aeth: I mean, r7rs not r6rs, but syntax-rules is syntax-rules 2020-04-03T04:27:04Z erkin: That's fairly long winded. 2020-04-03T04:27:17Z erkin: But I think I've seen that variation before. 2020-04-03T04:27:36Z erkin: Although in `syntax-case'. 2020-04-03T04:29:29Z erkin: I wish I had something other than Guile with me right now. Guile has terrible error messages. 2020-04-03T04:29:59Z gwatt: This is what I came up with: https://pastebin.com/ncHdMSe6 2020-04-03T04:30:00Z erkin: Racket's #lang r6rs is borked for reasons I don't understand and the library I'm using has no Ypsilon support. 2020-04-03T04:30:13Z gwatt: It's valid for definition context and you can export the identifiers from libraries 2020-04-03T04:30:14Z erkin: Can you use something other than pastebin.com? 2020-04-03T04:30:15Z aeth: Most of my experience is with Racket, which is mostly just contract-violation ime 2020-04-03T04:30:18Z aeth: Thanks, Racket. 2020-04-03T04:30:26Z aeth: I feel like I'm breaking the law every time I make a mistake in Racket... 2020-04-03T04:31:48Z erkin: I really appreciate Racket's contracts because I dread running a large program and receiving 'car: Wrong type argument in position 1' and nothing else. 2020-04-03T04:32:25Z gwatt: https://termbin.com/21on 2020-04-03T04:32:35Z erkin: Thank you. 2020-04-03T04:32:36Z aeth: erkin: I'm used to getting a SLIME backtrace, though. 2020-04-03T04:32:41Z erkin: Pastebin.com is blocked in my country. 2020-04-03T04:33:01Z aeth: Schemes need SLIME or SLIME-like support. 2020-04-03T04:33:01Z gwatt: ah, interesting 2020-04-03T04:33:01Z erkin: Oh yeah, the `generate-temporaries' version. 2020-04-03T04:35:02Z erkin: The `syntax-rules' solution I posted is stupidly simple so I'm certain there's a catch. 2020-04-03T04:35:20Z erkin: Because every implementation whose source I checked a had many times larger implementation. 2020-04-03T04:35:59Z erkin: -a 2020-04-03T04:36:10Z erkin: That includes the R7RS specification. 2020-04-03T04:47:03Z gravicappa joined #scheme 2020-04-03T05:00:33Z choas joined #scheme 2020-04-03T05:04:57Z terpri_ quit (Ping timeout: 265 seconds) 2020-04-03T05:05:20Z choas quit (Ping timeout: 256 seconds) 2020-04-03T05:12:54Z erkin: Found the problem. The expansion violates the "definitions before expressions" rule. 2020-04-03T05:14:53Z Riastradh: stupid rule 2020-04-03T05:16:15Z lockywolf_ joined #scheme 2020-04-03T05:17:43Z lockywolf__ joined #scheme 2020-04-03T05:18:19Z fadein quit (Ping timeout: 260 seconds) 2020-04-03T05:18:34Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-03T05:18:43Z lockywolf__ quit (Max SendQ exceeded) 2020-04-03T05:19:19Z lockywolf__ joined #scheme 2020-04-03T05:20:29Z fadein joined #scheme 2020-04-03T05:20:43Z lockywolf__ quit (Max SendQ exceeded) 2020-04-03T05:21:13Z lockywolf__ joined #scheme 2020-04-03T05:21:26Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-03T05:21:33Z erkin: IIRC Guile also had its compiler built with this assumption but a recent-ish release added a hack to circumvent it. 2020-04-03T05:21:39Z ArthurStrong quit (Quit: leaving) 2020-04-03T05:22:02Z torbo quit (Remote host closed the connection) 2020-04-03T05:22:03Z erkin: It checks the scope for `define's and marks the last one. Then it converts every expression in the scope until that point into a definition. 2020-04-03T05:22:36Z erkin: ie (foo) (bar) (define baz quux) => (define _ (foo)) (define _ (bar)) (define baz quux) 2020-04-03T05:25:47Z erkin: Maybe I should concede and use enumerations for this after all. 2020-04-03T05:26:17Z erkin: It really shouldn't be that hard to assign a range of numbers to a range of symbols. 2020-04-03T05:31:23Z fadein quit (Ping timeout: 260 seconds) 2020-04-03T05:34:16Z drakonis quit (Quit: WeeChat 2.7.1) 2020-04-03T05:37:52Z Oddity quit (Read error: Connection reset by peer) 2020-04-03T05:38:36Z fadein joined #scheme 2020-04-03T05:39:19Z erkin: Screw it, I'll make an ugly multi-variable define with (map (lambda (a b) #'(define a b)) ids vals). 2020-04-03T05:46:12Z fadein quit (Ping timeout: 256 seconds) 2020-04-03T05:46:55Z Oddity joined #scheme 2020-04-03T05:48:02Z fadein joined #scheme 2020-04-03T05:52:55Z xelxebar_ joined #scheme 2020-04-03T06:01:56Z ecraven quit (Quit: bye) 2020-04-03T06:02:16Z ecraven joined #scheme 2020-04-03T06:04:14Z gnomon quit (Ping timeout: 240 seconds) 2020-04-03T06:13:55Z terpri joined #scheme 2020-04-03T06:26:09Z gnomon joined #scheme 2020-04-03T06:27:46Z CyDefect joined #scheme 2020-04-03T06:28:21Z terpri quit (Remote host closed the connection) 2020-04-03T06:28:45Z terpri joined #scheme 2020-04-03T06:51:34Z jobol joined #scheme 2020-04-03T07:01:03Z mr_machina quit (Remote host closed the connection) 2020-04-03T07:16:04Z choas joined #scheme 2020-04-03T07:39:26Z ggole joined #scheme 2020-04-03T07:55:52Z civodul joined #scheme 2020-04-03T08:17:32Z v_m_v joined #scheme 2020-04-03T08:53:57Z Naptra joined #scheme 2020-04-03T09:00:52Z gmaggior joined #scheme 2020-04-03T09:17:09Z zig joined #scheme 2020-04-03T09:28:19Z v_m_v quit (Remote host closed the connection) 2020-04-03T09:28:51Z xyz123 joined #scheme 2020-04-03T09:34:24Z xyz123 quit (Remote host closed the connection) 2020-04-03T09:35:19Z zig: hello schemers! 2020-04-03T09:36:10Z aeth: and schemememers 2020-04-03T09:40:52Z zig: :) 2020-04-03T09:43:51Z zig: I did not know they were as much schemememers 2020-04-03T09:44:11Z zig: someone even dropped a godwin 2020-04-03T09:44:25Z aeth: well, most scheme memes are SICP memes 2020-04-03T09:45:13Z zig: I was thinking about the re-post called 'Recursion'... 2020-04-03T09:55:09Z lockywolf__ quit (Ping timeout: 250 seconds) 2020-04-03T10:04:44Z v_m_v joined #scheme 2020-04-03T10:16:39Z TCZ joined #scheme 2020-04-03T10:29:18Z zig: seems like I have still enough brain cells to do memes... 2020-04-03T10:39:36Z pilne joined #scheme 2020-04-03T10:40:34Z TCZ quit (Quit: Leaving) 2020-04-03T10:41:10Z lockywolf__ joined #scheme 2020-04-03T10:42:15Z lockywolf__ quit (Max SendQ exceeded) 2020-04-03T10:42:46Z lockywolf__ joined #scheme 2020-04-03T10:43:17Z xkapastel joined #scheme 2020-04-03T10:43:36Z lockywolf__ quit (Remote host closed the connection) 2020-04-03T10:44:02Z lockywolf__ joined #scheme 2020-04-03T10:48:26Z TCZ joined #scheme 2020-04-03T10:56:11Z Oddity quit (Ping timeout: 256 seconds) 2020-04-03T11:02:23Z Oddity joined #scheme 2020-04-03T11:13:24Z pigajunior joined #scheme 2020-04-03T11:14:31Z r0kc4t_ quit (Remote host closed the connection) 2020-04-03T11:24:10Z pigajunior quit (Quit: WeeChat 1.9.1) 2020-04-03T11:28:42Z v_m_v quit (Remote host closed the connection) 2020-04-03T11:33:10Z choas quit (Ping timeout: 256 seconds) 2020-04-03T11:33:28Z choas joined #scheme 2020-04-03T11:59:58Z hugh_marera joined #scheme 2020-04-03T12:23:55Z jcowan: The thing with the syntax-rules implementation of define-values is that it forces the values to be reified 2020-04-03T12:44:45Z luni joined #scheme 2020-04-03T12:52:28Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-03T12:52:36Z lockywolf__ quit (Remote host closed the connection) 2020-04-03T12:53:03Z lockywolf__ joined #scheme 2020-04-03T13:10:07Z gnomon quit (Ping timeout: 260 seconds) 2020-04-03T13:16:37Z gnomon joined #scheme 2020-04-03T13:22:17Z choas quit (Ping timeout: 250 seconds) 2020-04-03T13:30:36Z lockywolf__ quit (Remote host closed the connection) 2020-04-03T13:32:09Z lockywolf joined #scheme 2020-04-03T13:33:01Z choas joined #scheme 2020-04-03T13:33:07Z lockywolf quit (Remote host closed the connection) 2020-04-03T13:33:47Z TCZ quit (Quit: Leaving) 2020-04-03T13:57:06Z lavaflow quit (Ping timeout: 265 seconds) 2020-04-03T14:01:45Z xkapastel joined #scheme 2020-04-03T14:02:58Z dgtlcmo joined #scheme 2020-04-03T14:10:57Z f8l quit (Remote host closed the connection) 2020-04-03T14:12:18Z f8l joined #scheme 2020-04-03T14:14:16Z luni quit (Remote host closed the connection) 2020-04-03T14:21:07Z hugh_marera quit (Quit: hugh_marera) 2020-04-03T14:23:03Z dgtlcmo: Found out that MIT Scheme has a debug Stepper. Really useful! 2020-04-03T14:24:17Z turtleman joined #scheme 2020-04-03T14:27:49Z srandon111 quit (Ping timeout: 264 seconds) 2020-04-03T14:27:57Z zig: neat 2020-04-03T14:33:24Z hugh_marera joined #scheme 2020-04-03T14:36:46Z choas quit (Ping timeout: 256 seconds) 2020-04-03T14:38:01Z turtleman quit (Ping timeout: 264 seconds) 2020-04-03T14:38:12Z luni joined #scheme 2020-04-03T14:39:16Z zig: aeth: look again ;) 2020-04-03T14:40:01Z TCZ joined #scheme 2020-04-03T14:40:47Z srandon111 joined #scheme 2020-04-03T14:41:26Z luni: Hi all \O/ 2020-04-03T14:47:40Z zig: Oh! I have been slow moded or something I can not post more memes :( 2020-04-03T14:50:25Z zig: nvm, that was because of umatrix ban. 2020-04-03T14:57:11Z brendyyn quit (Ping timeout: 250 seconds) 2020-04-03T14:59:54Z mr_machina joined #scheme 2020-04-03T15:02:07Z jobol quit (Quit: Leaving) 2020-04-03T15:04:46Z zaifir: luni: wb, hope you're well! 2020-04-03T15:09:07Z luni: zaifir: yes, thank you 2020-04-03T15:11:01Z choas joined #scheme 2020-04-03T15:16:24Z h11 quit (Read error: Connection reset by peer) 2020-04-03T15:16:48Z h11 joined #scheme 2020-04-03T15:17:44Z hugh_marera quit (Remote host closed the connection) 2020-04-03T15:17:58Z hugh_marera joined #scheme 2020-04-03T15:17:58Z dsp quit (Ping timeout: 256 seconds) 2020-04-03T15:18:06Z dsp joined #scheme 2020-04-03T15:18:15Z hugh_marera quit (Client Quit) 2020-04-03T15:18:33Z nerdypepper quit (Ping timeout: 256 seconds) 2020-04-03T15:19:23Z nerdypepper joined #scheme 2020-04-03T15:31:58Z pluplog joined #scheme 2020-04-03T15:48:44Z lritter joined #scheme 2020-04-03T15:57:40Z tohoyn joined #scheme 2020-04-03T16:04:46Z gmaggior quit (Quit: Leaving) 2020-04-03T16:13:01Z gnomon quit (Ping timeout: 250 seconds) 2020-04-03T16:17:10Z luni quit (Remote host closed the connection) 2020-04-03T16:19:52Z gnomon joined #scheme 2020-04-03T16:20:49Z mdhughes quit (Ping timeout: 252 seconds) 2020-04-03T16:22:20Z dozzie is now known as dozzie_ 2020-04-03T16:26:34Z fiddlerwoaroof_ is now known as fiddlerwoaroof 2020-04-03T16:30:06Z mdhughes joined #scheme 2020-04-03T16:31:23Z copec quit (*.net *.split) 2020-04-03T16:31:23Z akkad quit (*.net *.split) 2020-04-03T16:31:23Z cky quit (*.net *.split) 2020-04-03T16:31:29Z akkad joined #scheme 2020-04-03T16:31:39Z cky joined #scheme 2020-04-03T16:31:43Z copec joined #scheme 2020-04-03T16:32:57Z lavaflow joined #scheme 2020-04-03T16:39:34Z drakonis joined #scheme 2020-04-03T16:39:34Z emacsomancer quit (Read error: Connection reset by peer) 2020-04-03T16:39:53Z mdhughes: https://downforeveryoneorjustme.com/community.schemewiki.org 2020-04-03T16:42:58Z emacsomancer joined #scheme 2020-04-03T16:44:13Z klovett_ is now known as klovett 2020-04-03T16:54:12Z tohoyn quit (Remote host closed the connection) 2020-04-03T16:54:18Z Oddity quit (Ping timeout: 256 seconds) 2020-04-03T16:59:20Z tohoyn joined #scheme 2020-04-03T16:59:40Z Oddity joined #scheme 2020-04-03T17:11:33Z wasamasa: ohno 2020-04-03T17:14:40Z tohoyn quit (Quit: Lรคhdรถssรค) 2020-04-03T17:19:49Z TCZ quit (Quit: Leaving) 2020-04-03T17:29:06Z Tirifto joined #scheme 2020-04-03T17:53:46Z dozzie_ is now known as dozzie 2020-04-03T18:04:10Z srandon111 quit (Ping timeout: 256 seconds) 2020-04-03T18:17:17Z srandon111 joined #scheme 2020-04-03T18:17:27Z pluplog quit (Read error: Connection reset by peer) 2020-04-03T18:18:26Z pluplog joined #scheme 2020-04-03T18:18:50Z stepnem quit (Read error: Connection reset by peer) 2020-04-03T18:21:02Z stepnem joined #scheme 2020-04-03T18:39:06Z Tirifto quit (Remote host closed the connection) 2020-04-03T18:44:34Z CyDefect quit (Remote host closed the connection) 2020-04-03T18:45:53Z pinoaffe1 joined #scheme 2020-04-03T18:45:54Z pinoaffe1: is it possible to embed PCRE style regexes in an SRE irregex? 2020-04-03T18:50:41Z ufaucernio joined #scheme 2020-04-03T18:51:57Z CyDefect joined #scheme 2020-04-03T18:59:50Z pounce joined #scheme 2020-04-03T19:06:46Z Tirifto joined #scheme 2020-04-03T19:08:04Z ufaucernio quit (Ping timeout: 265 seconds) 2020-04-03T19:31:17Z aeth: oh, nice, someone filled /r/schemememe with Schemememes 2020-04-03T19:33:01Z CyDefect quit (Quit: Verlassend) 2020-04-03T19:33:38Z CyDefect joined #scheme 2020-04-03T19:36:29Z lucasb joined #scheme 2020-04-03T19:52:14Z pluplog quit (Remote host closed the connection) 2020-04-03T19:52:18Z jcowan: pinoaffe1: Depends on what version of irregex you are on. More recent ones, no. 2020-04-03T19:52:33Z pinoaffe1: jcowan: okay, that's a shame 2020-04-03T19:55:46Z jcowan: Not really. The older engine compiled everything to pcre, so it was trivial. The newer engine executes the combinators directly, so it would require to decompile the pcre into combinators. Which is possible, just annoying to write. 2020-04-03T20:02:28Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-03T20:06:08Z zaifir: In any case, regexes aren't all they've been cracked up to be by the Perl/Ruby/etc. cabal. 2020-04-03T20:07:00Z TCZ joined #scheme 2020-04-03T20:08:29Z pinoaffe1: jcowan: okay, that's a good tradeoff, but it'd just be practical to be able to mix and match, especially when rewriting big PCRE regexes into SRE syntax 2020-04-03T20:09:02Z jcowan: Oh, I think they are if you stick to Ritchie's originals without backtracking. 2020-04-03T20:09:35Z jcowan: Of course there are limits to what you can do which you shouldn't overstep 2020-04-03T20:11:37Z zaifir: Agreed. 2020-04-03T20:11:53Z Tirifto quit (Remote host closed the connection) 2020-04-03T20:13:34Z notzmv: lul 2020-04-03T20:13:40Z notzmv: oops wrong channel 2020-04-03T20:14:54Z zaifir quit (Quit: Eadem mutata resurgo.) 2020-04-03T20:19:37Z zaifir joined #scheme 2020-04-03T20:20:15Z Tirifto joined #scheme 2020-04-03T20:25:00Z aeth: regex is sort of like the companion to format strings... anything complicated is write-only but anything complicated is also one line vs 30 2020-04-03T20:26:01Z zaifir: aeth: ... minutes to understand next time you read it. 2020-04-03T20:27:40Z jao joined #scheme 2020-04-03T20:29:30Z luni joined #scheme 2020-04-03T20:30:37Z zig: sre are more readable than pcre 2020-04-03T20:30:55Z zig: but it takes time to get used to it. 2020-04-03T20:33:22Z zig: at least sre has proper editor support and one can see where grouping happens, unlike pcre 2020-04-03T20:33:44Z zaifir: zig: Holy hell, where do you find all the schemememes? 2020-04-03T20:34:30Z zig: zaifir: x') 2020-04-03T20:34:35Z ggole quit (Quit: Leaving) 2020-04-03T20:34:46Z zig: I take that as a compliment :) 2020-04-03T20:39:08Z xkapastel joined #scheme 2020-04-03T20:42:00Z aeth: I think this is the best Schemememe... r7rs-huge or r8rs... https://old.reddit.com/r/schemememe/comments/fu5yzk/dilemma/ 2020-04-03T20:42:14Z aeth: In 2078, we'll have r7rs-titan 2020-04-03T20:42:27Z zaifir: I think "r7rs-huge" has great meme potential. 2020-04-03T20:42:35Z aeth: no one will want to make an r8rs because it will restart the process 2020-04-03T20:42:57Z zaifir: grrrr8rs 2020-04-03T20:43:33Z aeth: r8rs would be like the sequel to a game that had a dozen expansions (e.g. any The Sims game). 2020-04-03T20:44:24Z aeth: Someone needs to make fake game-style cover art for the r7rs editions 2020-04-03T20:44:47Z zaifir: "R6RS is like the Matrix sequels." (seen on #lisp) 2020-04-03T20:45:20Z zaifir: Ooh, that sounds fun. 2020-04-03T20:46:06Z aeth: Or make a fake Steam page in the style of a game that has a ton of DLC like https://store.steampowered.com/dlc/203770/Crusader_Kings_II/ 2020-04-03T20:46:33Z aeth: the real question is, are SRFIs the DLC or are r7rs-large editions the DLC? 2020-04-03T20:49:00Z zaifir: We rebrand the SRFIs as new R7RS content and sell them a second time! 2020-04-03T20:50:40Z zaifir: SRFI 195: Loot boxes 2020-04-03T20:52:25Z aeth: You have a 5% chance of importing the library you want to import and a 95% chance of importing some other library. Each attempt costs $5. 2020-04-03T20:52:57Z aeth: but, hey, some of the other libraries are useful, too! 2020-04-03T20:54:46Z aeth: (50% of the libraries are from node, running in an embedded JS interpreter) 2020-04-03T20:54:50Z terpri_ joined #scheme 2020-04-03T20:56:11Z zaifir: Unfortunately, OpenGL would be a dependency in order to display a fancy animation of the box being opened when you call (unbox ...). How else to keep the hackers salivating for more? 2020-04-03T20:57:17Z terpri quit (Ping timeout: 252 seconds) 2020-04-03T20:58:50Z evdubs quit (Quit: Leaving) 2020-04-03T21:00:19Z evdubs joined #scheme 2020-04-03T21:03:48Z Tirifto quit (Remote host closed the connection) 2020-04-03T21:24:16Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-03T21:36:54Z turtleman joined #scheme 2020-04-03T21:47:36Z CyDefect quit (Remote host closed the connection) 2020-04-03T21:55:08Z zig: I re-shared (because I could not crosspost) the SWE meme, already 10 points: https://www.reddit.com/r/ProgrammerHumor/comments/fug2o0/lost_art_of_software_engineering/?utm_source=share&utm_medium=web2x 2020-04-03T21:55:09Z rudybot: https://teensy.info/VkKAN2Ownp 2020-04-03T21:58:24Z ufaucernio joined #scheme 2020-04-03T21:59:13Z ufaucernio quit (Client Quit) 2020-04-03T21:59:29Z ufaucernio joined #scheme 2020-04-03T22:16:45Z TCZ quit (Quit: Leaving) 2020-04-03T22:19:55Z Naptra quit (Remote host closed the connection) 2020-04-03T22:25:24Z gravicappa quit (Ping timeout: 256 seconds) 2020-04-03T22:48:24Z xlei quit (Ping timeout: 256 seconds) 2020-04-03T22:50:09Z xlei joined #scheme 2020-04-03T22:51:40Z stepnem quit (Ping timeout: 265 seconds) 2020-04-03T22:52:21Z stepnem joined #scheme 2020-04-03T22:58:57Z zerous joined #scheme 2020-04-03T23:23:38Z skapata joined #scheme 2020-04-03T23:24:55Z TCZ joined #scheme 2020-04-03T23:30:00Z partyclicker quit (Ping timeout: 256 seconds) 2020-04-03T23:37:11Z notzmv quit (Ping timeout: 250 seconds) 2020-04-03T23:38:36Z notzmv joined #scheme 2020-04-03T23:41:23Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-03T23:45:57Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-03T23:49:17Z xelxebar joined #scheme 2020-04-03T23:58:56Z xelxebar_ quit (Remote host closed the connection) 2020-04-04T00:12:40Z lritter quit (Quit: Leaving) 2020-04-04T00:13:32Z luni quit (Remote host closed the connection) 2020-04-04T00:24:09Z klovett_ joined #scheme 2020-04-04T00:26:23Z webshinra quit (Read error: Connection reset by peer) 2020-04-04T00:27:15Z klovett quit (Ping timeout: 260 seconds) 2020-04-04T00:47:37Z brendyyn joined #scheme 2020-04-04T00:59:47Z r1b quit (Ping timeout: 240 seconds) 2020-04-04T01:02:00Z r1b joined #scheme 2020-04-04T01:19:24Z ufaucernio quit (Quit: Quit) 2020-04-04T01:30:00Z titanbiscuit quit (Quit: ZNC 1.7.4 - https://znc.in) 2020-04-04T01:30:23Z titanbiscuit joined #scheme 2020-04-04T01:48:01Z titanbiscuit quit (Quit: ZNC 1.7.4 - https://znc.in) 2020-04-04T01:48:21Z titanbiscuit joined #scheme 2020-04-04T01:54:14Z boredmanicrobot joined #scheme 2020-04-04T02:03:45Z TCZ quit (Quit: Leaving) 2020-04-04T02:21:45Z boredmanicrobot quit (Quit: boredmanicrobot) 2020-04-04T02:27:09Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-04T03:06:26Z mdhughes: zaifir: R6RS/Matrix sequels: Better and less stupid premises than the previous, but shunned by novelty-averse chuds? Not the analogy I'd use but it works. 2020-04-04T03:07:17Z aeth: Imo, Matrix 2 would've been fine if Matrix 3 wasn't bad, but Matrix 2 ended on a cliffhanger and Matrix 3 was pretty bad. 2020-04-04T03:07:30Z aeth: Remove that cliffhanger and all the hate would go to Matrix 3, not Matrix 2&3 2020-04-04T03:09:29Z aeth: I guess R6RS's exception system is the Matrix 3 in this analogy? 2020-04-04T03:09:55Z mdhughes: I mostly resent Matrix 1 because A) the battery line is so stupid it uncreates time, B) Keanu can't act or fight, which is a problem in a fighting movie, C) I'd seen every action scene done better in Ghost in the Shell. 2020-04-04T03:10:23Z aeth: Well, A doesn't have to be true, it just has to be what they believed. 2020-04-04T03:10:30Z mdhughes: R7RS-small is the cliffhanger. All the AniMatrix things are the SRFIs. 2020-04-04T03:11:39Z aeth: r7rs still has a chance to be The Matrix rnrs 2020-04-04T03:11:47Z aeth: adding matrices to the language hasn't been rejected yet 2020-04-04T03:13:53Z aeth: I wonder what point in the r7rs-large ballot we can definitively say that that won't happen 2020-04-04T03:13:53Z erkin: mdhughes: FWIW the battery thing was added later on. 2020-04-04T03:14:26Z mdhughes: Or they said that later on, to deal with everyone with any education laughing at them. 2020-04-04T03:14:33Z erkin: IIRC it was originally the case that computers use humans as processors, but they decided the audience is too unfamiliar with how computers work at the time, so they replaced-- 2020-04-04T03:14:39Z erkin: Yeah, I'm sure you've heard it then. 2020-04-04T03:15:45Z aeth: mdhughes: Do they ever go into detail about how the human education system works, inside or outside of the Matrix? It just has to be plausible to humans inside the movie universe since it's an in-universe explanation. 2020-04-04T03:15:58Z erkin: oh my goddess you madlads did end up making /r/schemememe 2020-04-04T03:17:12Z aeth: yes, schemememememememememememememe... is now a thing, thanks to tail recursion 2020-04-04T03:17:15Z mdhughes: There's no detail. There's what you see: An action flick recycled from Ghost in the Shell and bits of other films. They get a little better, but it's never smart. 2020-04-04T03:18:23Z aeth: mdhughes: The Matrix 1 is, from a modern perspective, not particularly interesting, but that's because it created or popularized so many clichรฉs and tropes, including the whole slow motion bullet dodging that was overdone in movies and on TV shows afterwards. 2020-04-04T03:18:54Z aeth: I believe the trope is called "Seinfeld is unfunny", for similar reasons 2020-04-04T03:19:00Z mdhughes: Yes, but almost all of that was shot-for-shot remakes of previous work. "Popularized" = colonized. 2020-04-04T03:20:29Z erkin: That trope hit me hard when I tried to watch old James Bond films. 2020-04-04T03:21:12Z aeth: well, the later classic James Bond ones got incredibly campy 2020-04-04T03:22:05Z aeth: Plus, I think most people have seen Austin Powers before the old James Bond films at this point. 2020-04-04T03:24:59Z aeth: mdhughes: There are very few original ideas. Most of the times "popularizing" = "better execution". 2020-04-04T03:25:21Z mdhughes: That's what people with no original ideas say. 2020-04-04T03:26:04Z aeth: There are very few original ideas... *and* most original ideas are very bad, which is why they seem to be original (although many people probably had and discarded those ideas) 2020-04-04T03:27:15Z mdhughes: I disagree, but that's because I actually read weird outsider books and watch indie films, and most people just read James Patterson and watch Avengers sequels. 2020-04-04T03:27:18Z aeth: And besides, you don't want complete originality because people come to something with prior expectations. (That's probably why people complain about Scheme a lot.) 2020-04-04T03:28:32Z aeth: The last Marvel movie I saw was Iron Man 2 and my primary form of media is playing obscure computer games. 2020-04-04T03:29:08Z aeth: I'm still not going to deny that Marvel Studios gives a lot of people exactly what they want. 2020-04-04T03:29:37Z mdhughes: Soโ€ฆ that's R7RS-large, where popularity determines an endless sequel train? 2020-04-04T03:30:02Z mdhughes: On-topic, that's Numberwang! 2020-04-04T03:30:09Z aeth: r7rs-large is the sequel... hence the 7 2020-04-04T03:30:27Z mdhughes: Anyway, I'm off to videogames and work. 2020-04-04T03:30:40Z aeth: bye 2020-04-04T03:31:14Z aeth: I, for one, enjoy the Lisp ~cinematic~ programmatic universe. 2020-04-04T03:31:40Z aeth: I can't wait for the one where they all assemble on one team. ;-) 2020-04-04T03:34:15Z aeth: That idea's been done before in the comic on this webpage, though: http://landoflisp.com/ 2020-04-04T03:34:20Z aeth: a bit dated because it includes Arc... 2020-04-04T03:43:33Z erkin: Was Arc used for anything at all that isn't hosting the Orange Website? 2020-04-04T03:44:02Z drakonis: someone made a orange website clone in arc 2020-04-04T03:44:19Z erkin: Well... 2020-04-04T03:45:42Z drakonis: arc is irrelevant 2020-04-04T03:45:48Z boredmanicrobot joined #scheme 2020-04-04T03:45:55Z boredmanicrobot quit (Client Quit) 2020-04-04T03:46:28Z drakonis: there's 4 repositories that have arc in it 2020-04-04T03:46:40Z drakonis: two are arc community owned and two dont even have arc as a main language 2020-04-04T03:46:55Z aeth: This comes up from time to time, but there are pretty much two types of Arc projects on places like Github: (1) implementations of Arc and (2) false positives because Linguist is a terrible way to auto-identify programming languages 2020-04-04T03:47:15Z aeth: s/pretty much// 2020-04-04T03:47:18Z drakonis: yes 2020-04-04T03:47:29Z drakonis: so arc is non existent in real life 2020-04-04T03:47:35Z drakonis: can i call paul graham a hack? 2020-04-04T03:47:40Z aeth: To be fair, maybe 90% of Schemes are the same as Arc 2020-04-04T03:47:49Z aeth: Where the only time you'll see it is in the implementation themselves. 2020-04-04T03:48:14Z aeth: That doesn't mean they're not being used, of course. The author might have a specific use (like HN in the case of Arc) and use it there, they just have no community. 2020-04-04T03:49:33Z SGASAU` quit (Quit: reboot) 2020-04-04T03:50:32Z erkin: drakonis: Yes. 2020-04-04T03:50:49Z drakonis: paul graham is a hack, because holy crap he wrote so much about lisp but he did nothing to help 2020-04-04T03:51:30Z aeth: It's probably hard to stay motivated when you have a giant pile of money. 2020-04-04T03:51:36Z Riastradh: ...if you thought there was a lot of hot air just about Lisp, uh... 2020-04-04T03:51:49Z drakonis: well he wrote a lot of hot air but never did anything relevant 2020-04-04T03:52:43Z aeth: His technical writings were relevant, he just stopped around the time of the Arc release, including writing about Arc, which probably is the real thing that killed Arc beyond its lack of features and Clojure being released around the same time. 2020-04-04T03:53:49Z aeth: (If you don't think that technical writing counts, then you cannot complain about all of these undocumented or barely-documented Lisp libraries out there.) 2020-04-04T03:54:17Z drakonis: well, technical writing? 2020-04-04T03:54:34Z aeth: http://paulgraham.com/rootsoflisp.html 2020-04-04T03:54:35Z aeth: http://www.paulgraham.com/onlisp.html 2020-04-04T03:54:36Z aeth: etc. 2020-04-04T03:54:37Z drakonis: i'm saying that it quietly released 2020-04-04T03:54:41Z drakonis: sure that counts 2020-04-04T03:55:07Z drakonis: arc is just a racket lang it seems 2020-04-04T03:55:09Z drakonis: how sad 2020-04-04T03:55:44Z aeth: No, worse than that, Arc is a PLT Scheme language that can't be ported to post-Scheme Racket because it wasn't written "properly" (well, properly for PLT/Racket). 2020-04-04T03:56:03Z aeth: I'm pretty sure https://github.com/arclanguage/anarki/ is a third party port of Arc to run on Racket and HN itself runs on PLT Scheme still, although I could be wrong. 2020-04-04T03:56:07Z drakonis: haha yikes. 2020-04-04T03:57:19Z aeth: s/can't be ported to/can't run on/ 2020-04-04T03:57:25Z aeth: because obviously in the next line I linked to the port... 2020-04-04T03:58:23Z aeth: Idk for sure, though. Afaik, Arc isn't really receptive of community contributions, which is why Anarki exists. Charitably, I do call HN as something that "runs on Racket" even if it might still be using PLT Scheme. 2020-04-04T03:58:38Z aeth: s/call HN as/describe HN as/ 2020-04-04T03:58:43Z Riastradh: ...runs on hot air, more like it... 2020-04-04T03:59:35Z drakonis: i can't find the name of the hn clone in anarki 2020-04-04T03:59:55Z aeth: Riastradh: Imo, Lisp languages shouldn't really run on hot air. Hot air balloons can't really scale like airships can... 2020-04-04T04:00:03Z drakonis: its mostly similar to reddit and hn 2020-04-04T04:00:06Z aeth: Riastradh: You probably want hydrogen or helium instead 2020-04-04T04:00:22Z drakonis: in which you can submit things to any specific tag 2020-04-04T04:00:25Z Riastradh: libhydrogen is good 2020-04-04T04:00:31Z drakonis: arbitrary tags rather 2020-04-04T04:01:37Z aeth: Riastradh: oh no there's a libhydrogen? What about helium? 2020-04-04T04:03:40Z aeth: hydrogen is apparently a drum machine... https://en.wikipedia.org/wiki/Hydrogen_(software) 2020-04-04T04:04:13Z Riastradh: https://github.com/jedisct1/libhydrogen 2020-04-04T04:05:34Z aeth: ah 2020-04-04T04:08:41Z aeth: drakonis: Anarki added tagging to HN's reddit clone? Wow. Idk why that has never gone upstream 2020-04-04T04:09:07Z aeth: I think Arc would've been less of a joke if it didn't immediately go into (apparent) maintenance mode... 2020-04-04T04:09:44Z aeth: Over a decade of updates and it could be more used than ~Perl 6~ Raku as far as Perl-inspired languages go. Now, that would be a very different world. 2020-04-04T04:10:31Z drakonis: no i think someone else added it but i dont think its part of anarki? 2020-04-04T04:10:37Z aeth: ah 2020-04-04T04:10:45Z drakonis: let's see if i can find it 2020-04-04T04:10:52Z aeth: unfortunately, last I checked, Github only had Arc implementations tagged as Arc projects. 2020-04-04T04:10:59Z drakonis: it still does 2020-04-04T04:11:02Z aeth: So... you're going to have a hard time finding anything 2020-04-04T04:11:43Z drakonis: i think someone posted it to lobsters 2020-04-04T04:11:47Z drakonis: if only i could find it 2020-04-04T04:12:21Z drakonis: so, i remembered that paul graham is making bel now 2020-04-04T04:12:31Z drakonis: its the sequel to arc? 2020-04-04T04:12:38Z drakonis: http://www.paulgraham.com/bel.html 2020-04-04T04:13:03Z drakonis: gonna be the same old shit lol 2020-04-04T04:13:49Z pilne quit (Quit: Relax, its only ONES and ZEROS!) 2020-04-04T04:14:43Z turtleman quit (Ping timeout: 265 seconds) 2020-04-04T04:17:54Z aeth: drakonis: oh, right, I forgot about that already... didn't leave the same internet-wide level of hype that Arc did 2020-04-04T04:18:52Z drakonis: i dont see what's the point of that, what does he intend to do with this? 2020-04-04T04:19:27Z aeth: as I said earlier, It's probably hard to stay motivated when you have a giant pile of money. 2020-04-04T04:19:51Z drakonis: it looks like yet another dialect that brings nothing to the table? 2020-04-04T04:20:25Z aeth: he doesn't need to bring anything to the table because he doesn't need to commercialize it or something written in it 2020-04-04T04:20:53Z aeth: I think most languages that are to some extent living are probably used for the web these days 2020-04-04T04:21:28Z aeth: e.g. afaik https://www.racket-lang.org/ is run on Racket, which then gives the implication that your website, too, can run on Racket 2020-04-04T04:21:49Z aeth: s/is run/runs/ 2020-04-04T04:21:54Z aeth: (I edited that line too much) 2020-04-04T04:22:55Z aeth: and in fact, that link right there at the top says "solve problems" right there at the top 2020-04-04T04:26:04Z drakonis: at least there's an attempt to do anything with it 2020-04-04T04:27:58Z aeth: drakonis: which language are you referring to? 2020-04-04T04:28:43Z drakonis: racket 2020-04-04T04:29:36Z aeth: right, but people have to do something with Racket. 2020-04-04T04:30:01Z aeth: Maybe research rather than a startup or something, but they still need to deliver results. 2020-04-04T04:30:12Z drakonis: right right, that's important 2020-04-04T04:30:42Z aeth: pg has a lot of money so he's accountable only to himself as far as his proglang design goes. I guess in theory it can work, but he probably should impose some external constraint if he wants to get things done on schedule. 2020-04-04T04:33:15Z aeth: although there are plenty of projects in the lisp/scheme world that are taking a very long time 2020-04-04T04:33:44Z drakonis: https://www.laarc.io/l/place 2020-04-04T04:33:45Z drakonis: there 2020-04-04T04:33:52Z drakonis: https://www.laarc.io/ 2020-04-04T04:34:50Z drakonis: https://github.com/laarc/laarc 2020-04-04T04:36:21Z aeth: I haven't seen that before 2020-04-04T04:39:05Z aeth: interesting 2020-04-04T04:39:34Z aeth: even a place clone... 2020-04-04T04:43:15Z mr_machina quit (Remote host closed the connection) 2020-04-04T04:55:29Z ozzloy joined #scheme 2020-04-04T04:55:29Z ozzloy quit (Changing host) 2020-04-04T04:55:29Z ozzloy joined #scheme 2020-04-04T04:55:55Z pluplog joined #scheme 2020-04-04T04:59:50Z aeth: all this talk about Lisps made me want to add flairs to /r/schemememe so I did... https://old.reddit.com/r/schemememe/comments/funq7y/we_now_have_flairs/ 2020-04-04T05:00:04Z aeth: obviously I didn't add all 100 Scheme implementations so let me know if you want me to add yours 2020-04-04T05:03:01Z titanbiscuit quit (Quit: ZNC 1.7.4 - https://znc.in) 2020-04-04T05:04:23Z titanbiscuit joined #scheme 2020-04-04T05:04:44Z pluplog quit (Remote host closed the connection) 2020-04-04T05:05:32Z pluplog joined #scheme 2020-04-04T05:11:43Z pluplog quit (Remote host closed the connection) 2020-04-04T05:15:07Z pluplog joined #scheme 2020-04-04T05:15:37Z brendyyn quit (Read error: No route to host) 2020-04-04T05:21:42Z jao quit (Ping timeout: 260 seconds) 2020-04-04T05:39:08Z skapata quit (Quit: ฤœis!) 2020-04-04T05:45:58Z notzmv quit (Remote host closed the connection) 2020-04-04T05:54:27Z gravicappa joined #scheme 2020-04-04T06:10:11Z drakonis quit (Quit: WeeChat 2.7.1) 2020-04-04T06:42:14Z brendyyn joined #scheme 2020-04-04T06:45:48Z retropikzel joined #scheme 2020-04-04T06:48:15Z Naptra joined #scheme 2020-04-04T07:14:37Z aeth quit (Ping timeout: 264 seconds) 2020-04-04T07:16:17Z aeth joined #scheme 2020-04-04T07:20:04Z lockywolf joined #scheme 2020-04-04T07:59:17Z brendyyn quit (Ping timeout: 265 seconds) 2020-04-04T07:59:17Z brendarn joined #scheme 2020-04-04T08:07:35Z f8l quit (Remote host closed the connection) 2020-04-04T08:08:55Z f8l joined #scheme 2020-04-04T08:10:52Z ArthurStrong joined #scheme 2020-04-04T08:15:22Z v_m_v joined #scheme 2020-04-04T08:16:42Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-04T08:19:39Z ggole joined #scheme 2020-04-04T08:37:45Z zig: hello :) 2020-04-04T09:02:47Z kopiyka quit (Remote host closed the connection) 2020-04-04T09:06:49Z v_m_v quit (Ping timeout: 264 seconds) 2020-04-04T09:10:43Z luni joined #scheme 2020-04-04T09:25:25Z ArthurStrong: hello, zig 2020-04-04T09:37:58Z angelds joined #scheme 2020-04-04T09:50:18Z pluplog quit (Remote host closed the connection) 2020-04-04T09:57:35Z ngz joined #scheme 2020-04-04T10:02:02Z drot joined #scheme 2020-04-04T10:02:48Z agspathis joined #scheme 2020-04-04T10:03:39Z hugh_marera joined #scheme 2020-04-04T10:04:23Z ngz quit (Remote host closed the connection) 2020-04-04T10:38:36Z dto left #scheme 2020-04-04T10:40:10Z lockywolf joined #scheme 2020-04-04T10:49:25Z brendarn quit (Ping timeout: 265 seconds) 2020-04-04T10:51:16Z brendarn joined #scheme 2020-04-04T10:52:39Z lockywolf: hm... programming in an early-typed language is so weird after programming in scheme.... 2020-04-04T10:58:25Z brendarn quit (Ping timeout: 264 seconds) 2020-04-04T11:01:12Z brendos joined #scheme 2020-04-04T11:09:50Z lockywolf_ joined #scheme 2020-04-04T11:10:05Z hugh_marera quit (Quit: hugh_marera) 2020-04-04T11:10:19Z SGASAU joined #scheme 2020-04-04T11:12:30Z lockywolf quit (Ping timeout: 258 seconds) 2020-04-04T11:20:02Z ngz joined #scheme 2020-04-04T11:20:34Z angelds quit (Ping timeout: 240 seconds) 2020-04-04T11:26:49Z ufaucernio joined #scheme 2020-04-04T11:28:45Z ufaucernio quit (Client Quit) 2020-04-04T11:33:16Z ufaucernio joined #scheme 2020-04-04T11:48:35Z luni quit (Remote host closed the connection) 2020-04-04T11:49:37Z terpri_ quit (Ping timeout: 260 seconds) 2020-04-04T11:54:53Z agspathis quit (Remote host closed the connection) 2020-04-04T12:02:10Z xkapastel joined #scheme 2020-04-04T12:07:11Z zig: there is no implementation of topological sort in rosetta code for scheme 2020-04-04T12:07:15Z zig: there is one for racket https://rosettacode.org/wiki/Topological_sort#Racket 2020-04-04T12:07:21Z zig: but I do not like it. 2020-04-04T12:07:32Z zig: I will add one. 2020-04-04T12:08:24Z DKordic: lockywolf_: You don't feel great when solving non-problems? C(11) is only so many GiB, add at least one more non-problem with Python. 2020-04-04T12:13:39Z lockywolf_: DKordic, well, I'm not writing in C(11) :) 2020-04-04T12:14:36Z lockywolf_: What I feel (may be completely wrong though), is that early typing is not by itself bad. But it requires a huge lot of stuff from the compiler. 2020-04-04T12:15:32Z lockywolf_: o'caml is early typed isn't it? 2020-04-04T12:17:08Z zig: first time I read the term 'early typed' 2020-04-04T12:17:33Z lockywolf_: like, I had both and feeling that "ah, thanks for reminding me to implement this kind of interface", and "these guys _are_ compatible, you, stupid machine" 2020-04-04T12:18:02Z lockywolf_: zig we seem to be understanding each other :) 2020-04-04T12:20:59Z webshinra joined #scheme 2020-04-04T12:25:24Z turtleman joined #scheme 2020-04-04T12:28:31Z choas quit (Ping timeout: 250 seconds) 2020-04-04T12:40:52Z choas joined #scheme 2020-04-04T12:41:27Z srandon111: uys why the keyboard shortcuts showed here https://docs.racket-lang.org/drracket/Keyboard_Shortcuts.html don't work in drracket ? if i press e.g., Ctrl+e it opens/close the repl winndow but does not go to the end of line as specified 2020-04-04T12:45:02Z TCZ joined #scheme 2020-04-04T12:45:51Z civodul joined #scheme 2020-04-04T12:50:34Z lockywolf_: srandon111, are you sure no app is intercepting your shortcuts? 2020-04-04T12:50:48Z lockywolf_: psi-plus was particularly notorious for doing this 2020-04-04T12:51:34Z srandon111: lockywolf_, i am using the beginning student language in racket *(don't know if it matters) 2020-04-04T12:51:51Z lockywolf_: srandon111, which operating system? 2020-04-04T12:51:55Z srandon111: and no because hen i do ctrl+e it opens the drracket repl... so it means drracket is intercepting the shortcut 2020-04-04T12:52:00Z srandon111: but simple does different thing 2020-04-04T12:52:04Z srandon111: lockywolf_, linux 2020-04-04T12:54:59Z lockywolf_: srandon111, no special "scripts"? 2020-04-04T12:55:41Z srandon111: no lockywolf_ 2020-04-04T12:55:43Z lockywolf_: "quickscripts" or something like that 2020-04-04T12:55:49Z srandon111: what's that? 2020-04-04T12:56:00Z srandon111: lockywolf_, i am following the systematic program design course 2020-04-04T12:56:08Z lockywolf_: Menu -> scripts 2020-04-04T12:56:10Z srandon111: anyway other than setting the BSL 2020-04-04T12:56:14Z srandon111: i didn't do anythin 2020-04-04T12:56:35Z srandon111: in the scripts menu i only have the entry "Manage scripts" 2020-04-04T12:57:28Z srandon111: but the thing is that also ofor this guy in the course https://www.youtube.com/watch?v=Zd-jXZArWa8&list=PL6NenTZG6KrqMkX3XpyVLbhwThXdUID_t&index=1 2020-04-04T12:57:39Z srandon111: when he presses ctrl+e the REPL windows pops up/down 2020-04-04T12:57:47Z srandon111: so maybe it is something of the BSL ? 2020-04-04T12:57:58Z lockywolf_: On Windows (and sometimes under Unix) some of these keybindings are actually standard menu items. Those keybindings will behave according to the menus, unless the Enable keybindings in menus preference is unchecked. For example, the C-e keybinding mentioned above actually toggles the visibility of the interactions window. 2020-04-04T12:57:59Z zig: here is my proposal for topological sort: https://paste.debian.net/1138401/ 2020-04-04T12:58:38Z lockywolf_: srandon111, just opened your link 2020-04-04T12:58:52Z lockywolf_: paragraph 7 2020-04-04T12:59:23Z srandon111: lockywolf_, cool thanks 2020-04-04T13:00:01Z lockywolf_: welcome to the scheme world 2020-04-04T13:01:26Z lockywolf_: brief intro: scheme materials (a) usually are way denser than you expect, (b) are not written in a sequential manner 2020-04-04T13:02:31Z srandon111: lockywolf_, thanks a lot for the help 2020-04-04T13:02:55Z lockywolf_: i.e. don't be deceived by the "shortness" of the scheme standard. it takes a lot to understand 2020-04-04T13:07:49Z srandon111: lockywolf_, is there a way to evaluate the current expression? 2020-04-04T13:07:57Z srandon111: like not run the entire program with f5 2020-04-04T13:08:06Z srandon111: but simply run one simple sexpression inside the repl ? 2020-04-04T13:08:39Z lockywolf_: Ctrl-x Ctrl-e didn't work? 2020-04-04T13:09:03Z epony quit (Quit: reconfigure) 2020-04-04T13:10:18Z lockywolf_: sorry, I don't know 2020-04-04T13:13:38Z lockywolf_: srandon111, https://blog.racket-lang.org/2009/03/the-drscheme-repl-isnt-the-one-in-emacs.html 2020-04-04T13:15:53Z notzmv joined #scheme 2020-04-04T13:16:23Z lockywolf_: I think you probably still can run racket in scheme-mode in Emacs 2020-04-04T13:22:16Z epony joined #scheme 2020-04-04T13:22:27Z srandon111: ook ok thanks lockywolf_ the thing is that in the course that i am following the guy uses drracket and it makes simple to manipulate the images 2020-04-04T13:22:43Z lockywolf_: nothing in scheme is simple 2020-04-04T13:22:44Z srandon111: i don't know emacs how much supports these mechanisms 2020-04-04T13:22:59Z lockywolf_: probably it doesn't 2020-04-04T13:29:41Z izh_ joined #scheme 2020-04-04T13:47:23Z Lysandros quit (Remote host closed the connection) 2020-04-04T13:54:04Z zig: the proc 'remove' is does the inverse of 'filter' 2020-04-04T13:54:11Z zig: s/is// 2020-04-04T13:55:12Z lockywolf_ quit (Ping timeout: 265 seconds) 2020-04-04T14:02:12Z mdhughes: Everything in Scheme is simple. Racket isn't Scheme, exactly. Its IDE certainly isn't. 2020-04-04T14:04:46Z mdhughes: (call/cc, dynamic-wind, and macros aren't simple either, and FFI is as complex as whatever you're hooking up. But mostlyโ€ฆ) 2020-04-04T14:30:34Z choas quit (Ping timeout: 240 seconds) 2020-04-04T14:39:57Z choas joined #scheme 2020-04-04T14:48:02Z izh_ quit (Quit: Leaving) 2020-04-04T14:50:54Z tramplefoot joined #scheme 2020-04-04T14:53:17Z luni joined #scheme 2020-04-04T15:02:45Z Riastradh: zig: You should one-up it -- compute the strongly connected components (in topological order, which constitutes a topological sort if there are no cycles). 2020-04-04T15:04:57Z jao joined #scheme 2020-04-04T15:07:58Z jcowan: aeth: Two array SRFIs will be included in the next ballot. Only if "no arrays" gets the majority of the legal votes cast can we say that there will be no arrays. If neither SRFI gets a majority, we will reballot. 2020-04-04T15:10:39Z jcowan: Racket is a Scheme, but Racket culture is not typical Scheme culture. 2020-04-04T15:10:51Z jcowan: e.g. Racketeers don't normally use syntax-rules. 2020-04-04T15:10:59Z Riastradh: zig: Here's my C implementation of Tarjan's algorithm: https://mumble.net/~campbell/hg/picopb/usr.bin/picopbc/scc.c 2020-04-04T15:14:54Z TCZ quit (Quit: Leaving) 2020-04-04T15:17:23Z luni: jcowan: here a part of a video i was seeing today and looks like define-syntax is used https://youtu.be/z8Pz4bJV3Tk?t=1394 2020-04-04T15:18:09Z Riastradh: Don't use it at all, or don't make it jump through hoops to play tricks? 2020-04-04T15:19:05Z jcowan: luni: Yes. All macro systems except define-macro use define-syntax/let-syntax/let*-syntax to specify the name of the macro 2020-04-04T15:19:14Z zig: Riastradh: re topological sort, what does "one-up" means? 2020-04-04T15:19:21Z zig: Riastradh: how scc.c is better? 2020-04-04T15:19:25Z Riastradh: zig: outdo, do a step better than, ... 2020-04-04T15:19:52Z Riastradh: zig: It gives you the strongly connected components too, so it shows you what the cycles are if there are any, rather than just bailing and saying `sorry, there was a cycle, go home'. 2020-04-04T15:19:52Z jcowan: If there is only one rule, they use extend-syntax. After that, it's straight to syntax-case, on the grounds that it's possible to write better error messages. 2020-04-04T15:20:12Z jcowan: I think the latter is untrue if calls to syntax-error are handled properly (that is, at expansion time). 2020-04-04T15:20:21Z jcowan: s/untrue/unnecessary 2020-04-04T15:21:12Z jcowan: I learned this a few days ago 2020-04-04T15:23:07Z zig: tx 2020-04-04T15:27:33Z ecraven quit (Ping timeout: 272 seconds) 2020-04-04T15:29:16Z titanbiscuit quit (Ping timeout: 265 seconds) 2020-04-04T15:31:23Z skapata joined #scheme 2020-04-04T15:36:32Z ecraven joined #scheme 2020-04-04T15:38:37Z choas quit (Ping timeout: 264 seconds) 2020-04-04T15:39:58Z ecraven quit (Client Quit) 2020-04-04T15:42:57Z ecraven joined #scheme 2020-04-04T15:47:25Z ecraven quit (Ping timeout: 250 seconds) 2020-04-04T15:48:18Z brendos quit (Ping timeout: 265 seconds) 2020-04-04T15:52:32Z ArthurStrong quit (Quit: leaving) 2020-04-04T16:14:28Z conjunctive joined #scheme 2020-04-04T16:16:26Z kritixilithos joined #scheme 2020-04-04T16:18:47Z choas joined #scheme 2020-04-04T16:31:48Z srandon111: guys are there libraries in other schemes (other than racket) like 2htdp/universe? because i like the big-bang function there to create worlds 2020-04-04T16:32:18Z srandon111: i have seen clojure has an analogous thing inspired by racket https://github.com/rm-hull/big-bang 2020-04-04T16:32:28Z srandon111: and it calls it " 2020-04-04T16:32:28Z srandon111: ClojureScript event loop abstraction, loosely based on Racket's big-bang and implemented on top of core.async 2020-04-04T16:32:28Z srandon111: " 2020-04-04T16:34:36Z zig: srandon111: there is https://dthompson.us/projects/chickadee.html but afaik the maintainer is (was) unresponsive. 2020-04-04T16:35:47Z zig: it is game engine 2020-04-04T16:40:18Z zig: srandon111: what do you want to do? 2020-04-04T16:40:25Z daviid quit (Ping timeout: 264 seconds) 2020-04-04T16:42:33Z lritter joined #scheme 2020-04-04T16:59:50Z hugh_marera joined #scheme 2020-04-04T17:08:24Z zaifir quit (Quit: Eadem mutata resurgo.) 2020-04-04T17:09:38Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-04T17:10:03Z zaifir joined #scheme 2020-04-04T17:19:31Z drakonis joined #scheme 2020-04-04T17:19:52Z choas quit (Ping timeout: 256 seconds) 2020-04-04T17:20:37Z kritixil1 joined #scheme 2020-04-04T17:21:33Z choas joined #scheme 2020-04-04T17:22:43Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-04T17:29:19Z choas quit (Ping timeout: 265 seconds) 2020-04-04T17:43:17Z bars0 joined #scheme 2020-04-04T17:45:43Z kritixil1 quit (Ping timeout: 240 seconds) 2020-04-04T17:49:22Z kritixil1 joined #scheme 2020-04-04T18:00:05Z choas joined #scheme 2020-04-04T18:01:57Z klovett_ quit (Remote host closed the connection) 2020-04-04T18:02:41Z tramplefoot quit (Read error: Connection reset by peer) 2020-04-04T18:11:20Z TCZ joined #scheme 2020-04-04T18:13:35Z choas quit (Ping timeout: 260 seconds) 2020-04-04T18:14:59Z kritixil1 quit (Remote host closed the connection) 2020-04-04T18:22:25Z bars0 quit (Quit: leaving) 2020-04-04T18:29:33Z titanbiscuit joined #scheme 2020-04-04T18:30:33Z titanbiscuit quit (Read error: Connection reset by peer) 2020-04-04T18:31:49Z titanbiscuit joined #scheme 2020-04-04T18:34:20Z kritixil1 joined #scheme 2020-04-04T18:42:24Z choas joined #scheme 2020-04-04T18:46:51Z izh_ joined #scheme 2020-04-04T18:52:14Z choas quit (Ping timeout: 256 seconds) 2020-04-04T18:53:12Z klovett joined #scheme 2020-04-04T18:57:30Z srandon111: thanks zig 2020-04-04T18:57:53Z srandon111: guys i created in racket a program to show the animation of a traffic light... can you tell me if it is good/acceptable? https://pastebin.com/VfajcjMp 2020-04-04T18:58:59Z kori joined #scheme 2020-04-04T18:58:59Z kori quit (Changing host) 2020-04-04T18:58:59Z kori joined #scheme 2020-04-04T18:59:33Z srandon111: because since it was an exercise from the how to design program i see that the solution differs... https://pastebin.com/5bkahMMV 2020-04-04T19:00:23Z kritixil1 quit (Ping timeout: 240 seconds) 2020-04-04T19:05:49Z TCZ quit (Quit: Leaving) 2020-04-04T19:19:18Z choas joined #scheme 2020-04-04T19:23:54Z choas quit (Ping timeout: 240 seconds) 2020-04-04T19:47:18Z srandon111: i did "raco exe --gui tlv1.rkt" and then i try to launch the executable on another machine and i get ./tlv1: failed to start /home/giuseppe/bin/racket/lib/gracket (No such file or directory) 2020-04-04T19:53:56Z seepel joined #scheme 2020-04-04T19:56:27Z DKordic: srandon111: Meditate on Your mistakes ;) . 2020-04-04T20:04:33Z jeanbeurre joined #scheme 2020-04-04T20:05:16Z gmaggior joined #scheme 2020-04-04T20:07:25Z srandon111: DKordic, i tried 2020-04-04T20:07:29Z srandon111: can't see a solution 2020-04-04T20:07:36Z srandon111: DKordic, why is this happening ? 2020-04-04T20:07:45Z srandon111: i means shouldn't it create a standlone exe? 2020-04-04T20:12:54Z mjsir911 quit (Quit: Goodbye, World!) 2020-04-04T20:14:12Z mjsir911 joined #scheme 2020-04-04T20:16:21Z TCZ joined #scheme 2020-04-04T20:19:09Z izh_ quit (Quit: Leaving) 2020-04-04T20:20:15Z kritixil1 joined #scheme 2020-04-04T20:20:17Z kritixil1 quit (Client Quit) 2020-04-04T20:23:47Z pilne joined #scheme 2020-04-04T20:27:28Z srandon111: DKordic, are you there? 2020-04-04T20:27:46Z srandon111: i can't understand how to start it... i also tried to read the full doc page... and still can't solve it 2020-04-04T20:27:49Z choas joined #scheme 2020-04-04T20:27:50Z srandon111: unless i ido raco distribute 2020-04-04T20:27:56Z DKordic: Yes. Thinking how to answer. 2020-04-04T20:28:09Z srandon111: but i want a single executable with every library needed included 2020-04-04T20:28:39Z srandon111: ok this is my script 2020-04-04T20:28:42Z srandon111: https://pastebin.com/easYsx3K 2020-04-04T20:29:11Z srandon111: basically as you can see from the first lines i use #lang htdp/bsl and i require two libs 2htdp/image and 2htdp/universe 2020-04-04T20:29:41Z srandon111: i also tried from the docs to do "raco exe ++lib racket/gui ++lib 2htdp/image ++lib 2htdp/universe tl.rkt" 2020-04-04T20:30:06Z srandon111: but the problem is the same... as soon as i move the exe on another machine i get "./tl: failed to start /home/giuseppe/bin/racket/lib/gracket (No such file or directory)" 2020-04-04T20:32:59Z choas quit (Ping timeout: 250 seconds) 2020-04-04T20:34:00Z DKordic: What if You move the exe to a ""tablet""!? 2020-04-04T20:36:30Z titanbiscuit quit (Ping timeout: 256 seconds) 2020-04-04T20:36:30Z srandon111: DKordic, what's the sense of that? 2020-04-04T20:36:30Z jeanbeurre quit (Read error: Connection reset by peer) 2020-04-04T20:36:39Z srandon111: my exe is x86_64 for linux 2020-04-04T20:36:46Z srandon111: and the other machine is same architecture and OS 2020-04-04T20:37:09Z jeanbeurre joined #scheme 2020-04-04T20:38:33Z choas joined #scheme 2020-04-04T20:42:00Z jeanbeurre quit (Client Quit) 2020-04-04T20:43:37Z choas quit (Ping timeout: 265 seconds) 2020-04-04T20:45:21Z srandon111: DKordic, basically i would like to staticallly compile 2020-04-04T20:49:56Z gravicappa quit (Ping timeout: 256 seconds) 2020-04-04T20:51:39Z retropikzel quit (Quit: Leaving) 2020-04-04T20:52:38Z DKordic: What is undesirable about raco distribute? 2020-04-04T20:53:49Z titanbiscuit joined #scheme 2020-04-04T20:59:22Z srandon111: DKordic, it creates two directories... bin/ lib/ 2020-04-04T20:59:26Z srandon111: i want a single executable 2020-04-04T20:59:36Z srandon111: i want to have a single exe 2020-04-04T20:59:54Z srandon111: DKordic, are you there? 2020-04-04T20:59:58Z srandon111: i am desperate 2020-04-04T21:00:11Z srandon111: not able to do this... i was thinking it was something easy 2020-04-04T21:04:53Z ggole quit (Quit: Leaving) 2020-04-04T21:10:07Z SGASAU quit (Remote host closed the connection) 2020-04-04T21:10:16Z DKordic: srandon111: http://www.lysator.liu.se/c/ten-commandments.html 10th 2020-04-04T21:13:07Z choas joined #scheme 2020-04-04T21:14:50Z srandon111: DKordic, i knew that 2020-04-04T21:14:56Z srandon111: and it not helpful now XD 2020-04-04T21:17:42Z srandon111: DKordic, i read this... https://groups.google.com/forum/#!topic/racket-users/a0E9LinW5HM 2020-04-04T21:17:44Z Naptra quit (Quit: Leaving) 2020-04-04T21:21:36Z choas quit (Ping timeout: 256 seconds) 2020-04-04T21:22:46Z DKordic: srandon111: It is not clear to me what are you trying to do. How is it any less than a LiveUSB? 2020-04-04T21:23:05Z DKordic: http://xyproblem.info/ !! 2020-04-04T21:23:16Z DKordic: srandon111: Are you begging for a Container, like a Docker or whatever? A User-proof exploit. 2020-04-04T21:23:17Z srandon111: DKordic, i want to create a distributable exe file... 2020-04-04T21:23:22Z srandon111: like if i as using C 2020-04-04T21:23:35Z srandon111: DKordic, it's very simple 2020-04-04T21:23:41Z srandon111: i want a single executable to work 2020-04-04T21:23:42Z DKordic: Use C and tell me what happens. 2020-04-04T21:23:46Z srandon111: how?? 2020-04-04T21:23:52Z srandon111: i don't have the source in C 2020-04-04T21:23:58Z srandon111: i already did that with go 2020-04-04T21:24:02Z srandon111: in the past it worked 2020-04-04T21:24:03Z srandon111: also with C 2020-04-04T21:25:11Z zaifir: srandon111: It might help to take a moment and relax. 2020-04-04T21:25:18Z aeth: jcowan: The way I'd personally put it is that Racket isn't a Scheme, Racket contains Scheme (several, actually) 2020-04-04T21:25:51Z jcowan: Also a valid way to look at it. 2020-04-04T21:26:03Z aeth: Amusingly, this is composition over inheritance. :-) 2020-04-04T21:29:02Z zaifir: Always composition over inheiritance! I mean function composition, of course. 2020-04-04T21:32:41Z srandon111: zaifir, good 2020-04-04T21:39:05Z srandon111: guys what's the fastest implementation of scheme? chicken? 2020-04-04T21:39:11Z srandon111: i mean among the most common ones 2020-04-04T21:39:28Z zaifir: srandon111: https://ecraven.github.io/r7rs-benchmarks/ 2020-04-04T21:39:38Z zaifir: srandon111: More than you ever wanted to know. 2020-04-04T21:42:53Z srandon111: it is so much that i can't understand how to read those numbers zaifir 2020-04-04T21:43:00Z srandon111: what's that weird sort of distribution??? 2020-04-04T21:43:52Z srandon111: so basicallye.g., "chicken5csi-5.1.0 6 6 9" it means that it showed up in the top 9 3 times and twice it was on the sixth position and once on the ninth? 2020-04-04T21:49:20Z zaifir: IIUC, yes. 2020-04-04T21:50:01Z srandon111: zaifir, what's IIUC ? 2020-04-04T21:50:09Z zaifir: If I Understand Correctly 2020-04-04T21:50:16Z srandon111: okok thanks 2020-04-04T21:50:19Z srandon111: sorry for annoying 2020-04-04T21:50:28Z zaifir: srandon111: You aren't, don't worry. 2020-04-04T21:50:34Z srandon111: thanks 2020-04-04T21:50:48Z zaifir: The performance of individual schemes on different tests (further down the page) is fascinating. 2020-04-04T21:52:21Z zaifir: Like how Larceny is usually blazing fast, but sucks horribly on a few random tests. 2020-04-04T21:52:32Z srandon111: actually i am learning scheme through HTDP, but later i wonder if the same stuff i am currently doing with racket will be more or less the same e.g., in chicken or chez or guile 2020-04-04T21:52:54Z srandon111: e..g, racket has a function called big-bang very useful to create entire worlds... is there something similar in other schemes? 2020-04-04T21:53:03Z srandon111: it seems clojure has something similar inspired by racket 2020-04-04T21:53:46Z zaifir: You'll have to consult the Schemes you're interested in and see. 2020-04-04T21:54:13Z srandon111: zaifir, should i search for event loops? 2020-04-04T21:54:23Z srandon111: i actually don't know how to call that big-bang function xD 2020-04-04T21:55:39Z zaifir: srandon111: I guess it's a Racket high-level abstraction for simple GUI applications. 2020-04-04T21:56:23Z zig listening to libre lounge about Affero GPL https://podcasts.google.com/?feed=aHR0cHM6Ly9saWJyZWxvdW5nZS5vcmcvcnNzLWZlZWQucnNz&episode=aHR0cHM6Ly9tZWRpYS5saWJyZWxvdW5nZS5vcmcvZXBpc29kZXMvMDM0LWxpbWl0cy1vZi1hZ3BsL2xpYnJlbG91bmdlLWVwLTAzNC5tcDM&hl=fr&ved=2ahUKEwjGvuWkns_oAhV9AWMBHem3D3cQieUEegQIChAE&ep=6 2020-04-04T21:56:23Z rudybot: https://teensy.info/cJ35Nqrxbr 2020-04-04T21:56:48Z choas joined #scheme 2020-04-04T21:57:16Z TCZ quit (Quit: Leaving) 2020-04-04T21:57:32Z zaifir: zig: OT? 2020-04-04T21:58:53Z zig: yes 2020-04-04T22:00:00Z zig: srandon111: did you answer my question about what you are trying to explain in terms of words without analogies with racket libraries? 2020-04-04T22:00:14Z zig: what you are trying to implement. 2020-04-04T22:00:21Z srandon111: zig, animations 2020-04-04T22:00:24Z srandon111: 2D animations 2020-04-04T22:00:30Z zig: ok 2020-04-04T22:00:39Z srandon111: what's there for chicken? 2020-04-04T22:00:42Z zig: you want something like live reloading? 2020-04-04T22:00:52Z zig: live 2d animationo programming? 2020-04-04T22:01:12Z zaifir: srandon111: https://wiki.call-cc.org/eggref/5/hypergiant is an option 2020-04-04T22:01:15Z zig: srandon111: afaik there is nothing like racket big-bang. 2020-04-04T22:01:36Z zaifir: Not every Scheme can have Matthias Felleisen as in-house wizard. 2020-04-04T22:01:39Z zig: I stand corrected 2020-04-04T22:01:54Z choas quit (Ping timeout: 256 seconds) 2020-04-04T22:02:06Z srandon111: zig, yes dealing also with key inputus 2020-04-04T22:02:19Z srandon111: zaifir, i looked at that... seems interesting but it's for 3d 2020-04-04T22:02:22Z srandon111: iirc 2020-04-04T22:02:45Z zaifir: srandon111: It does 2D. 2020-04-04T22:12:59Z zig: srandon111: you have to consider the option to build you own... 2020-04-04T22:16:16Z zig: srandon111: https://github.com/theschemer/agave 2020-04-04T22:23:43Z srandon111: zig, but i don't have idea on where to start 2020-04-04T22:23:45Z srandon111: is it difficult? 2020-04-04T22:23:58Z srandon111: how one goes and writes a sort of 2d game engine? 2020-04-04T22:24:19Z luni left #scheme 2020-04-04T22:24:23Z srandon111: isn't code portable among schemes? i mean shouldn't the big-bang function be not difficult to port to other schemes? 2020-04-04T22:30:58Z zig: welcome to the beautiful world of scheme, Do-It-Yourself, learn-to-learn and make-it-work then make-it-fast 2020-04-04T22:31:35Z zig: You want a 2d game of engine or make gif? 2020-04-04T22:31:51Z zig: srandon111: foreign function interface (that you will need) is not portable 2020-04-04T22:32:55Z zig: the bigbang function rely on a xwindow canvas or something like that. 2020-04-04T22:39:47Z zaifir: srandon111: Racket is big laboratory for program language exploration that was once PLT Scheme. *Lots* of Racket stuff is not portable to Scheme. 2020-04-04T22:40:44Z zaifir: srandon111: My advice would be to not worry about game engines until you're fully comfortable with the language. 2020-04-04T22:42:04Z daviid joined #scheme 2020-04-04T22:46:06Z zig: +1 2020-04-04T22:49:09Z zaifir: srandon111: Although, if you have a copy of Land Of Lisp, it's a fun learning task to port the games from that book to Scheme. 2020-04-04T22:49:22Z zaifir: Grand Theft Wumpus is actually super fun. 2020-04-04T23:08:27Z choas joined #scheme 2020-04-04T23:09:09Z terpri joined #scheme 2020-04-04T23:10:29Z srandon111: zaifir, i have realm of racket also 2020-04-04T23:11:50Z drakonis: is it land of lisp but racket themed? 2020-04-04T23:13:19Z Oddity quit (Ping timeout: 250 seconds) 2020-04-04T23:13:25Z choas quit (Ping timeout: 264 seconds) 2020-04-04T23:16:00Z srandon111: drakonis, it's just inspired as far as i know the games are different 2020-04-04T23:16:08Z srandon111: still should be by matthias fellseien 2020-04-04T23:20:14Z Oddity joined #scheme 2020-04-04T23:24:35Z srandon111: zig, what is the suggested scheme to start? 2020-04-04T23:24:49Z srandon111: or i mean the top 5 common in order of frequency and live project? 2020-04-04T23:25:03Z srandon111: chichen, chez, gerbil, mit scheme, guile? 2020-04-04T23:25:51Z zig: srandon111: I prefer Chez. I am working on r 2020-04-04T23:26:13Z zig: srandon111: I prefer Chez. I am working on R7RS based on Chez. 2020-04-04T23:26:16Z Oddity quit (Ping timeout: 256 seconds) 2020-04-04T23:26:34Z zig: I tested guile, chicken and gamit. 2020-04-04T23:26:36Z zig: I tested guile, chicken and gambit. 2020-04-04T23:26:43Z zig: and chibi 2020-04-04T23:31:25Z srandon111: what about gerbil? 2020-04-04T23:31:38Z srandon111: what's the most richer in terms of packages? zig 2020-04-04T23:31:53Z zig: chicken 2020-04-04T23:32:50Z srandon111: okok cool 2020-04-04T23:33:06Z srandon111: but you still prefer chez? why>? 2020-04-04T23:33:40Z Oddity joined #scheme 2020-04-04T23:36:00Z zig: because, even if it takes time to bind all the libraries I need, chicken is little less easy to work with 2020-04-04T23:36:03Z choas joined #scheme 2020-04-04T23:36:15Z zig: but it is more portable I read. 2020-04-04T23:37:24Z zig: I mean I have one grievance against chicken so far, is the fact that you need compile separatly every library and then put then together in Makefile, there is ready-made make files to do that, but I prefer to avoid it all together. Also FFI is not was I am used to. 2020-04-04T23:37:55Z zig: I certainly like nanopass framework, most of Chez is written in Scheme. 2020-04-04T23:38:05Z xkapastel joined #scheme 2020-04-04T23:38:44Z zig: it is easier to dive into Chez code. 2020-04-04T23:39:33Z aeth: iirc, make has a key issue in that it doesn't work with spaces in paths, so if you have a space in a filename (such as a user's home directory) it just won't work 2020-04-04T23:40:36Z srandon111: ehat about gerbil aeth zig ? 2020-04-04T23:40:43Z Oddity quit (Ping timeout: 260 seconds) 2020-04-04T23:41:29Z choas quit (Ping timeout: 265 seconds) 2020-04-04T23:41:41Z TCZ joined #scheme 2020-04-04T23:43:10Z zig: gerbil is compiler on top gambit a bit more sofisticated, but I have various problems with gambit (before 5.x), FFI is not my taste, clearly gambit is my second choice. 2020-04-04T23:43:53Z zig: srandon111: for some reason, people created super compiler on top of gambit instead of contributing to gambit proper. 2020-04-04T23:44:18Z zig: jazzscheme is another gambit powered scheme 2020-04-04T23:49:26Z gmaggior quit (Quit: Leaving) 2020-04-04T23:51:57Z srandon111: guile docs are awful 2020-04-04T23:52:03Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-04T23:57:16Z Oddity joined #scheme 2020-04-04T23:58:50Z noblerot joined #scheme 2020-04-05T00:02:56Z klovett quit 2020-04-05T00:04:28Z klovett joined #scheme 2020-04-05T00:06:29Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-05T00:07:34Z dgtlcmo quit (Remote host closed the connection) 2020-04-05T00:09:28Z ahungry joined #scheme 2020-04-05T00:13:15Z ahungry quit (Read error: Connection reset by peer) 2020-04-05T00:14:49Z ahungry joined #scheme 2020-04-05T00:20:16Z ArthurStrong joined #scheme 2020-04-05T00:23:21Z Oddity quit (Ping timeout: 265 seconds) 2020-04-05T00:30:58Z Oddity joined #scheme 2020-04-05T00:35:33Z noblerot quit (Quit: leaving) 2020-04-05T00:40:58Z ski joined #scheme 2020-04-05T00:43:12Z choas joined #scheme 2020-04-05T00:43:21Z ngz quit (Ping timeout: 265 seconds) 2020-04-05T00:45:28Z seepel: srandon111: I've found the opposite, what do find lacking? 2020-04-05T00:46:13Z seepel: zig: I'm curious to hear your opinions on the various C FFIs. I haven't explored that part of the various scheme implementations. 2020-04-05T00:46:23Z srandon111: seepel, how do you manage exceptions? 2020-04-05T00:46:39Z srandon111: seepel, the toc is huge... but many entries when you click on it... have few lines 2020-04-05T00:46:46Z srandon111: seems momre for very advanced programmers 2020-04-05T00:46:57Z srandon111: i can't understand from the docs how to manage exceptions 2020-04-05T00:47:03Z srandon111: can you seepel point me ? 2020-04-05T00:47:51Z seepel: https://www.gnu.org/software/guile/manual/html_node/Exceptions.html#Exceptions 2020-04-05T00:48:49Z seepel: Also which version of guile? In 3.0 that was recently released I think they might've changed slightly to be more accomodating to r7rs 2020-04-05T00:49:14Z hugh_marera quit (Quit: hugh_marera) 2020-04-05T00:49:28Z seepel: But in general I've fonud it most useful to navigate aronud guile's documentation from the contents page: https://www.gnu.org/software/guile/manual/html_node/index.html#SEC_Contents 2020-04-05T00:49:57Z seepel: And also the procedure index page: https://www.gnu.org/software/guile/manual/html_node/Procedure-Index.html 2020-04-05T00:50:22Z choas quit (Ping timeout: 256 seconds) 2020-04-05T00:52:30Z seepel: Does any of that help? 2020-04-05T00:53:07Z TCZ quit (Quit: Leaving) 2020-04-05T01:02:06Z zmt01 quit (Quit: Leaving) 2020-04-05T01:02:06Z Oddity quit (Ping timeout: 256 seconds) 2020-04-05T01:08:26Z Oddity joined #scheme 2020-04-05T01:11:25Z torbo joined #scheme 2020-04-05T01:14:47Z zmt00 joined #scheme 2020-04-05T01:15:57Z srandon111: seepel, ok i am reading 2020-04-05T01:16:05Z srandon111: where is an example of throwing an exception?? 2020-04-05T01:16:09Z srandon111: seepel, are you there? 2020-04-05T01:16:24Z srandon111: i think it's horrible seepel 2020-04-05T01:16:29Z srandon111: i want to have examples 2020-04-05T01:16:42Z srandon111: look at how racket or clojure organize documentation 2020-04-05T01:16:46Z srandon111: that's easily accessible 2020-04-05T01:16:51Z srandon111: not this shit 2020-04-05T01:16:57Z valjda joined #scheme 2020-04-05T01:16:58Z srandon111: sorry i meant stuff 2020-04-05T01:19:17Z brendos joined #scheme 2020-04-05T01:25:03Z Oddity quit (Ping timeout: 250 seconds) 2020-04-05T01:33:50Z lockywolf joined #scheme 2020-04-05T01:36:56Z seepel: srandon111: Sorry, I got distracted by a shiny object. That answers my question, and is probably fair critism 2020-04-05T01:37:17Z srandon111: seepel, what shiny object? 2020-04-05T01:37:23Z srandon111: seepel, anyway i could contribute to the project 2020-04-05T01:38:33Z seepel: I'm not a contributor to Guile by the way, I just have personally found the documentation to be pretty good, so I was curious to hear an opposing opinion. Though I suppose most of the time I am using as reference rather than tutorial. 2020-04-05T01:39:47Z srandon111: seepel, probably what it lacks nowadays is a good set of tutorials or even books which teach guile 2020-04-05T01:40:00Z srandon111: something like How to design programs or Realm of Racket or Land of Lisp 2020-04-05T01:40:04Z srandon111: stuff like that 2020-04-05T01:40:38Z valjda quit (Quit: WeeChat 2.7.1) 2020-04-05T01:43:17Z ufaucernio quit (Quit: Quit) 2020-04-05T01:45:49Z ufaucernio joined #scheme 2020-04-05T01:46:30Z ahungry quit (Remote host closed the connection) 2020-04-05T01:46:34Z ufaucernio quit (Client Quit) 2020-04-05T01:46:42Z lritter quit (Ping timeout: 260 seconds) 2020-04-05T01:46:48Z ufaucernio joined #scheme 2020-04-05T01:47:25Z lritter joined #scheme 2020-04-05T01:48:04Z ahungry joined #scheme 2020-04-05T01:50:23Z seepel: Yes, I'd agree that the manual does assume some knowledge, and for the most part assumes you'll be refering to documentation for R[5-7]RS 2020-04-05T01:50:42Z seepel: in addition to the guile manual as well. 2020-04-05T01:51:52Z Oddity joined #scheme 2020-04-05T02:02:26Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-05T02:03:26Z brendos: srandon111: there was talk the other day how the ice-9 match documentation page was confusing even for an expert, with how it uses ooo, ..., ___ to describe notation. maybe you could take on vamping up that page with examples and better explanations of you want a project 2020-04-05T02:05:57Z ArthurStrong quit (Ping timeout: 260 seconds) 2020-04-05T02:07:17Z ArthurStrong joined #scheme 2020-04-05T02:20:01Z johncob joined #scheme 2020-04-05T02:20:19Z skapata quit (Remote host closed the connection) 2020-04-05T02:20:31Z lritter quit (Ping timeout: 250 seconds) 2020-04-05T02:25:38Z jeanbeurre joined #scheme 2020-04-05T02:27:32Z brendos quit (Ping timeout: 260 seconds) 2020-04-05T02:27:54Z brendos joined #scheme 2020-04-05T02:32:15Z ufaucernio quit (Quit: Quit) 2020-04-05T02:32:31Z jeanbeurre quit (Quit: Leaving) 2020-04-05T02:45:13Z johncob quit (Remote host closed the connection) 2020-04-05T02:46:39Z choas joined #scheme 2020-04-05T02:47:42Z srandon111: brendos, i think most of the docs needs a revisitation with examples 2020-04-05T02:48:00Z seepel quit (Ping timeout: 256 seconds) 2020-04-05T02:48:59Z brendos: srandon111: same 2020-04-05T03:02:58Z choas quit (Ping timeout: 256 seconds) 2020-04-05T03:11:23Z madage quit (Ping timeout: 240 seconds) 2020-04-05T03:20:23Z seepel joined #scheme 2020-04-05T03:20:45Z madage joined #scheme 2020-04-05T03:37:32Z turtleman quit (Ping timeout: 256 seconds) 2020-04-05T03:46:00Z terpri quit (Remote host closed the connection) 2020-04-05T03:46:23Z terpri joined #scheme 2020-04-05T03:53:48Z seepel quit (Ping timeout: 256 seconds) 2020-04-05T03:54:38Z brendyyn joined #scheme 2020-04-05T03:56:31Z aeth: drakonis: Oh, and an alternate reason for why Arc failed (or, rather, why it was abandoned so soon, at least beyond HN) is because it didn't grow exponentially... 2020-04-05T03:57:22Z brendos quit (Ping timeout: 260 seconds) 2020-04-05T03:58:43Z zaifir: "Exponential growth is a curse in all its forms." --Greg Egan 2020-04-05T04:01:39Z aeth: zaifir: Well, I mean, pg is the author of http://www.paulgraham.com/growth.html although that is years after he (apparently?) gave up on Arc 2020-04-05T04:02:01Z aeth: So if Arc wasn't seeing weekly growth... 2020-04-05T04:03:09Z drakonis: the irony 2020-04-05T04:05:01Z nisstyre: tfw a bat virus is more successful than your programming language 2020-04-05T04:05:18Z zaifir: Ouch, too soon. 2020-04-05T04:05:19Z nisstyre: and in a fraction of the space 2020-04-05T04:05:23Z brendyyn quit (Ping timeout: 265 seconds) 2020-04-05T04:05:58Z drakonis: arc is the definition of a vanity rewrite/language 2020-04-05T04:06:22Z aeth: nisstyre: to be fair, if it had been used in viruses, it would be a more popular programming language 2020-04-05T04:07:03Z nisstyre: imagine trying to write a computer virus in Arc 2020-04-05T04:07:28Z nisstyre: I'd rather suffer through C++ 2020-04-05T04:09:34Z aeth: drakonis: eh, motivations don't really matter, what matters is immediately responding to negative feedback. 2020-04-05T04:15:31Z aeth: In particular, no Unicode... https://old.reddit.com/r/programming/comments/6710p/arcs_out/c0312jt/ 2020-04-05T04:18:53Z drakonis: i'm not even sure what arc even brought into play 2020-04-05T04:19:33Z aeth: brevity. 2020-04-05T04:19:44Z Riastradh: stroking ego 2020-04-05T04:20:08Z drakonis: lmao at paul graham in the comments 2020-04-05T04:20:39Z aeth: Scheme has vector-ref, Arc doesn't even have ref, so if it has vectors (and those could always be added) (vector-ref (vector 'a 'b 'c) 1) would just be ((vector 'a 'b 'c) 1) in arc. Or, I mean, really, to be honest, it'd probably be "vec" or "v" or something. 2020-04-05T04:22:49Z aeth: That is, everything is callable, and if called it's assumed to be an index. 2020-04-05T04:23:00Z aeth: Unfortunately, Clojure did both concepts, too, better, at exactly the same time as Arc's release. 2020-04-05T04:23:08Z aeth: At least, based on the comments. 2020-04-05T04:23:26Z drakonis: clojure stole its thunder 2020-04-05T04:23:56Z aeth: Clojure also has the whole "everything is arbitrarily short just because", while also having compelling use cases like JVM integration and concurrency. 2020-04-05T04:24:39Z aeth: The only things I personally don't mind being short are things that are designed for "inline" usage, i.e. things that you want to use a lot in a line, like + or, actually, vector-ref, I do hate the length of vector-ref. 2020-04-05T04:25:01Z aeth: defn or def or d or whatever, no need to do that imo 2020-04-05T04:25:29Z zaifir: aeth: You really love vectors, don't you :) 2020-04-05T04:25:34Z aeth: What I want in a Lisp is token-conciseness, not necessarily absolute character conciseness. 2020-04-05T04:26:09Z aeth: zaifir: Lists are overdone in examples, so I overcorrect by reaching to vectors as my default example so people don't assume that Lisps can only do LISt Processing. 2020-04-05T04:26:20Z zaifir: aeth: True. 2020-04-05T04:26:30Z aeth: Plus, vectors are a good example of a-bit-too-verbose in Scheme 2020-04-05T04:26:40Z nisstyre: anyway, I'm going to assume anyone means "Automated Reference Counting" if they talk to me about Arc in the context of programming 2020-04-05T04:26:53Z aeth: (vector-ref v 42) competes with most languages' v[42] 2020-04-05T04:27:34Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-05T04:27:35Z aeth: nisstyre: So you read Arc as ARC? Does that make you Common Lisp? 2020-04-05T04:28:06Z nisstyre: I'm mostly just kidding, but actually IDK 2020-04-05T04:28:18Z nisstyre: depends whether you think it's ok to type abbreviations/acronyms like that 2020-04-05T04:28:27Z aeth: CL upcases symbols, if you missed my joke 2020-04-05T04:28:31Z nisstyre: ohhh 2020-04-05T04:28:33Z nisstyre: derp 2020-04-05T04:28:39Z nisstyre: yeah I'm not a clisper really 2020-04-05T04:28:39Z aeth: 'Arc => ARC 2020-04-05T04:28:49Z nisstyre: I didn't know that 2020-04-05T04:29:05Z kori quit (Ping timeout: 272 seconds) 2020-04-05T04:29:35Z zaifir: Funny, "ARC" is the evil software company that takes over the world in the classic cyberpunk game Uplink. 2020-04-05T04:29:59Z aeth: zaifir: But in practice, you're probably not going to be working with vectors or lists, but strings. 2020-04-05T04:33:02Z aeth: I think the vast majority of contemporary programming boils down to either linear algebra or string processing. 2020-04-05T04:34:32Z nisstyre: I enjoy doing bit twiddling every now and then (low level graphics or network programming) 2020-04-05T04:34:48Z nisstyre: not amazingly productive at it 2020-04-05T04:34:52Z nisstyre: but it's nice and refreshing kinda 2020-04-05T04:35:20Z nisstyre: I assume you meant "AI" by linear algebra 2020-04-05T04:36:08Z aeth: Well, no, you're probably still more likely to run your linear algebra coprocessor at home via gaming than machine learning. Well, maybe not you in particular since #scheme probably self-selects for people interested in AI, but you know what I mean. 2020-04-05T04:37:18Z nisstyre: yeah true 2020-04-05T04:37:53Z nisstyre: if you look at what's trendy, AI is more talked about than 3d graphics I'd guess, but not nearly as widespread 2020-04-05T04:38:15Z aeth: It's so trendy that I bet a lot of graphics people have been forced into doing ML on graphics 2020-04-05T04:38:58Z aeth: I wouldn't be surprised if that's where I myself would end up if I wanted to get a masters degree in CS. 2020-04-05T04:39:39Z aeth: Not just GPUs, though. SIMD (i.e. most of your CPU's per-core performance improvements in the past 10 years) seems very linear-algebra-oriented, too. 2020-04-05T04:40:36Z ArthurStrong left #scheme 2020-04-05T04:40:36Z nisstyre: if I were going to do a masters degree in something related to CS, it'd probably have something to do with ocaps (object capabilities) 2020-04-05T04:40:59Z aeth: Never heard of that. Is that security related? 2020-04-05T04:41:04Z nisstyre: kind of 2020-04-05T04:41:16Z nisstyre: there's a really good introduction here http://habitatchronicles.com/2017/05/what-are-capabilities/ 2020-04-05T04:41:19Z nisstyre: kinda long though 2020-04-05T04:41:40Z nisstyre: https://en.wikipedia.org/wiki/Capability-based_security gives an ok summary 2020-04-05T04:41:51Z nisstyre: but, it's more than just a security thing 2020-04-05T04:42:08Z aeth: Well, that (specific to security) is the only meaning I've heard of 2020-04-05T04:42:22Z aeth: I guess security is still a hot field? "Cybersecurity" was definitely the buzzword more than 5 years ago 2020-04-05T04:42:23Z nisstyre: looks like that site is down 2020-04-05T04:42:27Z nisstyre: archive.org has a copy though 2020-04-05T04:42:56Z nisstyre: aeth: true, although the idea behind ocaps is more than 20 years old 2020-04-05T04:44:19Z aeth: I wonder if r7rs-huge is getting capabilities... 2020-04-05T04:44:35Z nisstyre: I doubt it, it's not an easy thing to retrofit 2020-04-05T04:44:41Z nisstyre: if you have an actor model you almost have it though 2020-04-05T04:44:49Z `micro quit (Ping timeout: 250 seconds) 2020-04-05T04:44:54Z nisstyre: so if they're planning on adding actors to the spec... 2020-04-05T04:44:57Z nisstyre: then maybe 2020-04-05T04:45:42Z `micro joined #scheme 2020-04-05T04:46:09Z drakonis quit (Quit: WeeChat 2.7.1) 2020-04-05T04:48:46Z jao quit (Ping timeout: 256 seconds) 2020-04-05T04:50:02Z aeth: nisstyre: well... https://en.wikipedia.org/wiki/Scheme_(programming_language)#Origins 2020-04-05T04:50:13Z aeth: 'Scheme started in the 1970s as an attempt to understand Carl Hewitt's Actor model, for which purpose Steele and Sussman wrote a "tiny Lisp interpreter" using Maclisp and then "added mechanisms for creating actors and sending messages".' 2020-04-05T04:50:46Z seepel joined #scheme 2020-04-05T04:50:52Z nisstyre: yeah, of course, but afaik the idea of actors has never actually been specified into Scheme 2020-04-05T04:51:02Z nisstyre: individual schemes have it, in various levels 2020-04-05T04:51:08Z nisstyre: e.g. Racket's mailboxes 2020-04-05T04:51:13Z aeth: Well, in true Lisp tradition, it's more of a language for implementing interesting languages than an interesting language itself. 2020-04-05T04:51:43Z nisstyre: it's hard to implement an efficient actor system without a custom runtime 2020-04-05T04:52:01Z nisstyre: but I guess efficiency isn't such a big deal 2020-04-05T04:52:19Z nisstyre: nobody is running a giant distributed telco on scheme 2020-04-05T04:55:12Z aeth: eh 2020-04-05T04:55:20Z aeth: Performance doesn't matter for a language. 2020-04-05T04:55:42Z aeth: Performance and library count are the two main things that matter for a language implementation. Probably library count before performance or we'd all be using Pypy over the original Python 2020-04-05T04:56:02Z nisstyre: well, for the actor model, it has consequences 2020-04-05T04:56:24Z nisstyre: when things get congested, you might want to start dropping messages 2020-04-05T04:59:43Z choas joined #scheme 2020-04-05T05:13:50Z ahungry quit (Remote host closed the connection) 2020-04-05T05:20:13Z lockywolf joined #scheme 2020-04-05T05:21:45Z retropikzel joined #scheme 2020-04-05T05:24:53Z gravicappa joined #scheme 2020-04-05T05:33:51Z lockywolf_ joined #scheme 2020-04-05T05:33:54Z lockywolf quit (Read error: Connection reset by peer) 2020-04-05T05:45:17Z mdhughes: srandon111: What I do for graphics is link SDL2. Chicken has an "egg" library, but it doesn't do sound so I had to write C FFI to hook that up. thunderchez for Chez has SDL2 fully linked, but it's a little lower-level, I'm still working on converting everything. 2020-04-05T05:48:10Z retropikzel quit (Quit: Leaving) 2020-04-05T05:51:50Z retropikzel joined #scheme 2020-04-05T05:51:59Z lockywolf_ quit (Read error: Connection reset by peer) 2020-04-05T05:52:23Z lockywolf_ joined #scheme 2020-04-05T06:04:17Z choas quit (Ping timeout: 265 seconds) 2020-04-05T06:09:04Z pilne quit (Quit: He who laughs last, thinks slowest) 2020-04-05T06:17:39Z torbo quit (Remote host closed the connection) 2020-04-05T06:20:35Z fadein quit (Ping timeout: 250 seconds) 2020-04-05T06:20:52Z lockywolf__ joined #scheme 2020-04-05T06:22:41Z fadein joined #scheme 2020-04-05T06:22:46Z ft quit (Ping timeout: 268 seconds) 2020-04-05T06:23:47Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-05T06:35:26Z klovett quit (Remote host closed the connection) 2020-04-05T06:36:02Z klovett joined #scheme 2020-04-05T06:46:28Z Perkol joined #scheme 2020-04-05T07:17:21Z lockywolf__ quit (Ping timeout: 250 seconds) 2020-04-05T07:23:24Z sarna_ joined #scheme 2020-04-05T07:23:47Z sarna_ quit (Remote host closed the connection) 2020-04-05T07:34:23Z kori joined #scheme 2020-04-05T07:34:23Z kori quit (Changing host) 2020-04-05T07:34:23Z kori joined #scheme 2020-04-05T07:40:54Z ByronJohnson quit (Ping timeout: 240 seconds) 2020-04-05T07:53:23Z ByronJohnson joined #scheme 2020-04-05T07:56:04Z choas joined #scheme 2020-04-05T08:01:33Z choas quit (Ping timeout: 265 seconds) 2020-04-05T08:02:30Z Naptra joined #scheme 2020-04-05T08:09:09Z Perkol quit (Remote host closed the connection) 2020-04-05T08:10:18Z choas joined #scheme 2020-04-05T08:15:45Z choas quit (Ping timeout: 265 seconds) 2020-04-05T08:20:12Z ggole joined #scheme 2020-04-05T08:46:15Z ecraven joined #scheme 2020-04-05T08:55:35Z seepel quit (Ping timeout: 260 seconds) 2020-04-05T09:15:39Z nullus quit (Ping timeout: 260 seconds) 2020-04-05T09:16:14Z brendyyn joined #scheme 2020-04-05T09:18:38Z xelxebar joined #scheme 2020-04-05T09:28:19Z rgherdt joined #scheme 2020-04-05T09:36:38Z Lysandros joined #scheme 2020-04-05T09:36:38Z Lysandros quit (Changing host) 2020-04-05T09:36:38Z Lysandros joined #scheme 2020-04-05T09:46:54Z choas joined #scheme 2020-04-05T09:46:58Z Tirifto joined #scheme 2020-04-05T09:52:02Z choas quit (Ping timeout: 260 seconds) 2020-04-05T09:52:30Z Oddity quit (Ping timeout: 256 seconds) 2020-04-05T09:54:53Z zig: gambit has termite 2020-04-05T09:55:12Z zig: but it is not a used in a giant telco company 2020-04-05T09:58:33Z zig: ocaps still did not tick on my side, neither does actor model. 2020-04-05T09:58:46Z Oddity joined #scheme 2020-04-05T10:09:40Z lockywolf joined #scheme 2020-04-05T10:17:14Z civodul joined #scheme 2020-04-05T10:22:17Z zig: nisstyre: I do not know how ocaps is related to p2p 2020-04-05T10:25:36Z lockywolf_ joined #scheme 2020-04-05T10:26:50Z lockywolf_ quit (Remote host closed the connection) 2020-04-05T10:27:06Z ArthurStrong joined #scheme 2020-04-05T10:27:17Z lockywolf_ joined #scheme 2020-04-05T10:28:12Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-05T10:29:57Z gmaggior joined #scheme 2020-04-05T10:34:26Z luni joined #scheme 2020-04-05T10:37:18Z lockywolf__ joined #scheme 2020-04-05T10:37:30Z TCZ joined #scheme 2020-04-05T10:38:15Z lockywolf_ quit (Read error: Connection reset by peer) 2020-04-05T10:42:32Z TCZ quit (Quit: Leaving) 2020-04-05T10:43:10Z choas joined #scheme 2020-04-05T10:45:47Z lockywolf_ joined #scheme 2020-04-05T10:47:40Z TCZ joined #scheme 2020-04-05T10:48:02Z choas quit (Ping timeout: 256 seconds) 2020-04-05T10:48:26Z xkapastel joined #scheme 2020-04-05T10:48:36Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-05T10:56:28Z lockywolf__ joined #scheme 2020-04-05T10:56:33Z lockywolf_ quit (Read error: Connection reset by peer) 2020-04-05T10:57:12Z TCZ quit (Quit: Leaving) 2020-04-05T10:59:11Z TCZ joined #scheme 2020-04-05T11:03:35Z TCZ quit (Client Quit) 2020-04-05T11:03:54Z TCZ joined #scheme 2020-04-05T11:05:17Z hugh_marera joined #scheme 2020-04-05T11:06:43Z lockywolf__ quit (Read error: Connection reset by peer) 2020-04-05T11:06:58Z lockywolf joined #scheme 2020-04-05T11:10:49Z lockywolf_ joined #scheme 2020-04-05T11:13:11Z lockywolf quit (Read error: Connection reset by peer) 2020-04-05T11:18:23Z choas joined #scheme 2020-04-05T11:22:16Z lockywolf__ joined #scheme 2020-04-05T11:23:37Z choas quit (Ping timeout: 260 seconds) 2020-04-05T11:24:49Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-05T11:25:45Z luni quit (Remote host closed the connection) 2020-04-05T11:32:24Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-05T11:48:33Z ft joined #scheme 2020-04-05T11:49:10Z brendyyn quit (Read error: No route to host) 2020-04-05T11:49:33Z brendyyn joined #scheme 2020-04-05T11:57:01Z retropikzel quit (Quit: Leaving) 2020-04-05T11:57:39Z TCZ quit (Quit: Leaving) 2020-04-05T12:17:39Z retropikzel joined #scheme 2020-04-05T12:21:29Z Tirifto quit (Remote host closed the connection) 2020-04-05T12:23:54Z luni joined #scheme 2020-04-05T12:42:02Z coffeeturtle joined #scheme 2020-04-05T12:42:31Z choas joined #scheme 2020-04-05T12:47:31Z choas quit (Ping timeout: 260 seconds) 2020-04-05T13:04:44Z TCZ joined #scheme 2020-04-05T13:05:53Z Perkol joined #scheme 2020-04-05T13:09:04Z lockywolf__ joined #scheme 2020-04-05T13:12:49Z hugh_marera quit (Quit: hugh_marera) 2020-04-05T13:23:03Z hugh_marera joined #scheme 2020-04-05T13:34:14Z SGASAU joined #scheme 2020-04-05T13:35:55Z terpri quit (Remote host closed the connection) 2020-04-05T13:36:21Z terpri joined #scheme 2020-04-05T13:36:35Z zig quit (Quit: WeeChat 1.9.1) 2020-04-05T13:46:38Z choas joined #scheme 2020-04-05T13:47:08Z jeanbeurre joined #scheme 2020-04-05T13:49:19Z jeanbeurre is now known as fsf-dom 2020-04-05T13:53:07Z choas quit (Ping timeout: 265 seconds) 2020-04-05T13:53:33Z jao joined #scheme 2020-04-05T13:53:45Z fsf-dom quit (Remote host closed the connection) 2020-04-05T13:53:49Z lritter joined #scheme 2020-04-05T13:56:25Z terpri quit (Remote host closed the connection) 2020-04-05T13:56:49Z terpri joined #scheme 2020-04-05T13:58:31Z klovett quit (Remote host closed the connection) 2020-04-05T13:58:35Z turtleman joined #scheme 2020-04-05T13:58:46Z klovett joined #scheme 2020-04-05T14:02:44Z SGASAU quit (Remote host closed the connection) 2020-04-05T14:03:06Z SGASAU joined #scheme 2020-04-05T14:10:25Z terpri quit (Remote host closed the connection) 2020-04-05T14:10:53Z terpri joined #scheme 2020-04-05T14:18:30Z TCZ quit (Quit: Leaving) 2020-04-05T14:19:22Z zig joined #scheme 2020-04-05T14:21:32Z zig: I looked up the new key-value specification for SSD 2020-04-05T14:21:34Z zig: https://www.snia.org/tech_activities/standards/curr_standards/kvsapi 2020-04-05T14:21:59Z zig: it looks like srfi-167 with cursors. One can implement srfi-167 on top of it. 2020-04-05T14:23:17Z hugh_marera quit (Read error: Connection reset by peer) 2020-04-05T14:23:41Z luni: Hi all, there is a way to check "selectively" if a procedure is a generic-function? (using procedure? i get #t both for functions and generic functions) 2020-04-05T14:26:58Z luni quit (Remote host closed the connection) 2020-04-05T14:33:55Z snits quit (Ping timeout: 260 seconds) 2020-04-05T14:42:36Z snits joined #scheme 2020-04-05T14:47:27Z Tirifto joined #scheme 2020-04-05T14:51:05Z coffeeturtle quit (Quit: leaving) 2020-04-05T15:00:03Z daviid quit (Ping timeout: 260 seconds) 2020-04-05T15:00:31Z jcowan: Capabilities themselves are trivial for any Lisp; they are just bignums some whose bits are random (others are typically nonrandom but may or may not be encrypted). A capability *infrastructure* is a whole different story 2020-04-05T15:01:24Z jcowan: I wrote down a spec for a rules-based access control (RBAC) engine, but to make it useful you'd need to have a system that made extensivce use of it. 2020-04-05T15:01:30Z choas joined #scheme 2020-04-05T15:02:55Z jcowan: RBACs have nothing to do with ocaps; I'm just making the point that these things aren't very useful unless you wrap your whole system in them. 2020-04-05T15:04:01Z jcowan: s/rule/role/, sorry 2020-04-05T15:08:03Z choas quit (Ping timeout: 258 seconds) 2020-04-05T15:12:34Z SGASAU quit (Remote host closed the connection) 2020-04-05T15:12:57Z SGASAU joined #scheme 2020-04-05T15:17:48Z johncob joined #scheme 2020-04-05T15:17:50Z johncob quit (Remote host closed the connection) 2020-04-05T15:25:07Z ym555 joined #scheme 2020-04-05T15:27:42Z siraben: If anyone's looking for a clear hygienic macro expansion algorithm, I found https://legacy.cs.indiana.edu/~dyb/pubs/LaSC-5-4-pp295-326.pdf 2020-04-05T15:28:19Z choas joined #scheme 2020-04-05T15:28:21Z siraben: The Kohlbecker algorithm runs in O(n^2) due to how it works based on ฮฑ-renaming, this one is the mark-antimark algorithm and runs in O(n), and, IMHO, is clearer. 2020-04-05T15:35:54Z ym555 quit (Ping timeout: 256 seconds) 2020-04-05T15:38:03Z ym555 joined #scheme 2020-04-05T15:43:35Z nullus joined #scheme 2020-04-05T15:47:10Z mr_machina joined #scheme 2020-04-05T15:51:12Z sarna quit 2020-04-05T15:52:59Z ym555 quit (Ping timeout: 265 seconds) 2020-04-05T15:53:07Z choas quit (Ping timeout: 260 seconds) 2020-04-05T15:53:42Z hugh_marera joined #scheme 2020-04-05T15:56:01Z lockywolf__ quit (Remote host closed the connection) 2020-04-05T15:56:08Z choas joined #scheme 2020-04-05T15:56:30Z lockywolf__ joined #scheme 2020-04-05T15:59:54Z sarna joined #scheme 2020-04-05T16:00:07Z ym555 joined #scheme 2020-04-05T16:00:29Z sarna left #scheme 2020-04-05T16:03:37Z choas quit (Ping timeout: 265 seconds) 2020-04-05T16:16:55Z ym555_ joined #scheme 2020-04-05T16:17:03Z ym555 quit (Ping timeout: 260 seconds) 2020-04-05T16:21:30Z brendyyn quit (Ping timeout: 265 seconds) 2020-04-05T16:22:02Z ym555_ quit (Ping timeout: 258 seconds) 2020-04-05T16:23:11Z ym555_ joined #scheme 2020-04-05T16:25:27Z pjb: //whoami 2020-04-05T16:26:01Z zaifir: Know thyself! 2020-04-05T16:29:16Z edgar-rft: whoa me! 2020-04-05T16:35:33Z choas joined #scheme 2020-04-05T16:39:41Z kjak quit (Ping timeout: 265 seconds) 2020-04-05T16:41:59Z choas quit (Ping timeout: 250 seconds) 2020-04-05T16:42:43Z choas joined #scheme 2020-04-05T16:48:43Z pilne joined #scheme 2020-04-05T16:53:20Z Tirifto quit (Read error: Connection reset by peer) 2020-04-05T16:55:03Z tohoyn joined #scheme 2020-04-05T16:59:55Z terpri quit (Remote host closed the connection) 2020-04-05T17:00:34Z terpri joined #scheme 2020-04-05T17:04:42Z tohoyn quit (Quit: Lรคhdรถssรค) 2020-04-05T17:15:34Z ArthurStrong left #scheme 2020-04-05T17:16:20Z Tirifto joined #scheme 2020-04-05T17:21:55Z choas quit (Ping timeout: 265 seconds) 2020-04-05T17:28:59Z Perkol quit (Remote host closed the connection) 2020-04-05T17:30:09Z partyclicker joined #scheme 2020-04-05T17:40:03Z Riastradh quit (Ping timeout: 250 seconds) 2020-04-05T17:47:58Z terpri quit (Remote host closed the connection) 2020-04-05T17:48:20Z terpri joined #scheme 2020-04-05T17:55:54Z valjda joined #scheme 2020-04-05T18:03:33Z valjda quit (Quit: WeeChat 2.8) 2020-04-05T18:03:55Z valjda joined #scheme 2020-04-05T18:05:30Z drakonis joined #scheme 2020-04-05T18:06:03Z choas joined #scheme 2020-04-05T18:10:43Z valjda quit (Quit: WeeChat 2.8) 2020-04-05T18:10:44Z choas quit (Ping timeout: 265 seconds) 2020-04-05T18:10:57Z valjda joined #scheme 2020-04-05T18:11:25Z valjda quit (Client Quit) 2020-04-05T18:11:43Z valjda joined #scheme 2020-04-05T18:20:55Z retropikzel quit (Quit: Leaving) 2020-04-05T18:26:13Z skapata joined #scheme 2020-04-05T18:36:32Z bars0 joined #scheme 2020-04-05T18:40:29Z choas joined #scheme 2020-04-05T18:42:25Z terpri quit (Remote host closed the connection) 2020-04-05T18:42:50Z terpri joined #scheme 2020-04-05T18:45:26Z aoh quit (Changing host) 2020-04-05T18:45:26Z aoh joined #scheme 2020-04-05T18:53:43Z choas quit (Ping timeout: 250 seconds) 2020-04-05T18:57:06Z Tirifto quit (Remote host closed the connection) 2020-04-05T18:58:13Z Tirifto joined #scheme 2020-04-05T19:01:43Z astro64 joined #scheme 2020-04-05T19:04:51Z astro64: Hello everyone, I have a question regarding searching a B tree that I have defined in scheme. Would it be possible to use something alone the lines of (eq? (read) '(car(cdr(tree)))) in order to traverse the tree and check if the value is present in any node? 2020-04-05T19:05:21Z astro64: https://pastebin.com/pt7ecE2C 2020-04-05T19:05:25Z poga quit (Ping timeout: 250 seconds) 2020-04-05T19:06:34Z poga joined #scheme 2020-04-05T19:06:36Z tryte quit (Remote host closed the connection) 2020-04-05T19:06:52Z tryte joined #scheme 2020-04-05T19:11:03Z wasamasa: recursive data structures require recursive code 2020-04-05T19:11:15Z wasamasa: that aside, your example seems severely confused to me 2020-04-05T19:11:36Z wasamasa: why would you compare the equality of something obtained with read and why would you quote code accessing a tree? 2020-04-05T19:12:20Z bars0 quit (Quit: leaving) 2020-04-05T19:13:02Z astro64: ignore the ' that was a mistype and I plan on having the user enter a value and then the tree be checked 2020-04-05T19:13:20Z astro64: For example if they entered 100 it would shoot out #t 2020-04-05T19:14:05Z astro64: This is my time writing in Scheme so I am not the cleanest. 2020-04-05T19:17:03Z choas joined #scheme 2020-04-05T19:23:09Z astro64: first time* 2020-04-05T19:24:20Z zig: astro64: you want to read text from stdin? 2020-04-05T19:24:34Z zig: astro64: what scheme implementation? 2020-04-05T19:25:42Z astro64: DrRacket 2020-04-05T19:27:39Z astro64: I have also tried to traverse the tree outright by I keep getting a a contract violation error https://pastebin.com/W5SrS8jf 2020-04-05T19:30:33Z astro64: I have the program fully written and working in Java as well if that will help anyone, i am also open to any other strategy to traverse the tree. 2020-04-05T19:34:46Z wasamasa: you can't just blindly take the cdr of a recursive call 2020-04-05T19:35:14Z zaifir: astro64: What is the structure of your tree tye? 2020-04-05T19:35:18Z zaifir: s/tye/type 2020-04-05T19:36:02Z astro64: https://gyazo.com/387e9490e959eea219e050ec6274673b 2020-04-05T19:36:18Z astro64: That is the example I am working with right now 2020-04-05T19:37:07Z zaifir: astro64: Ok, how are you representing it in Scheme? 2020-04-05T19:37:23Z astro64: https://pastebin.com/pt7ecE2C 2020-04-05T19:38:05Z luni joined #scheme 2020-04-05T19:38:26Z zaifir: astro64: That's a list. How does that list represent your tree? 2020-04-05T19:39:25Z seepel joined #scheme 2020-04-05T19:40:28Z astro64: Im not following to be quite honest 2020-04-05T19:41:20Z Tirifto quit (Remote host closed the connection) 2020-04-05T19:41:49Z Tirifto joined #scheme 2020-04-05T19:42:21Z zaifir: astro64: Let's say you want to build a node from some values. What is the constructor function? 2020-04-05T19:43:01Z zaifir: astro64: And given a node x, how do you access the values contained in x? (e.g. the rest of the tree?) 2020-04-05T19:46:06Z gmaggior quit (Quit: Leaving) 2020-04-05T19:46:28Z zaifir: astro64: For example, a binary tree type might be represented in Scheme by the constructor (make-node x lt rt) ; => (x lt rt), and the eliminators node-value = car, node-left-tree = cadr, node-right-tree = caddr. 2020-04-05T19:46:41Z zaifir: astro64: This gives you a vocabulary for working with your type. 2020-04-05T19:49:56Z mr_machina quit (Read error: Connection reset by peer) 2020-04-05T19:50:18Z zaifir: astro64: The primary issue with the code you've pasted is that it seems to be lacking a clear understand of how this tree type works. 2020-04-05T19:50:30Z zaifir: s/understand/understanding/ 2020-04-05T19:50:49Z mr_machina joined #scheme 2020-04-05T19:51:48Z astro64: No my professor is just making me use primitive functions to do it 2020-04-05T19:52:06Z astro64 quit (Remote host closed the connection) 2020-04-05T19:52:50Z zaifir: Gross. 2020-04-05T20:05:34Z TCZ joined #scheme 2020-04-05T20:14:00Z Tirifto quit (Remote host closed the connection) 2020-04-05T20:14:27Z Tirifto joined #scheme 2020-04-05T20:25:12Z jao quit (Read error: Connection reset by peer) 2020-04-05T20:27:46Z daviid joined #scheme 2020-04-05T20:29:30Z luni quit (Quit: Connection closed) 2020-04-05T20:30:14Z seepel quit (Ping timeout: 265 seconds) 2020-04-05T20:31:31Z kjak joined #scheme 2020-04-05T20:35:50Z choas quit (Ping timeout: 256 seconds) 2020-04-05T20:40:22Z ggole quit (Quit: Leaving) 2020-04-05T20:46:23Z ngz joined #scheme 2020-04-05T20:57:00Z gravicappa quit (Ping timeout: 265 seconds) 2020-04-05T21:00:52Z rgherdt quit (Ping timeout: 265 seconds) 2020-04-05T21:06:03Z seepel joined #scheme 2020-04-05T21:15:22Z TCZ quit (Quit: Leaving) 2020-04-05T21:23:53Z future-schemer-8 joined #scheme 2020-04-05T21:25:28Z future-schemer-8 quit (Client Quit) 2020-04-05T21:43:53Z kori quit (Ping timeout: 265 seconds) 2020-04-05T21:45:41Z kori joined #scheme 2020-04-05T21:45:41Z kori quit (Changing host) 2020-04-05T21:45:41Z kori joined #scheme 2020-04-05T21:53:29Z rgherdt joined #scheme 2020-04-05T22:00:03Z seepel quit (Ping timeout: 250 seconds) 2020-04-05T22:06:07Z rgherdt quit (Ping timeout: 265 seconds) 2020-04-05T22:22:30Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-05T22:23:09Z rgherdt joined #scheme 2020-04-05T22:31:12Z zig: maybe getting started with scheme using car and cdr is not a good thing. 2020-04-05T22:31:35Z aeth: It's fine. 2020-04-05T22:32:18Z aeth: I'm assuming the assignment says that you have to use the primitive functions in that you can't use any third party library or built-in convenience functions, not that you can't define your own helper functions over car/cadr/caddr/etc. That would be ridiculous. 2020-04-05T22:32:28Z zaifir: It gets ugly fast. 2020-04-05T22:32:36Z aeth: Which is why you define your own helper functions. 2020-04-05T22:32:39Z drakonis quit (Quit: WeeChat 2.7.1) 2020-04-05T22:32:48Z zaifir: aeth: Yeah, that's the only way that makes sense. 2020-04-05T22:32:55Z aeth: Too bad they left already. 2020-04-05T22:34:20Z aeth: It's a bit strange how introductions to Scheme show you the kind of list processing that's only really useful/used in traditional-style Lisp macros... while Schemes tend to use higher level hygienic macros instead. 2020-04-05T22:34:53Z zaifir: aeth: Wait, what? 2020-04-05T22:34:59Z aeth: zaifir: In a defmacro/define-macro, you just take in a list and return a list. 2020-04-05T22:35:01Z zaifir: aeth: List processing is incredibly useful. 2020-04-05T22:35:24Z aeth: In macros like that. 2020-04-05T22:35:53Z zaifir: aeth: And well, everywhere else. Not to say that lists are the right structure for everything, of course. 2020-04-05T22:38:55Z aeth: Not really. Ime, you want to turn s-expressions-as-syntax into concrete data structures that can guarantee pre-/post-conditions since lists give you no guarantees. 2020-04-05T22:39:20Z zaifir: Are we specifically talking about macros? 2020-04-05T22:39:22Z aeth: Maybe you'll use a list internally, but not in a particularly advanced way, more like something you can iterate over, which isn't really using car/cadr, more map than anything. 2020-04-05T22:39:51Z aeth: (same with an alist/plist/etc.) 2020-04-05T22:40:15Z aeth: The really, really complicated list processing where you really need to know your conses only really goes in macros. 2020-04-05T22:41:20Z zaifir: Functions like (list) map, filter, fold, and unfold are unreasonably effective in functional programming. 2020-04-05T22:43:33Z aeth: If I'm making a tree (not list) for runtime usage, I'm probably going to give it more structure than a cons pair offers. Maybe there are a few niche situations where that might not be the case. Perhaps parsing HTML into s-expressions? 2020-04-05T22:43:38Z aeth: Really, HTML/XML might be it. 2020-04-05T22:44:12Z zaifir: Oh, so this is about the representation of structures. 2020-04-05T22:44:33Z aeth: zaifir: My point is, you basically never need to think in terms of cxr at runtime. 2020-04-05T22:44:37Z seepel joined #scheme 2020-04-05T22:44:45Z zaifir: aeth: Right. 2020-04-05T22:45:11Z zaifir: aeth: Agreed. This is why an assignment on which you could only use c*r would be dumb. 2020-04-05T22:45:13Z aeth: The only real potential counterexample I can think of is HTML/XML. If you want to represent it as (html ...) 2020-04-05T22:45:30Z aeth: Although even that is primarily just a macro unless you're parsing it 2020-04-05T22:46:26Z aeth: Perhaps an interpreter too... like writing a Scheme interpreter in Scheme 2020-04-05T22:48:27Z aeth: You can probably use a pattern matching language for these instead of cxr, though. 2020-04-05T22:48:37Z zaifir: One of the best criticisms of SICP (IMHO) was Wadler's point that there's too much car/cdr in the representation of *everything* in that book. 2020-04-05T22:48:58Z zaifir: (This is a point in favor of pattern-matching.) 2020-04-05T22:51:49Z Tirifto quit (Quit: Leaving.) 2020-04-05T22:53:43Z Naptra quit (Ping timeout: 260 seconds) 2020-04-05T22:55:06Z aeth: zaifir: I suppose the counterarguments would be (1) someone has to implement the pattern matching and (2) you appreciate the shortcuts once you do something the long way. For #2, consider the case of e.g. doing the derivative (or integral) via the definition in a Calculus class before being allowed to do things the short way. 2020-04-05T22:56:59Z X-Scale quit (Ping timeout: 260 seconds) 2020-04-05T22:58:21Z X-Scale` joined #scheme 2020-04-05T22:59:03Z X-Scale` is now known as X-Scale 2020-04-05T23:00:26Z choas joined #scheme 2020-04-05T23:05:23Z choas quit (Ping timeout: 265 seconds) 2020-04-05T23:17:52Z lritter quit (Quit: Leaving) 2020-04-05T23:23:07Z f8l quit (Remote host closed the connection) 2020-04-05T23:24:47Z f8l joined #scheme 2020-04-05T23:27:19Z rgherdt quit (Ping timeout: 265 seconds) 2020-04-05T23:29:42Z TCZ joined #scheme 2020-04-05T23:32:53Z hugh_marera quit (Quit: hugh_marera) 2020-04-05T23:37:46Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-05T23:37:58Z srandon111 quit (Remote host closed the connection) 2020-04-05T23:39:16Z srandon111 joined #scheme 2020-04-05T23:39:47Z zaifir: aeth: Agreed. SICP *does* implement a pattern-matcher later in the book. They could have used it. 2020-04-05T23:40:52Z stultulo joined #scheme 2020-04-05T23:41:08Z f8l quit (Ping timeout: 256 seconds) 2020-04-05T23:41:16Z stultulo is now known as f8l 2020-04-05T23:45:51Z TCZ quit (Quit: Leaving) 2020-04-06T00:00:31Z xelxebar quit (Remote host closed the connection) 2020-04-06T00:01:18Z xelxebar joined #scheme 2020-04-06T00:09:19Z valjda quit (Ping timeout: 258 seconds) 2020-04-06T00:11:07Z seepel quit (Ping timeout: 265 seconds) 2020-04-06T00:14:25Z aeth: zaifir: Maybe they could do it in the next edition. 2020-04-06T00:36:24Z seepel joined #scheme 2020-04-06T00:39:55Z terpri quit (Remote host closed the connection) 2020-04-06T00:40:20Z terpri joined #scheme 2020-04-06T00:45:05Z ngz quit (Ping timeout: 272 seconds) 2020-04-06T00:48:46Z lockywolf joined #scheme 2020-04-06T00:54:14Z ym555_ quit (Ping timeout: 240 seconds) 2020-04-06T01:20:54Z brendyyn joined #scheme 2020-04-06T01:46:25Z sudden quit (Ping timeout: 264 seconds) 2020-04-06T01:47:04Z sudden joined #scheme 2020-04-06T01:53:19Z foof: jcowan: chibi doesn't use SRFI 72, it uses (minimal) extensions to the underlying SC macros added by Marc Nieper-WiรŸkirchen 2020-04-06T02:25:43Z elderK joined #scheme 2020-04-06T02:27:56Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-06T02:34:31Z klovett_ joined #scheme 2020-04-06T02:36:49Z klovett quit (Ping timeout: 264 seconds) 2020-04-06T02:38:26Z SGASAU quit (Remote host closed the connection) 2020-04-06T02:38:54Z SGASAU joined #scheme 2020-04-06T03:10:04Z m1dnight_ quit (Ping timeout: 256 seconds) 2020-04-06T03:12:17Z m1dnight_ joined #scheme 2020-04-06T03:28:57Z turtleman quit (Ping timeout: 250 seconds) 2020-04-06T03:36:02Z m1dnight_ quit (Read error: Connection reset by peer) 2020-04-06T03:36:30Z m1dnight_ joined #scheme 2020-04-06T03:55:28Z choas joined #scheme 2020-04-06T03:59:31Z mr_machina quit (Read error: Connection reset by peer) 2020-04-06T03:59:34Z torbo joined #scheme 2020-04-06T04:00:13Z choas quit (Ping timeout: 265 seconds) 2020-04-06T04:05:43Z seepel quit (Ping timeout: 265 seconds) 2020-04-06T04:34:45Z pilne quit (Quit: Clap on! , Clap off! Clap@#&$NO CARRIER) 2020-04-06T04:35:23Z dmiles quit 2020-04-06T05:03:30Z lockywolf_ joined #scheme 2020-04-06T05:05:57Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-06T05:16:24Z dmiles joined #scheme 2020-04-06T05:17:02Z ArthurStrong joined #scheme 2020-04-06T05:20:21Z elderK quit (Quit: WeeChat 2.8) 2020-04-06T05:39:27Z gravicappa joined #scheme 2020-04-06T05:55:33Z nly quit (Ping timeout: 256 seconds) 2020-04-06T05:55:48Z choas joined #scheme 2020-04-06T05:57:18Z torbo quit (Remote host closed the connection) 2020-04-06T06:00:45Z choas quit (Ping timeout: 265 seconds) 2020-04-06T06:03:04Z erkin: This is strange. My macro expands to (begin (define foo bar) (define baz foo)) and the second definition complains that foo is undefined. 2020-04-06T06:06:02Z ggole joined #scheme 2020-04-06T06:09:33Z erkin: A simple and isolated case like (define-syntax defines (syntax-rules () ((_ (id val) ...) (begin (define id val) ...)))) naturally works. 2020-04-06T06:14:42Z erkin: The problematic macro is this one (or rather its helper transformer a bit above): https://github.com/erkin/SCForms/blob/master/src/define.sls#L48 2020-04-06T06:32:55Z terpri quit (Remote host closed the connection) 2020-04-06T06:33:21Z terpri joined #scheme 2020-04-06T06:48:50Z Naptra joined #scheme 2020-04-06T06:53:38Z cmatei quit (Ping timeout: 240 seconds) 2020-04-06T06:56:08Z choas joined #scheme 2020-04-06T07:00:38Z choas quit (Ping timeout: 258 seconds) 2020-04-06T07:05:04Z cmatei joined #scheme 2020-04-06T07:06:03Z klovett_ quit (Remote host closed the connection) 2020-04-06T07:06:39Z klovett joined #scheme 2020-04-06T07:10:39Z seepel joined #scheme 2020-04-06T07:17:08Z jobol joined #scheme 2020-04-06T07:17:48Z civodul joined #scheme 2020-04-06T07:19:03Z seepel quit (Ping timeout: 265 seconds) 2020-04-06T07:20:19Z f8l quit (Ping timeout: 265 seconds) 2020-04-06T07:21:26Z stultulo joined #scheme 2020-04-06T07:21:49Z stultulo is now known as f8l 2020-04-06T07:39:31Z webshinra quit (Remote host closed the connection) 2020-04-06T07:42:41Z nly joined #scheme 2020-04-06T07:47:09Z choas joined #scheme 2020-04-06T07:58:30Z klovett quit (Remote host closed the connection) 2020-04-06T07:58:45Z klovett joined #scheme 2020-04-06T08:07:16Z CyDefect joined #scheme 2020-04-06T08:08:26Z zig: \ 2020-04-06T08:09:59Z zig: oops 2020-04-06T08:10:19Z ArthurStrong left #scheme 2020-04-06T08:13:57Z aeth: You mistakenly used \ instead of /? are you Windows? 2020-04-06T08:15:10Z lockywolf__ joined #scheme 2020-04-06T08:16:16Z zig: my dog typed \ 2020-04-06T08:16:31Z aeth: that was MS-DOS's reason, too, I think 2020-04-06T08:16:37Z zig: #truestory 2020-04-06T08:18:22Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-06T08:19:21Z v_m_v joined #scheme 2020-04-06T08:26:23Z skapata quit (Quit: ฤœis!) 2020-04-06T08:56:42Z tdammers: I thought MS-DOS' reason was its CP/M heritage 2020-04-06T08:57:03Z tdammers: CP/M didn't have paths at all, but IIRC it did use / to pass options to programs 2020-04-06T08:57:30Z tdammers: and when MS-DOS added directories to the CP/M 8.3 filenames, / was already taken 2020-04-06T09:00:43Z aeth: Well, I thought it got \ from CP/M so I knew most, but not all of that. 2020-04-06T09:01:21Z aeth: they should've just used the Scheme convention, though. 2020-04-06T09:01:44Z aeth: (c: program-files scheme base) 2020-04-06T09:13:57Z tdammers: that would require a shell that knows more than just bytestrings 2020-04-06T09:20:30Z aeth: Unfortunately, the infamous Scheme Shell seems to date to 1994. https://scsh.net/docu/html/man.html 2020-04-06T09:20:41Z aeth: the best acknowledgements page in all documentation if you've never seen it before, by the way 2020-04-06T09:21:14Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-06T09:21:34Z aeth: I don't think it could be written today... 2020-04-06T09:21:36Z valjda joined #scheme 2020-04-06T09:21:43Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-06T09:22:38Z valjda quit (Client Quit) 2020-04-06T09:22:53Z valjda joined #scheme 2020-04-06T09:24:51Z erkin: aeth: Oh lord, that's amazing. 2020-04-06T09:25:04Z erkin: Although I know several people who would write such acknowledgements. 2020-04-06T09:25:24Z aeth: ironically, the point of that is that no one reads the acknowledgements but that's the only part of that book that most people (myself included) have read 2020-04-06T09:26:55Z erkin: It bothers me that the pathological effects of stress is completely overlooked in this industry. 2020-04-06T09:29:10Z erkin: Outsiders view CS/SWE as a laid back industry where a bunch of nerds are sitting in their comfortable chairs and having fun geeking out all day without moving their arses a single centimetre to drive a lorry, weld a pipe or make an incision or smell disgruntled customers' mouth odour. 2020-04-06T09:29:41Z aeth: emphasis on "all day" 2020-04-06T09:29:58Z erkin: In reality, chronic depression and anxiety disorders are rampant. 2020-04-06T09:30:46Z erkin: This post left a lasting impact on me: https://www.reddit.com/r/sysadmin/comments/8mmu1h/failure_is_always_an_option/ 2020-04-06T09:32:34Z erkin: There are several such posts there. 2020-04-06T09:33:31Z erkin: https://www.reddit.com/r/sysadmin/comments/ckkugt/take_care_of_yourself/ https://www.reddit.com/r/sysadmin/comments/9t4ojm/lost_a_workfriend_today/ https://www.reddit.com/r/sysadmin/comments/cx4cgh/theres_always_somebody_to_talk_to/ 2020-04-06T09:34:08Z erkin: 100% of my friends who committed suicide (or, well, all four them) were software developers. Maybe that's just sample bias on my end though. 2020-04-06T09:34:53Z erkin: Bleh. Sorry for the digression. It's just a sensitive point for me. 2020-04-06T09:48:39Z xelxebar joined #scheme 2020-04-06T09:52:19Z tdammers: FOUR? 2020-04-06T09:52:21Z tdammers: fuck. 2020-04-06T09:55:56Z kopiyka joined #scheme 2020-04-06T10:16:59Z kopiykazzz joined #scheme 2020-04-06T10:19:41Z TCZ joined #scheme 2020-04-06T10:24:19Z kopiykazzz quit (Remote host closed the connection) 2020-04-06T11:09:39Z ym555_ joined #scheme 2020-04-06T11:11:09Z turtleman joined #scheme 2020-04-06T11:12:18Z choas quit (Ping timeout: 256 seconds) 2020-04-06T11:13:59Z webshinra joined #scheme 2020-04-06T11:18:33Z choas joined #scheme 2020-04-06T11:28:54Z turtleman quit (Ping timeout: 240 seconds) 2020-04-06T11:34:32Z v_m_v quit (Remote host closed the connection) 2020-04-06T11:37:46Z turtleman joined #scheme 2020-04-06T11:39:35Z v_m_v joined #scheme 2020-04-06T11:42:58Z mdhughes: I ran schsh for a while, but it's too verbose for just daily shell work, too hard to do large-scale engineering (compared to Perl, at the time). 2020-04-06T11:45:00Z mdhughes: Response to anyone who says programming is easy: https://gizmodo.com/programming-sucks-why-a-job-in-coding-is-absolute-hell-1570227192 2020-04-06T11:50:30Z mdhughes: Better perma-url: http://www.stilldrinking.org/programming-sucks 2020-04-06T11:51:02Z lockywolf joined #scheme 2020-04-06T11:55:13Z jobol: The latest version of scsh is 0.6.7, released May 16, 2006. You may download this or previous versions of scsh. 2020-04-06T12:09:44Z v_m_v quit 2020-04-06T12:11:11Z Naptra quit (Remote host closed the connection) 2020-04-06T12:12:03Z zig: mdhughes: great 2020-04-06T12:13:04Z zig quit (Quit: WeeChat 1.9.1) 2020-04-06T12:22:10Z valjda quit (Ping timeout: 256 seconds) 2020-04-06T12:43:35Z lockywolf_ joined #scheme 2020-04-06T12:46:01Z lockywolf quit (Ping timeout: 258 seconds) 2020-04-06T12:49:34Z lockywolf_: How do obarray-less schemes work? 2020-04-06T12:49:55Z lockywolf_: Compare symbols in O(n)? 2020-04-06T12:55:55Z ecraven: just compare the pointers 2020-04-06T12:55:58Z ecraven: unless you mean interning 2020-04-06T13:11:40Z lockywolf_: ecraven, I thought "interning" essentially means "putting symbols in an obarray" 2020-04-06T13:12:02Z lockywolf_: then symbols are created in O((length obarray)) 2020-04-06T13:12:08Z lockywolf_: and compared in O(1) 2020-04-06T13:14:04Z lritter joined #scheme 2020-04-06T13:14:37Z lockywolf_: If I create a new "symbol object" every time I see it in the code, and don't put it in an obarray, I can create symbols in O(1), but comparing would require comparing character-by-character. 2020-04-06T13:14:39Z ecraven: in Scheme, usually a symbol is a pointer. interning it means comparing it to all existing symbols. there are no multiple obarrays in Scheme, only one global one 2020-04-06T13:23:43Z lockywolf_: is there no way to avoid maintaining an obarray? 2020-04-06T13:26:14Z gwatt: not if you want properly interned symbols 2020-04-06T13:28:31Z brendyyn quit (Quit: WeeChat 2.7.1) 2020-04-06T13:28:52Z jao joined #scheme 2020-04-06T13:34:05Z luni joined #scheme 2020-04-06T13:34:06Z erkin: I just had a job interview where they asked me my favourite Scheme implementations and whether I use DrRacket or Emacs to write Racket code. 2020-04-06T13:34:11Z erkin: It was like a dream. 2020-04-06T13:34:56Z wasamasa: and then you woke up? 2020-04-06T13:35:40Z erkin: I'm glad it was only *like* a dream and wasn't actually a dream. 2020-04-06T13:35:55Z erkin: It's for a Clojure dev gig. 2020-04-06T13:36:01Z wasamasa: of course 2020-04-06T13:36:35Z erkin: If it were a dream, it'd be for a Scheme dev gig, naturally. 2020-04-06T13:36:37Z weinholt: lockywolf_, well, if you really want to get away from an obarray... you can encode a symbol's characters directly in the pointer. 6 single-case letters is just 30 bits. sadly, most symbols today are longer than this, but it's fixable for R8RS 2020-04-06T13:36:52Z wasamasa: sounds like lua 2020-04-06T13:37:06Z wasamasa: where they intern short strings and deal with longer strings specially 2020-04-06T13:37:19Z erkin: Isn't that what Python does as well? 2020-04-06T13:37:59Z erkin: The infamous pitfall where two short strings of equal content are "the same object" but two long ones are not. 2020-04-06T13:38:12Z lockywolf_: better with Huffman coding, I guess... 2020-04-06T13:39:06Z lockywolf_: hm, no, I am wrong 2020-04-06T13:39:26Z xkapastel joined #scheme 2020-04-06T13:45:19Z coffeeturtle joined #scheme 2020-04-06T13:50:04Z lockywolf_ quit (Ping timeout: 265 seconds) 2020-04-06T14:02:47Z choas quit (Ping timeout: 260 seconds) 2020-04-06T14:06:45Z choas joined #scheme 2020-04-06T14:22:46Z TCZ quit (Quit: Leaving) 2020-04-06T14:25:59Z srandon111: guys what is meant by "natural recursion"? and what would it be a "non-natural recursioN" ? i found a post on stackoverflow but wasn't able to understand still 2020-04-06T14:43:02Z daviid quit (Ping timeout: 256 seconds) 2020-04-06T14:43:26Z luni: srandon111: stack overflow is not the "Bible" (and the answers given there sometime are misleading)... you should read a good text to understand 2020-04-06T14:43:27Z jcowan: srandon111: Natural recursion is better called structural recursion. 2020-04-06T14:44:49Z jcowan: The idea here is that we pretend that numbers are represented as lists of the form (zero), (S zero), (S S zero), and so on. Then sub1 is just cdr and (add1 x) is just (cons 'S x). 2020-04-06T14:46:26Z jcowan: In this representation, we can see directly that the recursion always terminates. We know because we are very familiar with natural numbers that when you keep on subtracting 1, we always get to 0 eventually. But the list representation makes it clear that removing the first element of a list repeatedly always gets us to the empty list because that is how lists are structured. 2020-04-06T14:47:21Z jcowan: Recursion that is not structural recursion is perfectly legitimate. It is just harder to prove termination because it depends on a particular feature of natural numbers rather than the very definition of what a list is. 2020-04-06T14:47:43Z jcowan: The recursive implementation tracks the recursive definition of lists. 2020-04-06T15:03:54Z xelxebar quit (Remote host closed the connection) 2020-04-06T15:04:21Z xelxebar joined #scheme 2020-04-06T15:08:04Z epony quit (Remote host closed the connection) 2020-04-06T15:09:07Z epony joined #scheme 2020-04-06T15:10:49Z ski quit (Remote host closed the connection) 2020-04-06T15:22:24Z jao quit (Remote host closed the connection) 2020-04-06T15:24:47Z pjb quit (Ping timeout: 272 seconds) 2020-04-06T15:29:26Z srandon111: jcowan, so natural recursion is the same as structural recursion, hence a way to traverse data structures? 2020-04-06T15:30:12Z srandon111: jcowan, in which text can i find this information? 2020-04-06T15:30:14Z srandon111: thanks 2020-04-06T15:45:20Z jcowan: Yes, and I don't know. 2020-04-06T15:46:23Z Tirifto joined #scheme 2020-04-06T16:06:29Z cpressey joined #scheme 2020-04-06T16:09:17Z zaifir: srandon111: https://usi-pl.github.io/lc/sp-2015/doc/Bird_Wadler.%20Introduction%20to%20Functional%20Programming.1ed.pdf 2020-04-06T16:10:32Z zaifir: srandon111: Lots about the flavors of recursion in there. "The classic text on functional programming", according to SRFI 41. 2020-04-06T16:11:48Z TCZ joined #scheme 2020-04-06T16:14:08Z zaifir: srandon111: The compressed slogan is: Inductively-defined types are eliminated by structural recursion. 2020-04-06T16:15:31Z Tirifto quit (Remote host closed the connection) 2020-04-06T16:16:19Z Tirifto joined #scheme 2020-04-06T16:22:23Z ym555_ quit (Quit: leaving...) 2020-04-06T16:34:30Z terpri quit (Remote host closed the connection) 2020-04-06T16:34:49Z terpri joined #scheme 2020-04-06T16:40:24Z cpressey quit (Quit: A la prochaine.) 2020-04-06T16:45:04Z pjb joined #scheme 2020-04-06T16:45:49Z gravicappa quit (Ping timeout: 265 seconds) 2020-04-06T16:47:17Z drakonis joined #scheme 2020-04-06T16:54:16Z srandon111: my thing is... how can i practice recursion... 2020-04-06T16:54:53Z srandon111: for example i have seen an example of insertion sort algorithm using recursion... but although i got the algorithm i still think i didn't get fully more complex forms of recursion 2020-04-06T16:55:23Z srandon111: i mean i get the trivial cases.. .e.g., sum all numbers in a list or make operation X on a data structure... where X is a quite basic case 2020-04-06T16:55:28Z srandon111: operation 2020-04-06T17:02:50Z siraben: srandon111: Essentials of Programming Languages has excellent explanations of structural recursion in the early chapters. 2020-04-06T17:03:47Z siraben: srandon111: It might be worthwhile to learn about recursion "combinators", like foldr, foldl, which encapsulate patterns of recursion. 2020-04-06T17:05:39Z siraben: So your insertion sort, it can be expressed with foldr, the same way sum, product, append can be defined with foldr 2020-04-06T17:07:14Z ahungry joined #scheme 2020-04-06T17:21:36Z TCZ quit (Quit: Leaving) 2020-04-06T17:34:46Z Tirifto quit (Remote host closed the connection) 2020-04-06T17:35:05Z acarrico joined #scheme 2020-04-06T17:38:36Z srandon111: siraben, ok where can i learn about these things? 2020-04-06T17:38:40Z srandon111: siraben, thanks 2020-04-06T17:39:28Z skapata joined #scheme 2020-04-06T18:04:58Z srandon111: guys do you use macros frequentlY ? 2020-04-06T18:06:45Z cemerick_ joined #scheme 2020-04-06T18:07:18Z nikita`_ joined #scheme 2020-04-06T18:08:05Z cemerick quit (Ping timeout: 246 seconds) 2020-04-06T18:08:05Z nikita` quit (Ping timeout: 246 seconds) 2020-04-06T18:08:06Z cemerick_ is now known as cemerick 2020-04-06T18:08:08Z nikita`_ is now known as nikita` 2020-04-06T18:08:13Z coffeeturtle quit (Remote host closed the connection) 2020-04-06T18:08:20Z _apg quit (Ping timeout: 246 seconds) 2020-04-06T18:11:01Z partyclicker quit (Ping timeout: 264 seconds) 2020-04-06T18:22:54Z CyDefect quit (Ping timeout: 256 seconds) 2020-04-06T18:52:29Z _apg joined #scheme 2020-04-06T18:55:19Z tryte quit (Quit: _) 2020-04-06T18:55:20Z tryte_ joined #scheme 2020-04-06T19:02:02Z wasamasa: it's kind of hard to not use built-in macros when writing lisp code 2020-04-06T19:02:22Z wasamasa: if you mean defining your own, that is far less common, yes 2020-04-06T19:05:11Z skapata quit (Ping timeout: 272 seconds) 2020-04-06T19:13:48Z zaifir: srandon111: See earlier link to Bird & Wadler's book. 2020-04-06T19:16:49Z skapata joined #scheme 2020-04-06T19:22:56Z enderby joined #scheme 2020-04-06T19:23:31Z Naptra joined #scheme 2020-04-06T19:43:19Z bgardner left #scheme 2020-04-06T19:47:34Z luni quit (Quit: Connection closed) 2020-04-06T19:48:33Z srandon111: guys i need help with understanding how to reason on recursion... i am able to solve trivia cases but for example it is not clear to me in this case https://bpaste.net/2BCA i am able to get the height of a tree 2020-04-06T19:48:38Z srandon111: can somebody help me? 2020-04-06T19:49:05Z wasamasa: sometimes you need to take a leap of faith 2020-04-06T19:49:41Z wasamasa: that aside, it's hard to help you without knowing how exactly that tree is represented 2020-04-06T19:49:56Z wasamasa: like, what is that false? predicate and why does it work 2020-04-06T19:50:06Z srandon111: wasamasa, ahah :D yes i already head about the leap of faith... ok now i will give you also the data rep 2020-04-06T19:50:37Z wasamasa: this almost reads like a mathematical proof by induction 2020-04-06T19:50:45Z wasamasa: almost since the ML languages do this better 2020-04-06T19:51:44Z srandon111: wasamasa, https://bpaste.net/LQIQ 2020-04-06T19:52:00Z srandon111: here you are... i tried to give data definition and examples 2020-04-06T19:52:51Z wasamasa: you start with the base case, an empty tree has the height 0 2020-04-06T19:53:10Z srandon111: wasamasa, ok right 2020-04-06T19:53:18Z wasamasa: a non-empty tree has a left and right side, the height is determined by whichever is deeper 2020-04-06T19:53:34Z srandon111: right 2020-04-06T19:53:38Z wasamasa: so you use max on that 2020-04-06T19:53:51Z wasamasa: finally, when you go one level deeper, you increment the current height by 1 2020-04-06T19:54:03Z wasamasa: eventually the tree is bound to end and you hit the base case 2020-04-06T19:54:31Z wasamasa: use trace or whatever you have to see how exactly this is evaluated 2020-04-06T19:54:41Z srandon111: ok wasamasa i ad difficulties designing that function 2020-04-06T19:54:44Z srandon111: *had 2020-04-06T19:55:27Z kori quit (Ping timeout: 260 seconds) 2020-04-06T19:56:16Z srandon111: any advice on what to think when designing recursive functions ? 2020-04-06T19:56:23Z srandon111: i mean i know about the trivial cases 2020-04-06T19:56:30Z srandon111: like i could re implement map/reduce/filter 2020-04-06T19:57:04Z wasamasa: think of how the bigger problem is reduced into something closer to the base case 2020-04-06T19:57:11Z TCZ joined #scheme 2020-04-06T19:57:17Z srandon111: ok 2020-04-06T19:57:33Z wasamasa: then prove that you can actually reach the base case by repeating such reductions 2020-04-06T20:01:04Z srandon111: wasamasa, yes but this one with the max and the height of the tree wasa not simple to think about it 2020-04-06T20:01:17Z srandon111: i mean is it quite easy to come up with that solution right? 2020-04-06T20:01:22Z srandon111: but i had serious difficulties 2020-04-06T20:01:37Z wasamasa: it's a matter of practice 2020-04-06T20:01:49Z zaifir: srandon111: Recursion is like riding a bike. Tough at first, then natural. 2020-04-06T20:02:12Z srandon111: ok, by what do you mean by this? 2020-04-06T20:02:29Z srandon111: zaifir, wasamasa sorry mistook channel 2020-04-06T20:02:29Z zaifir: srandon111: I mean, don't worry, it'll start to make sense if you keep doing it. 2020-04-06T20:02:41Z srandon111: okok thanks zaifir i just need exercises 2020-04-06T20:02:43Z srandon111: :D 2020-04-06T20:02:51Z zaifir: srandon111: Have you read The Little Schemer yet? 2020-04-06T20:02:53Z srandon111: don't know where to retrieve other exercises 2020-04-06T20:02:56Z srandon111: zaifir, no 2020-04-06T20:03:04Z srandon111: zaifir, why? does it have a lot of exercises? 2020-04-06T20:03:26Z zaifir: srandon111: Yes and no. You're supposed to work out the answers as you go along. 2020-04-06T20:03:47Z zaifir: srandon111: But the book describes itself (heh) as "A book about thinking recursively". 2020-04-06T20:04:00Z srandon111: okok zaifir 2020-04-06T20:04:30Z srandon111: because i can't go more than very trivial examples... i mean i get the base case, i get the contribution and get the recursive call 2020-04-06T20:04:39Z zaifir: Right. 2020-04-06T20:04:42Z srandon111: but just am not able to design stuff when it gets more complicated 2020-04-06T20:05:09Z zaifir: Again, don't worry. I think it takes time to grasp, especially in complex cases. 2020-04-06T20:06:01Z zaifir: srandon111: The important thing to remember is that recursion often follows an inductively-defined data type. 2020-04-06T20:06:43Z srandon111: zaifir, like lists 2020-04-06T20:06:45Z srandon111: right? 2020-04-06T20:06:52Z srandon111: or trees 2020-04-06T20:06:55Z zaifir: srandon111: Once you understand the recursion pattern of your type, the rest tends to be easy. 2020-04-06T20:06:57Z srandon111: or graphs 2020-04-06T20:06:59Z zaifir: srandon111: Yes. 2020-04-06T20:07:38Z zaifir: srandon111: e.g. for a (finite) list you always have two cases: () and (cons x xs). Base case and recursive case. 2020-04-06T20:08:21Z bgardner joined #scheme 2020-04-06T20:08:43Z zaifir: srandon111: For a binary tree, you might have leaf (base) and branch (recursive) cases. It's about understanding the structure of your data. 2020-04-06T20:09:04Z bgardner left #scheme 2020-04-06T20:09:44Z srandon111: zaifir, but the max problem i posted to me it does not seem is about data 2020-04-06T20:09:51Z srandon111: i mean i understand the data structure 2020-04-06T20:09:59Z srandon111: but was not able to think about the max 2020-04-06T20:10:40Z Tirifto joined #scheme 2020-04-06T20:12:36Z zaifir: srandon111: What do you mean? 2020-04-06T20:13:10Z jobol quit (Quit: Leaving) 2020-04-06T20:14:04Z zaifir: srandon111: You have a case for a leaf of your tree (false, here) and a case for a branch. Sounds like you're recursing on a data structure to me. 2020-04-06T20:14:26Z aeth: zaifir: Does Scheme have countably infinite lists? 2020-04-06T20:16:12Z zaifir: aeth: Streams. 2020-04-06T20:16:48Z zaifir: aeth: So I guess there was no need to qualify that. Habits of reasoning about languages with lazy lists! 2020-04-06T20:17:05Z aeth: Well, there is a lazy library in r7rs 2020-04-06T20:18:06Z aeth: It looks like Streams are SRFI 41, though. Idk if the concepts overlap 2020-04-06T20:19:51Z aeth: The real fun question is if a programming language's infinite data structures must be countable. I'm guessing yes. 2020-04-06T20:20:34Z zaifir: Interesting question. 2020-04-06T20:21:02Z aeth: and that appears to be the case. https://en.wikipedia.org/wiki/Computable_number#Countable_but_not_computably_enumerable 2020-04-06T20:22:09Z aeth: I guess "Countable but not computably enumerable" means that even though, yes, you can map 1, 2, 3, 4, ... to all computable numbers, you can't do it on a computer. So in some sense, does that count from the perspective internal to the programming language? 2020-04-06T20:29:01Z zaifir: I mean, most programming languages have "reals", despite the fact that "almost all real numbers are not computable." (c.f. that WP link, thanks) 2020-04-06T20:29:09Z zaifir: aeth: ^^ 2020-04-06T20:29:52Z jcowan: R7RS-large has three levels of laziness: generators (procedures with state), lazy sequences (lists with a generator or () in the tail), and streams (promises). 2020-04-06T20:30:02Z Tirifto quit (Remote host closed the connection) 2020-04-06T20:30:58Z aeth: zaifir: r7rs-gigantic has uncomputable reals :-P 2020-04-06T20:31:23Z aeth: Optional SRFI, you don't have to implement it... 2020-04-06T20:31:54Z zaifir: aeth: All implementations are partially compliant :) 2020-04-06T20:35:38Z daviid joined #scheme 2020-04-06T20:41:10Z jcowan: That's true anyhow 2020-04-06T20:41:19Z jcowan: 100% compliance is not a thing 2020-04-06T20:44:46Z pilne joined #scheme 2020-04-06T20:44:59Z _apg quit (Remote host closed the connection) 2020-04-06T20:45:28Z ggole quit (Quit: Leaving) 2020-04-06T20:52:36Z _apg joined #scheme 2020-04-06T21:08:58Z hugh_marera joined #scheme 2020-04-06T21:15:20Z Naptra quit (Remote host closed the connection) 2020-04-06T21:19:12Z srandon111: guys are exceptions used in scheme? i mean like in other languages or discouraged? i mean at the end we don't have constraints on return type se we could just return error strings no ? 2020-04-06T21:22:22Z aeth: you can use exceptions 2020-04-06T21:22:42Z aeth: you can also use Either... https://srfi.schemers.org/srfi-189/srfi-189.html 2020-04-06T21:23:11Z ngz joined #scheme 2020-04-06T21:27:46Z srandon111: thanks aeth it would be useful to have a list of the most common srfi used 2020-04-06T21:27:51Z srandon111: is there anywhere ? 2020-04-06T21:31:12Z zaifir: srandon111: There's the list of SRFIs that have made it into R7RS-large. https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/RedEdition.md https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/TangerineEdition.md 2020-04-06T21:31:24Z zaifir: srandon111: Many of those are commonly-used, though some are relatively new. 2020-04-06T21:37:12Z TCZ quit (Quit: Leaving) 2020-04-06T21:44:02Z valjda joined #scheme 2020-04-06T21:47:07Z valjda quit (Client Quit) 2020-04-06T21:50:07Z srandon111: thanks zaifir 2020-04-06T22:08:40Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-06T22:37:03Z srandon111: guys how can i write a json parser? is it simple? i always hear that writing parsers is easy in scheme... but actually how easy it is to write a json parser for example? 2020-04-06T22:37:06Z srandon111: or a yaml parser 2020-04-06T22:38:59Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-06T22:48:09Z hugh_marera quit (Quit: hugh_marera) 2020-04-06T22:51:50Z ahungry quit (Remote host closed the connection) 2020-04-06T22:53:04Z zaifir: srandon111: There are lots of good resources on parsing out there. But you may want to learn Scheme a bit more fully before getting into writing your own parsing system. 2020-04-06T22:59:54Z srandon111: zaifir, ok yes sure... i just wanted to give a look, do you have any reference? 2020-04-06T23:01:31Z zaifir: srandon111: This is the only one I've messed with. It uses a Parsec-style parsing library internally. https://wiki.call-cc.org/eggref/5/medea 2020-04-06T23:02:40Z zaifir: srandon111: CHICKEN also has a cool LALR parser generator https://wiki.call-cc.org/eggref/5/lalr 2020-04-06T23:03:04Z zaifir: Very different techniques, and both worth studying, IMHO. 2020-04-06T23:15:27Z xkapastel joined #scheme 2020-04-06T23:18:31Z notzmv quit (Ping timeout: 258 seconds) 2020-04-06T23:26:11Z TCZ joined #scheme 2020-04-06T23:28:30Z brendyyn joined #scheme 2020-04-06T23:50:06Z choas quit (Ping timeout: 256 seconds) 2020-04-06T23:51:06Z srandon111: guys how can i generate strings starting from a regex? 2020-04-06T23:55:38Z pjb: defining rules. 2020-04-06T23:55:51Z pjb: What string should be generated for the regexp "a" ? 2020-04-06T23:55:54Z pjb: What string should be generated for the regexp "." ? 2020-04-06T23:56:05Z pjb: What string(s) should be generated for the regexp "a+" ? 2020-04-06T23:56:24Z pjb: etcโ€ฆ 2020-04-07T00:10:43Z torbo joined #scheme 2020-04-07T00:15:29Z ahungry joined #scheme 2020-04-07T00:21:07Z TCZ quit (Quit: Leaving) 2020-04-07T00:25:11Z TCZ joined #scheme 2020-04-07T00:27:24Z ngz quit (Ping timeout: 246 seconds) 2020-04-07T00:29:11Z _apg quit (Remote host closed the connection) 2020-04-07T00:40:08Z TCZ quit (Quit: Leaving) 2020-04-07T00:51:18Z Guest26468 joined #scheme 2020-04-07T00:59:07Z drakonis quit (Quit: WeeChat 2.7.1) 2020-04-07T01:03:54Z jeanbeurre joined #scheme 2020-04-07T01:04:39Z Guest26468 is now known as notzmv 2020-04-07T01:10:28Z choas joined #scheme 2020-04-07T01:15:08Z jeanbeurre quit (Quit: Quit) 2020-04-07T01:17:08Z choas quit (Ping timeout: 256 seconds) 2020-04-07T01:18:59Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-07T01:32:15Z choas joined #scheme 2020-04-07T01:37:11Z choas quit (Ping timeout: 265 seconds) 2020-04-07T01:42:18Z lritter quit (Ping timeout: 256 seconds) 2020-04-07T01:42:57Z lritter joined #scheme 2020-04-07T01:48:49Z lritter quit (Ping timeout: 264 seconds) 2020-04-07T02:08:49Z choas joined #scheme 2020-04-07T02:13:52Z choas quit (Ping timeout: 256 seconds) 2020-04-07T03:00:58Z binary001 joined #scheme 2020-04-07T03:04:58Z binary001 quit (Remote host closed the connection) 2020-04-07T03:11:44Z torbo quit (Remote host closed the connection) 2020-04-07T03:46:54Z turtleman quit (Ping timeout: 240 seconds) 2020-04-07T03:51:52Z pilne quit (Quit: Excess flood. Did someone see an ark float by?) 2020-04-07T04:03:19Z retropikzel joined #scheme 2020-04-07T04:37:46Z mouloud[m] joined #scheme 2020-04-07T05:00:17Z choas joined #scheme 2020-04-07T05:05:30Z choas quit (Ping timeout: 256 seconds) 2020-04-07T05:11:57Z retropikzel quit (Quit: Leaving) 2020-04-07T05:15:25Z choas joined #scheme 2020-04-07T05:22:25Z choas quit (Ping timeout: 265 seconds) 2020-04-07T05:26:14Z skapata quit (Remote host closed the connection) 2020-04-07T06:00:56Z ahungry quit (Remote host closed the connection) 2020-04-07T06:02:26Z ggole joined #scheme 2020-04-07T06:15:25Z enderby quit (Remote host closed the connection) 2020-04-07T06:17:36Z marmulak joined #scheme 2020-04-07T06:21:38Z cartwright quit (Remote host closed the connection) 2020-04-07T06:24:54Z cartwright joined #scheme 2020-04-07T06:30:13Z wasamasa: srandon111: you have a regex and you want to generate strings matching it? 2020-04-07T06:31:08Z enderby joined #scheme 2020-04-07T06:33:40Z choas joined #scheme 2020-04-07T06:40:34Z jobol joined #scheme 2020-04-07T06:56:11Z choas quit (Ping timeout: 265 seconds) 2020-04-07T07:03:26Z kjak quit (Ping timeout: 256 seconds) 2020-04-07T07:05:03Z kjak joined #scheme 2020-04-07T07:07:01Z CyDefect joined #scheme 2020-04-07T07:07:25Z greaser|q quit (Ping timeout: 256 seconds) 2020-04-07T07:08:39Z choas joined #scheme 2020-04-07T07:10:35Z greaser|q joined #scheme 2020-04-07T07:18:06Z choas quit (Ping timeout: 256 seconds) 2020-04-07T07:18:23Z _apg joined #scheme 2020-04-07T07:27:29Z choas joined #scheme 2020-04-07T07:30:13Z Oddity quit (Ping timeout: 264 seconds) 2020-04-07T07:36:52Z choas quit (Ping timeout: 256 seconds) 2020-04-07T07:37:19Z choas joined #scheme 2020-04-07T07:46:18Z Oddity joined #scheme 2020-04-07T07:48:34Z choas quit (Ping timeout: 240 seconds) 2020-04-07T07:52:21Z choas joined #scheme 2020-04-07T07:56:47Z choas quit (Ping timeout: 258 seconds) 2020-04-07T08:02:20Z jackhill_ joined #scheme 2020-04-07T08:03:25Z jackhill quit (Ping timeout: 246 seconds) 2020-04-07T08:15:16Z choas joined #scheme 2020-04-07T08:15:40Z civodul joined #scheme 2020-04-07T08:30:02Z klovett quit (Remote host closed the connection) 2020-04-07T08:30:41Z klovett joined #scheme 2020-04-07T08:33:58Z choas quit (Ping timeout: 258 seconds) 2020-04-07T08:57:24Z choas joined #scheme 2020-04-07T09:24:09Z marmulak left #scheme 2020-04-07T09:26:38Z xelxebar quit (Remote host closed the connection) 2020-04-07T09:27:17Z enderby quit (Ping timeout: 250 seconds) 2020-04-07T09:27:38Z enderby joined #scheme 2020-04-07T09:28:23Z xelxebar joined #scheme 2020-04-07T10:33:40Z TCZ joined #scheme 2020-04-07T10:55:37Z luni joined #scheme 2020-04-07T11:47:50Z choas quit (Ping timeout: 256 seconds) 2020-04-07T11:59:13Z choas joined #scheme 2020-04-07T12:02:48Z turtleman joined #scheme 2020-04-07T12:05:29Z TCZ quit (Quit: Leaving) 2020-04-07T12:09:51Z TCZ joined #scheme 2020-04-07T12:31:37Z srandon111: wasamasa, yees 2020-04-07T12:32:07Z wasamasa: you've got some studying ahead then :> 2020-04-07T12:32:47Z wasamasa: at the very least the automata regex can be compiled to and how systems like quickcheck work 2020-04-07T12:33:00Z wasamasa: fortunately scheme is great for not getting into your way when studying things 2020-04-07T12:58:30Z klovett quit (Remote host closed the connection) 2020-04-07T12:58:45Z turtleman quit (Ping timeout: 250 seconds) 2020-04-07T12:58:45Z klovett joined #scheme 2020-04-07T13:10:35Z luni quit (Quit: Connection closed) 2020-04-07T13:15:47Z choas quit (Ping timeout: 260 seconds) 2020-04-07T13:22:15Z choas joined #scheme 2020-04-07T13:39:29Z daviid quit (Ping timeout: 250 seconds) 2020-04-07T13:45:15Z ahungry joined #scheme 2020-04-07T13:48:48Z retropikzel joined #scheme 2020-04-07T13:50:58Z srandon111: guys what is a commmon emacs setup major mode/minor modes for scheme? 2020-04-07T13:53:22Z wasamasa: you don't really need more than just scheme-mode 2020-04-07T13:53:40Z wasamasa: some people use geiser with varying details of success 2020-04-07T13:53:56Z wasamasa: then there's racketeers who have something more powerful than scheme-mode 2020-04-07T13:54:30Z wasamasa: I'm occasionally hacking on deeper integration for chicken-doc and a mode for their wiki dialect 2020-04-07T13:56:23Z siraben: srandon111: See "Enumerating the Strings of Regular Languages" https://www.cs.dartmouth.edu/~doug/nfa.pdf 2020-04-07T13:57:55Z srandon111: siraben, yes but as wasamasa said i still need some study i just finished HTDP (almost) 2020-04-07T13:58:03Z srandon111: and then i am going forward with SICP 2020-04-07T13:58:13Z siraben: Sure. Take your time. 2020-04-07T13:58:20Z srandon111: i didn't understand how to approach the little schemer 2020-04-07T13:58:28Z siraben: With SICP, the lectures are a great companion as well. 2020-04-07T13:58:29Z srandon111: i just see a bunch of question solution with no explanation 2020-04-07T13:58:36Z srandon111: siraben, indeed i am starting with those 2020-04-07T13:58:51Z srandon111: i am finding particularly difficult finding good documentation for guile 2020-04-07T13:58:54Z srandon111: struggling a lot 2020-04-07T13:59:02Z siraben: Are you studying FP for a course or for interesting, by the way? 2020-04-07T13:59:04Z siraben: interest* 2020-04-07T13:59:05Z wasamasa: learn how to use the official docs, lol 2020-04-07T13:59:10Z wasamasa: work with what you got 2020-04-07T13:59:18Z srandon111: wasamasa, they are horrible really 2020-04-07T13:59:19Z srandon111: trust me 2020-04-07T13:59:21Z wasamasa: it's no use in adapting the docs to your personal preferences 2020-04-07T13:59:30Z srandon111: siraben, for interest 2020-04-07T13:59:37Z srandon111: i want to improve as a programmer 2020-04-07T13:59:54Z siraben: Ah, nice. Yeah, FP is a great way to do so. 2020-04-07T14:00:17Z srandon111: wasamasa, i can assure you that those docs are actually not easyto deal with 2020-04-07T14:00:46Z siraben: srandon111: Which docs are you referring to? 2020-04-07T14:00:53Z wasamasa: I have my doubts 2020-04-07T14:00:59Z srandon111: siraben, the official docs of guile, wasamasa trust me 2020-04-07T14:01:05Z wasamasa: all I've seen so far looks standard to me 2020-04-07T14:01:14Z srandon111: wasamasa, i couldn't understand what is a way for example to launch an exception if a file is not fofund 2020-04-07T14:01:27Z srandon111: wasamasa, i think you are much more experienced than me 2020-04-07T14:01:30Z siraben: srandon111: Hm, Guile docs are well-written, IMO. 2020-04-07T14:01:32Z wasamasa: yes, I am 2020-04-07T14:01:46Z srandon111: wasamasa, indeed that's why 2020-04-07T14:01:47Z siraben: srandon111: Perhaps it would be better to study the basics first? 2020-04-07T14:01:52Z srandon111: siraben, i did 2020-04-07T14:01:54Z wasamasa: if your access to a non-existent file does not raise an exception, I'd consider not using that language :P 2020-04-07T14:01:57Z srandon111: i started from racket 2020-04-07T14:02:06Z siraben: Ok. Well, it should have raised an exception. 2020-04-07T14:02:18Z srandon111: wasamasa, how can i catch that exception i mean 2020-04-07T14:02:19Z siraben: And Guile has all sorts on how to handle exceptions. 2020-04-07T14:02:35Z siraben: srandon111: It's in the docs 2020-04-07T14:02:42Z srandon111: siraben, can you point me where? 2020-04-07T14:03:05Z srandon111: since i cannot find half concrete example of useful code there 2020-04-07T14:03:09Z wasamasa: I bet it's something in r6rs 2020-04-07T14:03:26Z srandon111: wasamasa, how long have you been a programmer ? 2020-04-07T14:03:34Z siraben: srandon111: https://www.gnu.org/software/guile/manual/html_node/Raising-and-Handling-Exceptions.html 2020-04-07T14:03:58Z wasamasa: since I've been 12, lol 2020-04-07T14:04:13Z wasamasa: scheme is not a language for beginners 2020-04-07T14:04:23Z srandon111: again siraben yes i found that page still i can't see any example of code 2020-04-07T14:04:34Z siraben: Note that exceptions are part of a larger ability to control the control point of a program at any stage. 2020-04-07T14:04:45Z siraben: srandon111: No, there's prose instead. 2020-04-07T14:05:35Z srandon111: siraben, ok so it's too advanced for me 2020-04-07T14:05:52Z srandon111: as i think that many programmers when looking at docs would like ot see examples 2020-04-07T14:06:04Z wasamasa: that's far from a given 2020-04-07T14:06:12Z wasamasa: apidocs in java for example rarely if ever do that 2020-04-07T14:06:28Z srandon111: wasamasa, yes but java has plenty of examples online on many websites 2020-04-07T14:06:34Z srandon111: not like guile 2020-04-07T14:06:45Z wasamasa: yes, you've chosen to use a language that's not as popular as java 2020-04-07T14:06:49Z srandon111: and java docs are much more comprehensible than that 2020-04-07T14:06:54Z srandon111: wasamasa, i know 2020-04-07T14:07:07Z wasamasa: are they though 2020-04-07T14:07:15Z siraben: srandon111: See section 5.3 of the language standard; http://www.r6rs.org/final/r6rs.pdf 2020-04-07T14:07:16Z wasamasa: I kind of have my doubts people learn java from reading the docs 2020-04-07T14:07:48Z srandon111: wasamasa, you are right but surely java docs are better than guile docs 2020-04-07T14:07:57Z wasamasa: I wouldn't bet on that 2020-04-07T14:08:06Z wasamasa: I've seen plenty useless autogenerated java documentation 2020-04-07T14:08:24Z siraben: FP is mostly about building programs out of small, composable pieces. If you understand the small pieces it scales greatly. 2020-04-07T14:08:30Z wasamasa: generally, docs are good when you need clarification on how a particular concept works, not when you have no idea what you're doing 2020-04-07T14:08:35Z siraben: Java, OTOH, is quite the opposite. One memorizes specalized constructs everywhere. 2020-04-07T14:08:46Z wasamasa: and that part of the manual looks fine to me 2020-04-07T14:08:53Z siraben: s/specalized/specialized 2020-04-07T14:09:06Z wasamasa: it explains the terminology, how exceptions are caught, thrown and then some more 2020-04-07T14:09:09Z siraben: srandon111: What are you trying to do in Scheme? 2020-04-07T14:09:28Z wasamasa: it gives you just enough that you can continue hacking a program together 2020-04-07T14:09:49Z brendyyn quit (Ping timeout: 250 seconds) 2020-04-07T14:09:55Z srandon111: siraben, i am using comfortably racket and i appreciate its doc 2020-04-07T14:09:58Z siraben: There's a lot of programs that don't need exceptions per-se, except in, well, exceptional situations. 2020-04-07T14:09:59Z srandon111: i wanted to try guile 2020-04-07T14:10:11Z wasamasa: racket is the best you'll get in terms of documentation 2020-04-07T14:10:12Z srandon111: siraben, we should in general catch exceptions right ? 2020-04-07T14:10:23Z wasamasa: everything else pales in comparison 2020-04-07T14:10:53Z srandon111: like what is a small piece of code which tries to open a file in binary mode and display a message catching the exception in case the file does not exist? 2020-04-07T14:10:59Z srandon111: how can i do this operation simply ? 2020-04-07T14:11:15Z wasamasa: a message is displayed even if you don't catch it 2020-04-07T14:11:27Z wasamasa: the point is in knowing when to catch things and when not 2020-04-07T14:11:28Z srandon111: wasamasa, i want to catch the exception 2020-04-07T14:11:38Z wasamasa: in this case it doesn't add much value 2020-04-07T14:11:43Z srandon111: can you show me a snippet of code doing that? 2020-04-07T14:12:09Z srandon111: since i've found very exotic snippets of code online like defining macros to implement a try catch bloacks and stuff like that 2020-04-07T14:12:19Z srandon111: but i imagine there should be an easy way to do this 2020-04-07T14:12:35Z wasamasa: I don't use guile, sorry 2020-04-07T14:12:59Z wasamasa: but you'll discover the situation is similar with whatever other scheme dialect you chose to use that's not racket 2020-04-07T14:13:08Z wasamasa: there's quite some legwork to do yourself :> 2020-04-07T14:13:17Z srandon111: what do you mean? 2020-04-07T14:13:24Z srandon111: i mean so i should not catch exceptions? 2020-04-07T14:13:25Z wasamasa: things like figuring out such simple problems 2020-04-07T14:13:27Z siraben: srandon111: I think I have an example 2020-04-07T14:13:37Z srandon111: thanks siraben i would appreciate that 2020-04-07T14:13:38Z wasamasa: you can't just copy-paste from stackoverflow 2020-04-07T14:13:50Z wasamasa: you study the language, the manual, experiment and eventually get something working 2020-04-07T14:14:06Z wasamasa: I find that to not be a deficit of the language and its ecosystem, to the contrary 2020-04-07T14:14:15Z siraben: srandon111: It may please you to know that Haskell, say, doesn't have catchable exceptions. 2020-04-07T14:14:29Z wasamasa: seriously? 2020-04-07T14:14:30Z siraben: So exceptions are truly exceptional. 2020-04-07T14:14:47Z wasamasa: so, what does a haskell webserver do? 2020-04-07T14:15:05Z wasamasa: shut down every time it runs into something not anticipated by the programmer? 2020-04-07T14:15:09Z srandon111: wasamasa, referring to my study... a function like this... https://www.gnu.org/software/guile/manual/html_node/Serial-Number.html#Serial-Number 2020-04-07T14:15:21Z srandon111: implementing a closure... can it be considered a NOT pure function? 2020-04-07T14:15:40Z srandon111: i mean i am using a closure and everytime i call it it gives me back another value 2020-04-07T14:15:41Z siraben: Lol even in the entirety of https://github.com/siraben/zkeme80/blob/master/src/assembler.scm I did not use exceptions 2020-04-07T14:15:46Z wasamasa: many things can, and besides, we call them procedures 2020-04-07T14:15:56Z wasamasa: they're far away from the mathematical concept of functions anyway 2020-04-07T14:16:05Z srandon111: wasamasa, many things can? what? 2020-04-07T14:16:12Z wasamasa: many things are not pure functions 2020-04-07T14:16:26Z srandon111: ok wasamasa and in this case? 2020-04-07T14:16:27Z klovett quit (Ping timeout: 260 seconds) 2020-04-07T14:16:34Z srandon111: i mean in this case is is pure or impure? 2020-04-07T14:16:49Z wasamasa: draw the conclusion 2020-04-07T14:16:57Z siraben: srandon111: But truly, there plenty of other things to learn besides exceptions 2020-04-07T14:17:06Z wasamasa: I don't really see why that's even a question 2020-04-07T14:17:17Z wasamasa: or what's there to be unsure of 2020-04-07T14:18:01Z srandon111: wasamasa, i am trying to understand 2020-04-07T14:18:10Z srandon111: siraben, indeed as i said i am sudying htdp 2020-04-07T14:18:20Z srandon111: but i wanted to work on a peronal project 2020-04-07T14:18:29Z srandon111: and i am fighting with these things i find from time to time 2020-04-07T14:18:35Z srandon111: siraben, do you have examples? 2020-04-07T14:18:43Z srandon111: wasamasa, i am sorry but i have doubts :D 2020-04-07T14:18:48Z wasamasa: why? 2020-04-07T14:18:50Z srandon111: i can't understand how it works... 2020-04-07T14:18:54Z srandon111: i mean if closures are impure 2020-04-07T14:19:02Z srandon111: why so many functional programming languages implement them? 2020-04-07T14:19:06Z siraben: Scheme is not purely functional 2020-04-07T14:19:16Z siraben: Closures can be pure, but need not be 2020-04-07T14:19:17Z srandon111: siraben, no language is purely functional 2020-04-07T14:19:23Z wasamasa: seriously, someone stop that meme of being FP 2020-04-07T14:19:56Z siraben: srandon111: I'd like to know what you're wanting to understand so I could clarify 2020-04-07T14:20:28Z srandon111: siraben, you told me you had an example code of trying to open a file and catch the exception if file does not exist 2020-04-07T14:20:40Z srandon111: wasamasa, so can you please answer to my doubt also if it is trivial? 2020-04-07T14:20:56Z wasamasa: srandon111: no, I'll just let you do some elementary logic 2020-04-07T14:21:06Z wasamasa: srandon111: apply your definition of purity to that example 2020-04-07T14:21:23Z srandon111: wasamasa, ok from what i know that function should not be pure 2020-04-07T14:21:33Z srandon111: because everytime i launch it it gives me a different output 2020-04-07T14:21:56Z srandon111: but at this point i don't understand why many functional languages like haskell, clojure and so on implement closures 2020-04-07T14:22:20Z wasamasa: there isn't a conflict with that 2020-04-07T14:22:28Z wasamasa: that example shows a mutable closure 2020-04-07T14:22:39Z wasamasa: you can have immutable closures just fine 2020-04-07T14:22:49Z wasamasa: you can even have mutable datatypes in haskell and clojure 2020-04-07T14:22:55Z srandon111: wasamasa, ok but then i don't understand how immutable closures are useful... 2020-04-07T14:23:01Z wasamasa: trust me, they are 2020-04-07T14:23:14Z wasamasa: good luck writing any code using callbacks without them 2020-04-07T14:23:39Z siraben: srandon111: because they can compute 2020-04-07T14:24:18Z srandon111: siraben, i have an example i built to show 2020-04-07T14:24:21Z wasamasa: you could even think of functions accessing anything outside their own environment as closures 2020-04-07T14:24:21Z TCZ quit (Quit: Leaving) 2020-04-07T14:24:47Z wasamasa: like arithmetic and other useful functions 2020-04-07T14:24:58Z wasamasa: or variables you've defined 2020-04-07T14:25:23Z srandon111: https://bpaste.net/F5PA ok i built this function using a closure 2020-04-07T14:25:34Z srandon111: local in this case is like let 2020-04-07T14:25:40Z wasamasa: without that concept of a closure, you'd have to go for an uglier concept distinguishing built-ins from other environments 2020-04-07T14:25:49Z srandon111: in this case i can't understand if this is pure or not 2020-04-07T14:26:20Z wasamasa: what is local supposed to be? 2020-04-07T14:26:20Z srandon111: applying logic i think it should be pure 2020-04-07T14:26:32Z srandon111: wasamasa, similar to "let" 2020-04-07T14:26:44Z srandon111: as i said i am studying HTDP which uses a Beginner lang in racket 2020-04-07T14:27:13Z srandon111: wasamasa, applying logic this should be local 2020-04-07T14:27:24Z srandon111: but as i said i am a beginner and not experienced so i wanted a double check 2020-04-07T14:27:28Z srandon111: since i may be wrong 2020-04-07T14:27:39Z wasamasa: rule of thumb: if you can memoize it, it's pure 2020-04-07T14:27:49Z srandon111: wasamasa, i don't know what is memoization 2020-04-07T14:27:59Z wasamasa: compiler rule of thumb: if it's pure, you can inline it 2020-04-07T14:28:08Z wasamasa: caching basically 2020-04-07T14:28:23Z srandon111: mmhh wasamasa i am sorry i am not understanding 2020-04-07T14:28:30Z srandon111: in that case i showed so it's pure? 2020-04-07T14:28:31Z wasamasa: you have a cache mapping function inputs to function outputs 2020-04-07T14:28:44Z srandon111: wasamasa, what? 2020-04-07T14:28:55Z srandon111: i just have a closure 2020-04-07T14:29:06Z wasamasa: yes and you asked what memoization is 2020-04-07T14:29:09Z srandon111: and a trampoline 2020-04-07T14:29:12Z srandon111: wasamasa, no no 2020-04-07T14:29:13Z siraben: srandon111: (catch #t (lambda () (open-file "foo.sfsdf" "r")) (lambda (key . args) (cons key args))) 2020-04-07T14:29:19Z siraben: Guile gives me 2020-04-07T14:29:43Z srandon111: wasamasa, i asked because you gave me that as an answer 2020-04-07T14:29:45Z siraben: (system-error "open-file" "~A: ~S" ("No such file or directory" "foo.sfsdf") (2)) 2020-04-07T14:30:03Z siraben: That was from reading the docs, btw 2020-04-07T14:30:13Z srandon111: siraben, can you link the docs you read? 2020-04-07T14:30:16Z srandon111: thanks a lot siraben 2020-04-07T14:30:21Z wasamasa: srandon111: if you can replace the function with a cache mapping inputs to outputs, then it's pure 2020-04-07T14:30:35Z srandon111: wasamasa, i don't know what is a cache mapping inputs to outputs 2020-04-07T14:30:49Z wasamasa: srandon111: this excludes side effects because those cannot be represented by a cache 2020-04-07T14:30:54Z siraben: A function f : A โ†’ B 2020-04-07T14:31:06Z siraben: like you can compute if a number is even or odd 2020-04-07T14:31:16Z wasamasa: well, you better learn what it is because it's essential in computing :> 2020-04-07T14:31:17Z siraben: if you have an infinite table with precomputed answers 2020-04-07T14:31:26Z srandon111: wasamasa, ok i will definitely 2020-04-07T14:31:42Z srandon111: but can you also please also tell me in that case if it is pure or not ? 2020-04-07T14:31:42Z wasamasa: without them browsing, reading files and who knows what else would be far slower 2020-04-07T14:31:53Z wasamasa: I don't see any reason why it wouldn't be pure 2020-04-07T14:31:59Z srandon111: ok thanks wasamasa 2020-04-07T14:32:02Z wasamasa: closures are circumstantial to the question of purity 2020-04-07T14:32:12Z wasamasa: sure, they make it harder to reason about it 2020-04-07T14:32:12Z srandon111: what does that mean circumstantial 2020-04-07T14:32:13Z srandon111: ? 2020-04-07T14:32:19Z siraben: srandon111: https://www.gnu.org/software/guile/manual/html_node/Catching-Exceptions.html 2020-04-07T14:32:38Z wasamasa: srandon111: side question, how old are you and how terrible is your english 2020-04-07T14:33:03Z srandon111: wasamasa, i am almost 30 and you? and my english is not that good 2020-04-07T14:33:08Z siraben: I think we should try to help them! 2020-04-07T14:33:33Z wasamasa: it feels like I'm trying to write a wikipedia page in simple english 2020-04-07T14:33:46Z wasamasa: about a language that's infamous for being academic and impenetrable 2020-04-07T14:33:57Z wasamasa: this cannot possible end well 2020-04-07T14:34:18Z wasamasa: *possibly 2020-04-07T14:34:59Z srandon111: wasamasa, you have been helpful... the only thing is that you could have avoided writing a wikipedia page if you didn't start to talk about memoization/caching and other stuff... and replied only yes/no 2020-04-07T14:35:04Z srandon111: sorry for being rude 2020-04-07T14:35:09Z srandon111: but that's what i think 2020-04-07T14:35:10Z wasamasa: anyhow, closures are mostly irrelevant to the question of purity 2020-04-07T14:35:45Z wasamasa: they are a solution to the problem of how to represent a function accessing other values outside its own 2020-04-07T14:36:04Z srandon111: wasamasa, yes now i understand that... 2020-04-07T14:36:15Z srandon111: i mean i can have closures which are pure or impure 2020-04-07T14:36:18Z srandon111: it is irrelevant 2020-04-07T14:36:28Z srandon111: wasamasa, how old are you ?? 2020-04-07T14:36:31Z wasamasa: you can invent a solution where you have rules about only global variables, parameters and local variables from the function being allowed 2020-04-07T14:36:36Z wasamasa: or you could just use closures 2020-04-07T14:36:42Z wasamasa: I am 27 2020-04-07T14:36:42Z siraben: srandon111: zaifir wrote an easy to understand tutorial on Scheme 2020-04-07T14:37:00Z srandon111: wasamasa, i need to go back to study the basics 2020-04-07T14:37:07Z srandon111: siraben, where? 2020-04-07T14:37:22Z wasamasa: closures are a more elegant solution, but they require more thought to be implemented efficiently 2020-04-07T14:37:36Z wasamasa: for most of the part they're invisible to the programmer 2020-04-07T14:37:53Z siraben: srandon111: https://en.m.wikibooks.org/wiki/Scheme_Programming/A_taste_of_Scheme 2020-04-07T14:38:15Z siraben: Currently under rewrite because the old was was difficult for beginners. 2020-04-07T14:38:30Z wasamasa: until you run into a situation where you could really need them 2020-04-07T14:38:56Z wasamasa: scheme programmers try to make the most of closures, so they don't bother hiding them and build other stuff on top of them, like object systems 2020-04-07T14:40:12Z srandon111: wasamasa, i am starting now using closures... and to me as of my current stuatus of studying scheme, the most valuable thing other then encapsulation for avoiding the pollution of the namespace, is when i use them as in the example i sent you...like if i want to pass a function which accepts more parameter to a function which accepts a function with a single parameter 2020-04-07T14:40:19Z klovett joined #scheme 2020-04-07T14:40:34Z srandon111: like... if i want to have a function passed to map or filter which also depends from another variable 2020-04-07T14:40:36Z srandon111: i can make a closure 2020-04-07T14:40:49Z srandon111: those are the two applications that i have seen and they are great 2020-04-07T14:40:50Z wasamasa: sure, but this case isn't anything terribly special 2020-04-07T14:41:00Z wasamasa: a javascript programmer wouldn't even realize it 2020-04-07T14:41:00Z srandon111: wasamasa, what do u mean? 2020-04-07T14:41:36Z wasamasa: you take it for granted that an inner function can retain access to outside variables 2020-04-07T14:41:53Z TCZ joined #scheme 2020-04-07T14:42:04Z wasamasa: so much that if you ever run into a programming language that doesn't do this, you think it's broken 2020-04-07T14:42:15Z wasamasa: like elisp, it doesn't do closures by default 2020-04-07T14:42:23Z srandon111: wasamasa, i know other programming language have a different take on lexical context 2020-04-07T14:42:29Z srandon111: i know i come from other programming language 2020-04-07T14:42:48Z srandon111: doing the same thing in pythohn is possible but ugly so they have decorators and stuff like that to tackle the same problem 2020-04-07T14:43:11Z srandon111: wasamasa, anyway the applications i described are the core of closures right? 2020-04-07T14:43:11Z wasamasa: that's probably why many lisp users dislike python :> 2020-04-07T14:43:22Z srandon111: wasamasa, i see 2020-04-07T14:43:54Z srandon111: i mean encapsulation and abstracting functions like filter/map/reduce/fold or any HOF 2020-04-07T14:44:00Z wasamasa: these are the most common ways of using them, yes 2020-04-07T14:44:04Z wasamasa: but far from all 2020-04-07T14:44:07Z srandon111: thanks 2020-04-07T14:44:23Z srandon111: wasamasa, ok at this point of my training i am excited at least i understood the main applications 2020-04-07T14:44:37Z srandon111: just for curiosity what are other things that can be done ? sisnnce you said far from all 2020-04-07T14:45:12Z wasamasa: callbacks accessing their original environment are something that's a lot uglier without closures 2020-04-07T14:45:20Z srandon111: at this pouint i also think it may be possible to generate functions from functionsusing closures... like i have function returning another function customized on a closure 2020-04-07T14:45:28Z wasamasa: in C you simulate that with APIs where you pass a function pointer and void pointer to user data 2020-04-07T14:45:43Z srandon111: ok i see wasamasa 2020-04-07T14:45:57Z mdhughes: The Java Docs used to be amazing. They have a beginner's "trail" and more advanced trails, and the full JavaDocs; they were the first major language to put a doc-generation tool in the language and use it. 2020-04-07T14:46:14Z f8l quit (Remote host closed the connection) 2020-04-07T14:46:23Z srandon111: mdhughes, that's what i was saying 2020-04-07T14:46:41Z srandon111: but somebody believes that guile docs are better 2020-04-07T14:46:57Z klovett_ joined #scheme 2020-04-07T14:47:33Z f8l joined #scheme 2020-04-07T14:49:43Z srandon111: wasamasa, how did you start with scheme and what is your background? 2020-04-07T14:49:45Z mdhughes: Yeah, I'm unimpressed with any Scheme's docs. And there's no equivalent to JavaDoc. I write my own comments as inline strings, and have a tool to extract them, but it's not great. 2020-04-07T14:50:01Z klovett quit (Ping timeout: 264 seconds) 2020-04-07T14:50:03Z srandon111: mdhughes, racket docs are good to say the truth 2020-04-07T14:50:13Z srandon111: and clojure docs are wonderful although it is not considered a scheme 2020-04-07T14:51:11Z mdhughes: Sort of. They do have scribble, and some topic pages aren't bad, but there's no easy way to do inline documentation in Racket. 2020-04-07T14:51:41Z srandon111: mdhughes, surely better than many other schemes, e.g., guile 2020-04-07T14:51:45Z revtintin joined #scheme 2020-04-07T14:51:59Z wasamasa: srandon111: I had it in uni, walked into a clojure user group and they recommended me to use scheme for personal projects 2020-04-07T14:52:34Z srandon111: wasamasa, cool! i didn't do any FP or compiler or scheme-based course at univ 2020-04-07T14:53:11Z wasamasa: so after using python mostly, I studied scheme on the side and eventually figured it out enough about it to do personal projects, mostly web stuff, CLI tools and researching other topics interesting me 2020-04-07T14:54:04Z wasamasa: currently I'm figuring out things about git to make my own git hosting 2020-04-07T14:55:59Z srandon111: wasamasa, ok cool, and sorry for before, didn't want to seem rude, i will study more and come back to annoy you :D 2020-04-07T14:56:25Z wasamasa: the only reason I picked up CHICKEN is because I met people through that group contributing to it 2020-04-07T14:59:45Z jackhill_ is now known as jackhill 2020-04-07T14:59:46Z srandon111: wasamasa, why in a clojure group they adviced you to use scheme instead of cljure ? 2020-04-07T15:00:12Z wasamasa: they accepted more topics than just clojure, for example other languages you do FP with 2020-04-07T15:00:33Z srandon111: i think clojure is fantastic anyway from the small things i have seen 2020-04-07T15:01:49Z wasamasa: it's not the answer to everything and at that time I've pondered doing a project involving C 2020-04-07T15:02:02Z wasamasa: so a scheme compiling to C would work for that purpose 2020-04-07T15:02:23Z srandon111: ok so basically that's why you wanted chicken 2020-04-07T15:02:57Z wasamasa: I didn't end up doing the project, but it helped with the decision 2020-04-07T15:03:14Z wasamasa: they also recommended trying racket 2020-04-07T15:04:29Z srandon111: cool 2020-04-07T15:08:27Z hansbauer[m] left #scheme 2020-04-07T15:13:50Z notzmv quit (Ping timeout: 265 seconds) 2020-04-07T15:37:42Z revtintin quit (Ping timeout: 265 seconds) 2020-04-07T15:52:21Z notzmv joined #scheme 2020-04-07T15:53:52Z revtintin joined #scheme 2020-04-07T15:54:04Z Riastradh joined #scheme 2020-04-07T16:01:25Z revtintin quit (Ping timeout: 264 seconds) 2020-04-07T16:02:48Z jobol quit (Quit: Leaving) 2020-04-07T16:12:13Z choas quit (Ping timeout: 264 seconds) 2020-04-07T16:20:57Z hugh_marera joined #scheme 2020-04-07T16:24:30Z terpri quit (Remote host closed the connection) 2020-04-07T16:25:10Z terpri joined #scheme 2020-04-07T16:31:52Z lritter joined #scheme 2020-04-07T16:35:50Z luni joined #scheme 2020-04-07T16:36:00Z TCZ quit (Quit: Leaving) 2020-04-07T16:41:08Z TCZ joined #scheme 2020-04-07T16:49:25Z zaifir: Clojure is basically Scheme... 2020-04-07T16:49:58Z zaifir: I'd personally rather just use Kawa if I had to deal with the J word. 2020-04-07T16:54:45Z hugh_marera quit (Read error: Connection reset by peer) 2020-04-07T16:54:59Z hugh_marera joined #scheme 2020-04-07T16:55:36Z hugh_marera quit (Client Quit) 2020-04-07T16:59:17Z revtintin joined #scheme 2020-04-07T17:01:36Z srandon111: zaifir, is it closer to scheme than lisp? 2020-04-07T17:01:59Z wasamasa: kawa is a scheme implementation 2020-04-07T17:02:56Z wasamasa: one that's even harder to get into than guile 2020-04-07T17:03:35Z wasamasa: I wonder how srandon111 would rate its manual :> 2020-04-07T17:04:02Z srandon111: ahahah wasamasa 2020-04-07T17:04:09Z srandon111: probably no wonder why nobody uses it 2020-04-07T17:04:41Z wasamasa: I mean, compared to the big three any other scheme has close to no users 2020-04-07T17:04:50Z wasamasa: so no surprises there 2020-04-07T17:05:27Z wasamasa: it's like discovering an ancient soviet camera in your grandpa's attic and learning photography the hard way 2020-04-07T17:05:59Z srandon111: wasamasa, who are the big three? 2020-04-07T17:06:04Z srandon111: chicken, chez, gambit? 2020-04-07T17:06:07Z wasamasa: racket, CHICKEN, Guile 2020-04-07T17:06:13Z srandon111: ok 2020-04-07T17:06:35Z srandon111: wow guile is in the big three? i didn't know that 2020-04-07T17:06:51Z wasamasa: it's used in well-known software 2020-04-07T17:07:29Z wasamasa: chez is getting somewhere though, ever since people learned a commercial-quality scheme implementation got open-sourced 2020-04-07T17:07:36Z TCZ quit (Quit: Leaving) 2020-04-07T17:07:40Z srandon111: wasamasa, mmhh yes i repeat my concerns... i mean seems something for experienced scheme users, not something to approach as somebody who only wrote some programming project 2020-04-07T17:07:50Z wasamasa: so maybe soon four 2020-04-07T17:08:17Z srandon111: i thinkk lisps are gaining some popularity nowadays thanks to clojure 2020-04-07T17:08:29Z srandon111: people learns clojure and is fascinated by other lisps 2020-04-07T17:16:15Z jcowan: Some Schemes are very popular in their niches, like Gambit for numerical programmers. Chez might do well for them too, but it's library-sparse 2020-04-07T17:19:01Z omtrent quit (Quit: WeeChat 2.7.1) 2020-04-07T17:19:51Z srandon111: jcowan, i wonder how many people in numerical programming use gambit still 2020-04-07T17:20:14Z jcowan: People who are both Schemers and numerical programmers do, is what I meant 2020-04-07T17:20:44Z srandon111: i just hypothesize that the intersection of those sets you cited is almost the vooid set :D 2020-04-07T17:20:53Z ravndal joined #scheme 2020-04-07T17:21:15Z jcowan: which historically means numerical programmers who decided to use Scheme because it appealed to them 2020-04-07T17:21:17Z wasamasa: the problem is that we rarely hear of them, if ever 2020-04-07T17:21:39Z jcowan: there is a gambit non-IRC chat that's fairly active 2020-04-07T17:21:46Z srandon111: wasamasa, they tend to hide to avoid being ocked by the other numerical programmers who use algol like languages 2020-04-07T17:22:11Z wasamasa: I mean lisp programmers in general 2020-04-07T17:22:13Z srandon111: jcowan, it depends what is your definition of "fairly" 2020-04-07T17:22:13Z jcowan: Gambit is also unique, I think, in having a Python back end, which means you can develop in Scheme and integrate it into Python/Numpy programs 2020-04-07T17:22:36Z jcowan: is "ocking" what ockers do, or what is done to them? 2020-04-07T17:23:02Z wasamasa: sometimes it's people who were banging out a project for years, then publish it online and go back into hiding again 2020-04-07T17:23:14Z wasamasa: I remember such a report on doing an ios game with gambit 2020-04-07T17:23:19Z srandon111: *mocked 2020-04-07T17:23:38Z Tirifto joined #scheme 2020-04-07T17:23:46Z srandon111: fooled 2020-04-07T17:29:42Z jcowan laughs at himself 2020-04-07T17:29:55Z jcowan: Too obvious for me to think of it 2020-04-07T17:34:00Z gwatt: lambda native uses gambit 2020-04-07T17:34:03Z gwatt: http://www.lambdanative.org/ 2020-04-07T17:34:30Z gwatt: lambda native is a framework for building mobile apps 2020-04-07T17:44:04Z drakonis joined #scheme 2020-04-07T18:08:36Z choas joined #scheme 2020-04-07T18:13:09Z daviid joined #scheme 2020-04-07T18:13:21Z choas quit (Ping timeout: 250 seconds) 2020-04-07T18:25:39Z ggole quit (Quit: Leaving) 2020-04-07T18:28:39Z srandon111: guys i am learning scheme, and just finished few exercises and am quite comfortable with basic stuff... i was trying to read this code https://github.com/NalaGinrut/artanis/blob/master/artanis/artanis.scm#L228 2020-04-07T18:28:46Z srandon111: but can't undestand why so many lambdas 2020-04-07T18:28:53Z srandon111: i mean what is the dev trying to do there? 2020-04-07T18:29:43Z pjb: srandon111: a general-tag is represented as a closure. 2020-04-07T18:29:56Z pjb: srandon111: closures are equivalent to objects. 2020-04-07T18:31:03Z ArthurStrong joined #scheme 2020-04-07T18:31:20Z pjb: srandon111: more pragmatically, you can see that a tag is defined as a function taking attributes and returning a function taking contents which returns a string containing the HTML tag with attributes and contents. 2020-04-07T18:32:35Z pjb: srandon111: try: ((a-tag '("href" "/index.html")) "home") 2020-04-07T18:33:05Z pjb: srandon111: it's called "functional abstraction". 2020-04-07T18:33:46Z srandon111: pjb, ok i got you 2020-04-07T18:34:07Z srandon111: in the exercises that i did i saw Higher Order functions getting functions as arguments... 2020-04-07T18:34:15Z srandon111: here instead there is a function returning a function 2020-04-07T18:34:18Z pjb: Yes. 2020-04-07T18:34:19Z revtintin quit (Quit: WeeChat 1.9.1) 2020-04-07T18:34:20Z srandon111: which still makes it a HOF 2020-04-07T18:34:29Z srandon111: thanks pjb 2020-04-07T18:34:39Z pjb: Indeed. As you can see, it's so common, it's not worth mentionning HOF. 2020-04-07T18:34:53Z srandon111: still can't understand why you mentioned objects associating it with closures 2020-04-07T18:34:55Z pjb: functions are just data like any other data. 2020-04-07T18:35:04Z srandon111: pjb, i got you 2020-04-07T18:35:07Z srandon111: i mean i see 2020-04-07T18:35:25Z SGASAU quit (Remote host closed the connection) 2020-04-07T18:35:37Z SGASAU joined #scheme 2020-04-07T18:35:40Z pjb: srandon111: because that's equivalent. This is a discovery Abelson made. He implemented objects in scheme, and he implemented closures. Then he saw that both implementations were identical. 2020-04-07T18:36:16Z srandon111: pjb, that lambda notation is confusing me, since i come from racket HTDP student language 2020-04-07T18:36:31Z srandon111: could you please write down a very simple example of closure behaving like an object? 2020-04-07T18:37:35Z pjb: a-tag 2020-04-07T18:38:12Z pjb: a-tag is an object. It accepts only one message, so it's not named. The arguments are the attributes. (a-tag '("href" "/index.html")) returns a new object. 2020-04-07T18:38:43Z pjb: this new object accepts only one message, so it's not named. The arguments is the contents. ((a-tag '("href" "/index.html")) "home") returns a new object, a stringโ€ฆ 2020-04-07T18:39:23Z pjb: srandon111: if you want to accept multiple messages, you can dispatch on a symbol passed as first argument to the object. 2020-04-07T18:40:18Z luni left #scheme 2020-04-07T18:40:32Z mdhughes: Chez + thunderchez is really quite a nice competitor for Julia, R, and Python as a user-friendly dev system, but it does need some numeric libraries. 2020-04-07T18:43:13Z mdhughes: Does any Scheme support Jupyter notebooks? I can't work with those things, but all the math nerds love them. 2020-04-07T18:43:39Z pjb: srandon111: https://termbin.com/ctzmw 2020-04-07T18:52:26Z retropikzel quit (Quit: Leaving) 2020-04-07T19:02:11Z Tirifto quit (Quit: Leaving.) 2020-04-07T19:02:16Z CyDefect quit (Quit: Verlassend) 2020-04-07T19:05:34Z z-memory joined #scheme 2020-04-07T19:08:06Z srandon111: wow thanks pjb 2020-04-07T19:08:11Z srandon111: i am reeading the code right now 2020-04-07T19:08:59Z choas joined #scheme 2020-04-07T19:09:00Z srandon111: pjb, a curiosity why you use (define balance (lambda (amount) ... instead of just (define (balance amount)) 2020-04-07T19:09:20Z srandon111: i found it much more easier to read, is it because i come from other languages/ 2020-04-07T19:09:20Z srandon111: ? 2020-04-07T19:09:28Z pjb: since they're equivalent, it's just random. 2020-04-07T19:09:38Z srandon111: pjb, ok there is no accepted convention? 2020-04-07T19:10:03Z jcowan: Most people use the non-lambda form, but there is no strong convention 2020-04-07T19:10:11Z srandon111: ok thanks jcowan 2020-04-07T19:10:20Z ecraven: it's easier to convert to case-lambda, for example 2020-04-07T19:10:32Z srandon111: ecraven, what's that ? 2020-04-07T19:10:42Z jcowan: Once you get past layout, Lispers expect the person reading code to adapt to the writer's conventions 2020-04-07T19:10:53Z pjb: Note that (define (balance amount) โ€ฆ) is a special case of currying. It can also go multiple levels; (define (((generalized-tag tag) attributes) contents) (with-โ€ฆ โ€ฆ)) 2020-04-07T19:11:08Z jcowan: In principle. But most Schemes don't support that. 2020-04-07T19:11:16Z srandon111: pjb, wait wait i don't know what is currying 2020-04-07T19:11:36Z srandon111: oh ok i get tht 2020-04-07T19:11:36Z pjb: Which is why I deem (define foo (lambda โ€ฆ)) simplier. 2020-04-07T19:12:09Z jcowan: case-lambda is a gadget for defining functions that are overloaded on the number of arguments they accept 2020-04-07T19:12:30Z srandon111: jcowan, ok like multimethods in clojure 2020-04-07T19:12:31Z srandon111: ? 2020-04-07T19:12:43Z jcowan: (define foo (case-lambda ((x) ...) ((x y) ...) ((x y z a b) ...))) 2020-04-07T19:12:51Z jcowan: takes 1, 2, or 5 arguments 2020-04-07T19:13:00Z jcowan: It does not overload on argument type 2020-04-07T19:13:09Z choas quit (Ping timeout: 250 seconds) 2020-04-07T19:13:55Z srandon111: anyway pjb thanks a lot 2020-04-07T19:14:02Z srandon111: i see what you meant now 2020-04-07T19:14:07Z srandon111: your code example is very clear 2020-04-07T19:16:59Z skapata joined #scheme 2020-04-07T19:22:50Z srandon111: wasamasa, e.g., read here... https://www.gnu.org/software/guile/manual/html_node/Binary-I_002fO.html 2020-04-07T19:23:07Z srandon111: ok how can i understand from this manual page how to open a file in binary mode ??? 2020-04-07T19:23:32Z wasamasa: > Guileโ€™s ports are fundamentally binary in nature 2020-04-07T19:23:37Z wasamasa: that tells you all you need 2020-04-07T19:23:44Z wasamasa: you use ports normally 2020-04-07T19:23:59Z wasamasa: if you need to get binary data out of them, the section gives you a list of procedures for that 2020-04-07T19:24:03Z srandon111: wasamasa, i don't know what ports are 2020-04-07T19:24:19Z wasamasa: a thing described in great detail in the scheme standard 2020-04-07T19:24:32Z srandon111: wasamasa, ok so i should reead the scheme standard first 2020-04-07T19:24:33Z srandon111: ? 2020-04-07T19:24:35Z srandon111: basically 2020-04-07T19:24:37Z wasamasa: yes 2020-04-07T19:24:41Z srandon111: ok the r6rs ? 2020-04-07T19:24:58Z wasamasa: well, maybe the previous section is sufficient 2020-04-07T19:25:10Z wasamasa: https://www.gnu.org/software/guile/manual/html_node/Ports.html 2020-04-07T19:25:28Z wasamasa: which gives a small explanation of how these things work 2020-04-07T19:26:12Z wasamasa: but you should be reading the scheme standard your implementation follows anyway :D 2020-04-07T19:27:21Z wasamasa: https://www.gnu.org/software/guile/manual/html_node/Guile-Scheme.html 2020-04-07T19:27:55Z wasamasa: so r5rs is a good start 2020-04-07T19:28:43Z srandon111: ok wasamasa thanks... indeed i was confused now that i know i will read that... 2020-04-07T19:39:48Z izh_ joined #scheme 2020-04-07T19:45:08Z SGASAU quit (Remote host closed the connection) 2020-04-07T19:45:30Z SGASAU joined #scheme 2020-04-07T19:48:28Z SGASAU quit (Remote host closed the connection) 2020-04-07T19:50:37Z SGASAU joined #scheme 2020-04-07T19:54:39Z enderby quit (Remote host closed the connection) 2020-04-07T20:12:20Z pilne joined #scheme 2020-04-07T20:19:04Z jao joined #scheme 2020-04-07T20:20:11Z TCZ joined #scheme 2020-04-07T20:26:22Z hugh_marera joined #scheme 2020-04-07T20:37:33Z turtleman joined #scheme 2020-04-07T20:41:33Z izh_ quit (Quit: Leaving) 2020-04-07T20:44:09Z turtleman quit (Ping timeout: 250 seconds) 2020-04-07T20:55:26Z aeth: I'm sorry, reddit, but I don't think I need to be sent random messages every few days on how to run a demanding, important reddit community just because I created /r/schemememes. Or are they predicting future growth that I'm not? 2020-04-07T20:56:58Z aeth: 2 5 days ago, 1 4 days ago, and 1 now... and 3 of those 4 seem to be more about pitching the reddit mod lifestyle to me. 2020-04-07T21:00:08Z aeth: oh, sorry, I forgot. it's r/schemememe with no s because that way it's tail recursive. 2020-04-07T21:16:16Z gioyik joined #scheme 2020-04-07T21:17:31Z ahungry quit (Remote host closed the connection) 2020-04-07T21:20:48Z choas joined #scheme 2020-04-07T21:23:40Z hugh_marera quit (Read error: Connection reset by peer) 2020-04-07T21:24:59Z hugh_marera joined #scheme 2020-04-07T21:25:30Z hugh_marera quit (Client Quit) 2020-04-07T21:44:26Z f8l quit (Remote host closed the connection) 2020-04-07T21:45:05Z jcowan: so pronounced sche-me-me-me-... 2020-04-07T21:45:09Z jcowan: but you have to know where to stop 2020-04-07T21:45:20Z choas quit (Ping timeout: 265 seconds) 2020-04-07T21:46:10Z f8l joined #scheme 2020-04-07T21:46:13Z aeth: yes 2020-04-07T21:46:27Z aeth: jcowan: Oh, and there's a meme about r7rs, too. https://www.reddit.com/r/schemememe/comments/fu5yzk/dilemma/ 2020-04-07T21:47:01Z aeth: r8rs or r7rs-huge, what's next? 2020-04-07T21:47:24Z aeth: (Technically, if everything's just a list of SRFI's, there's no reason to stop) 2020-04-07T21:50:01Z aeth: I guess you could also do it like an old (pre-digital) encyclopedia where you release yearly entries. So e.g. r7rs-2024 with new SRFIs added since r7rs-2023. 2020-04-07T21:54:05Z aeth: If that happened, r7rs would be the last Scheme. 2020-04-07T21:56:02Z jcowan: I do dockets so we can stop at any time. 2020-04-07T21:56:13Z jcowan: The Indigo Docket contains the stuff I think we probably don't want 2020-04-07T21:56:30Z jcowan: r7rs will not be finished, just abandoned 2020-04-07T21:58:11Z lucasb joined #scheme 2020-04-07T21:59:51Z jcowan: I think r8rs will come when it's clear that r7rs-small is outmoded 2020-04-07T22:00:16Z aeth: It is the year 3187. The R7RS Pale Lavender edition has just passed its vote. R7RS Pale Magenta is up next. The decision to switch to Wikipedia's "List of colors (compact)" centuries ago has ensured that r7rs will never be abandoned. 2020-04-07T22:00:30Z f8l quit (Ping timeout: 258 seconds) 2020-04-07T22:00:39Z jcowan: I note the subreddit is marked HOT, which is probably about the high posting rate (even though the absolute number is small) and that's why you are getting email about it 2020-04-07T22:00:41Z aeth: And, yeah, I guess that because r7rs-small is the only thing that isn't SRFI based, so that's the only thing that would require changing versions. 2020-04-07T22:00:51Z aeth: s/so that's/that's/ 2020-04-07T22:00:53Z stultulo joined #scheme 2020-04-07T22:01:27Z stultulo quit (Remote host closed the connection) 2020-04-07T22:02:16Z jcowan: maybe we should stick with https://www.rapidtables.com/web/color/html-color-codes.html 2020-04-07T22:02:36Z jcowan: that's 140 dockets 2020-04-07T22:02:46Z jcowan: I have tried to keep the names non-compound 2020-04-07T22:02:51Z jcowan: no "dark brown" or what not 2020-04-07T22:02:54Z stultulo joined #scheme 2020-04-07T22:03:19Z stultulo is now known as f8l 2020-04-07T22:03:49Z aeth: jcowan: as far as traffic goes... traffic stats: 15 uniques (3 subscriptions) on the 2nd, 77 (13) on the 3rd, 146 (30) on the 4th, 21 (3) on the 5th, 26 (4) on the 6th... so clearly Reddit itself was driving some random people to the subreddit on the 3rd and 4th, but they probably didn't stay long. 2020-04-07T22:03:54Z jcowan: anyone who has a few minutes: look at the Indigo Docket at https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/ColorDockets.md and see if anything is clearly worth salvaging from there 2020-04-07T22:04:12Z aeth: It must have been strange for a random redditor to see obscure memes for an obscure programming language. 2020-04-07T22:04:17Z jcowan: "Hello! My name is Indigo Montoya. You killed my SRFI. Prepare to die!" 2020-04-07T22:08:39Z aeth: jcowan: perhaps this https://bitbucket.org/cowan/r7rs-wg1-infra/src/9e52823e7a45064cb438d5ccf518fde4a3bd5d8a/MultipleValuesCowan.md 2020-04-07T22:08:40Z rudybot: https://teensy.info/qr410n22KA 2020-04-07T22:09:10Z aeth: jcowan: if you need more multiple-values stuff, I can probably think of a lot 2020-04-07T22:09:11Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-07T22:09:57Z jcowan: call-with-all-values aka mv-call cannot be done portably without allocating 2020-04-07T22:10:23Z aeth: yes, that's the real issue with mv stuff 2020-04-07T22:10:37Z aeth: if it's going to allocate anyway, are they worth it? 2020-04-07T22:11:52Z aeth: You can come up with some pretty nice compositions with MVs, though. 2020-04-07T22:12:28Z aeth: If things bind/set, take, or return multiple values, a lot of ordinarily procedural code can become pretty functional 2020-04-07T22:12:29Z jcowan: I am almost but not quite convinced that Maybes should do multiple values 2020-04-07T22:13:07Z jcowan: (define x (just 1 2 3)) and then (maybe-ref x) => 1; 2; 3 2020-04-07T22:13:54Z jcowan: obvs they have to be stashed in a list, but it lets you bind a mv-returning procedure to a ma-accepting one 2020-04-07T22:24:47Z TCZ quit (Quit: Leaving) 2020-04-07T22:40:13Z ArthurStrong quit (Quit: leaving) 2020-04-07T22:43:13Z turtleman joined #scheme 2020-04-07T22:45:45Z TCZ joined #scheme 2020-04-07T22:57:12Z klovett_ quit (Remote host closed the connection) 2020-04-07T22:57:49Z klovett joined #scheme 2020-04-07T22:58:30Z klovett quit (Remote host closed the connection) 2020-04-07T22:58:46Z klovett joined #scheme 2020-04-07T22:59:06Z SGASAU quit (Remote host closed the connection) 2020-04-07T22:59:23Z SGASAU joined #scheme 2020-04-07T23:03:40Z TCZ quit (Quit: Leaving) 2020-04-07T23:04:19Z cartwright quit (Remote host closed the connection) 2020-04-07T23:05:20Z cartwright joined #scheme 2020-04-07T23:25:01Z z-memory quit (Quit: Connection closed for inactivity) 2020-04-07T23:32:53Z SGASAU quit (Remote host closed the connection) 2020-04-07T23:33:05Z SGASAU joined #scheme 2020-04-07T23:42:08Z torbo joined #scheme 2020-04-07T23:43:12Z kopiyka quit (Ping timeout: 260 seconds) 2020-04-07T23:58:25Z srandon111: wasamasa, today were you talking about this kawa? https://www.gnu.org/software/kawa/tutorial/index.html 2020-04-07T23:58:30Z srandon111: i find the docs are awesome 2020-04-07T23:58:40Z srandon111: you said that it was worse than ugile 2020-04-07T23:58:47Z srandon111: i actually find these very clear 2020-04-07T23:58:50Z srandon111: and guile bad 2020-04-07T23:59:03Z zaifir: srandon111: Kawa is pretty cool. 2020-04-07T23:59:56Z srandon111: zaifir, i see that 2020-04-08T00:13:05Z TCZ joined #scheme 2020-04-08T00:18:35Z SGASAU quit (Remote host closed the connection) 2020-04-08T00:18:52Z SGASAU joined #scheme 2020-04-08T00:25:51Z SGASAU quit (Remote host closed the connection) 2020-04-08T00:26:35Z SGASAU joined #scheme 2020-04-08T00:55:41Z manualcrank quit (Quit: WeeChat 1.9.1) 2020-04-08T00:55:49Z o4puiospuhen joined #scheme 2020-04-08T01:03:45Z o4puiospuhen: How can I find the documentation of a Scheme procedure? For instance, I tried calling (random) but it requires 1 or 2 arguments. How can check which arguments these are, and documentation on what this procedure does? 2020-04-08T01:04:25Z o4puiospuhen: This is MIT/GNU Scheme if that makes a difference. 2020-04-08T01:11:32Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-08T01:11:53Z ahungry joined #scheme 2020-04-08T01:31:21Z Riastradh: o4puiospuhen: https://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Random-Numbers.html#Random-Numbers 2020-04-08T01:31:53Z Riastradh: (that said, the API listed there is being phased out in favour of SRFI 27, ) 2020-04-08T01:34:37Z z0d quit (Ping timeout: 260 seconds) 2020-04-08T01:41:04Z lritter quit (Ping timeout: 256 seconds) 2020-04-08T01:41:25Z lritter joined #scheme 2020-04-08T01:42:39Z TCZ quit (Quit: Leaving) 2020-04-08T01:46:15Z o4puiospuhen: Riastradh: I see. I don't how I missed that in the manual. But I think I'm getting the hang of it now. Thanks 2020-04-08T01:47:07Z Riastradh: What are you planning to do with it? 2020-04-08T01:53:40Z o4puiospuhen: I just want to get a random number (I'm reading through SICP and doing some experiments too). 2020-04-08T01:55:51Z o4puiospuhen: Although the main reason is asked is because I wanted to know where to find the definition of the procedures that come with Scheme (now I know that they're supposed to be documented in the reference guide, I think) 2020-04-08T01:58:52Z srandon111 quit (Quit: leaving) 2020-04-08T02:06:17Z pjb: o4puiospuhen: you can find the documentation by reading the documentation. 2020-04-08T02:06:22Z pjb: o4puiospuhen: namely the user manual. 2020-04-08T02:06:48Z pjb: which lists all the procedures provided by the implementation, including the procedures that give information about the procedures. 2020-04-08T02:06:51Z Riastradh: pjb: ...as it happens, this is in the _reference_ manual, not the _user_ manual. 2020-04-08T02:07:01Z Riastradh: pjb: Please be unhelpful somewhere else. 2020-04-08T02:07:09Z pjb: MIT/GNU Scheme Userโ€™s Manual 2020-04-08T02:07:09Z pjb: by Stephen Adams 2020-04-08T02:07:10Z pjb: Chris Hanson 2020-04-08T02:07:13Z pjb: and the MIT Scheme Team 2020-04-08T02:07:16Z pjb: For MIT/GNU Scheme 10.1.10 2020-04-08T02:07:25Z pjb: so as you can see, as it happens, this is in the User's Manual. 2020-04-08T02:07:27Z Riastradh: Yes. That's not hwere this is documented. 2020-04-08T02:07:45Z pjb: page 45, pa. 2020-04-08T02:08:17Z pjb: page 44, pp. 2020-04-08T02:32:35Z SGASAU quit (Remote host closed the connection) 2020-04-08T02:32:51Z SGASAU joined #scheme 2020-04-08T02:38:31Z gwatt: pjb: but the question was specifically about generating arndom numbers, not how to inspect the random number procedure. 2020-04-08T02:43:31Z manualcrank joined #scheme 2020-04-08T02:47:22Z pjb: gwatt: you should probably go read the user manual and try the proposed proceduresโ€ฆ 2020-04-08T02:49:22Z Riastradh: pjb: Telling someone to `go read the documentation', and directing them to a hundred-page manual, is not helpful when they have a specific question. 2020-04-08T02:55:03Z brendyyn joined #scheme 2020-04-08T02:55:38Z pjb: Riastradh: stop being an idiot, I indicated 2 precise pages! 2020-04-08T02:55:46Z ChanServ has set mode +o Riastradh 2020-04-08T02:56:27Z pjb: Bullying people when they are actually helpfulโ€ฆ 2020-04-08T02:56:29Z Riastradh: pjb: You've been on thin ice for a long time; I suggest you read the manual for the law of holes. 2020-04-08T02:56:43Z pjb left #scheme 2020-04-08T02:56:44Z Riastradh has set mode +q *!*@2a01cb04063ec500147010a326e7c5b3.ipv6.abo.wanadoo.fr 2020-04-08T02:57:05Z Riastradh has set mode -q *!*@2a01cb04063ec500147010a326e7c5b3.ipv6.abo.wanadoo.fr 2020-04-08T02:57:10Z Riastradh has set mode -o Riastradh 2020-04-08T02:57:11Z Riastradh: Sigh. 2020-04-08T02:58:18Z ski joined #scheme 2020-04-08T03:00:50Z choas joined #scheme 2020-04-08T03:04:39Z mdhughes eyerolls at the person he can't see. 2020-04-08T03:05:30Z choas quit (Ping timeout: 256 seconds) 2020-04-08T03:07:00Z mdhughes: http://paste.debian.net/1139002/ 2020-04-08T03:08:53Z brendyyn quit (Read error: No route to host) 2020-04-08T03:13:05Z mdhughes: jcowan: I don't really need anything out of the Indigo docket. Green and Olive ("non-portable") are super important, since that's where I bang my head on limits now. 2020-04-08T03:14:11Z jao quit (Ping timeout: 265 seconds) 2020-04-08T03:20:51Z SGASAU quit (Remote host closed the connection) 2020-04-08T03:21:19Z SGASAU joined #scheme 2020-04-08T03:37:38Z gioyik quit (Ping timeout: 256 seconds) 2020-04-08T03:45:40Z o4puiospuhen quit (Remote host closed the connection) 2020-04-08T03:48:01Z turtleman quit (Ping timeout: 265 seconds) 2020-04-08T03:53:04Z pilne quit (Quit: We be chillin' - IceChat style) 2020-04-08T04:15:44Z klovett quit (Remote host closed the connection) 2020-04-08T04:16:19Z klovett joined #scheme 2020-04-08T04:17:57Z gioyik joined #scheme 2020-04-08T04:24:30Z revtintin joined #scheme 2020-04-08T04:28:38Z ahungry quit (Remote host closed the connection) 2020-04-08T04:32:21Z SGASAU quit (Remote host closed the connection) 2020-04-08T04:32:37Z SGASAU joined #scheme 2020-04-08T04:43:26Z casaca quit (Remote host closed the connection) 2020-04-08T04:48:21Z drakonis quit (Quit: WeeChat 2.7.1) 2020-04-08T04:52:47Z revtintin quit (Ping timeout: 265 seconds) 2020-04-08T05:00:18Z revtintin joined #scheme 2020-04-08T05:06:00Z terpri quit (Remote host closed the connection) 2020-04-08T05:06:23Z terpri joined #scheme 2020-04-08T05:10:37Z SGASAU quit (Remote host closed the connection) 2020-04-08T05:10:52Z SGASAU joined #scheme 2020-04-08T05:15:30Z terpri quit (Remote host closed the connection) 2020-04-08T05:16:15Z terpri joined #scheme 2020-04-08T05:23:41Z torbo quit (Remote host closed the connection) 2020-04-08T05:27:30Z terpri quit (Remote host closed the connection) 2020-04-08T05:28:03Z terpri joined #scheme 2020-04-08T05:29:10Z terpri quit (Remote host closed the connection) 2020-04-08T05:29:30Z terpri joined #scheme 2020-04-08T05:40:56Z revtintin quit (Ping timeout: 265 seconds) 2020-04-08T05:55:25Z terpri quit (Remote host closed the connection) 2020-04-08T05:56:54Z terpri joined #scheme 2020-04-08T05:59:20Z brendyyn joined #scheme 2020-04-08T06:01:38Z revtintin joined #scheme 2020-04-08T06:20:35Z Naptra joined #scheme 2020-04-08T06:20:53Z gioyik quit (Quit: WeeChat 2.7.1) 2020-04-08T06:37:23Z revtintin quit (Ping timeout: 260 seconds) 2020-04-08T06:39:50Z jobol joined #scheme 2020-04-08T06:40:35Z revtintin joined #scheme 2020-04-08T06:43:26Z terpri quit (Remote host closed the connection) 2020-04-08T06:43:51Z terpri joined #scheme 2020-04-08T06:49:14Z revtintin quit (Ping timeout: 240 seconds) 2020-04-08T06:54:57Z revtintin joined #scheme 2020-04-08T07:05:41Z choas joined #scheme 2020-04-08T07:08:34Z choas quit (Client Quit) 2020-04-08T07:10:52Z revtintin quit (Ping timeout: 256 seconds) 2020-04-08T07:11:25Z terpri quit (Remote host closed the connection) 2020-04-08T07:12:25Z terpri joined #scheme 2020-04-08T07:24:43Z luni joined #scheme 2020-04-08T07:29:32Z CyDefect joined #scheme 2020-04-08T07:40:46Z revtintin joined #scheme 2020-04-08T07:41:04Z z0d joined #scheme 2020-04-08T07:45:10Z mdhughes_ joined #scheme 2020-04-08T07:45:46Z revtintin quit (Ping timeout: 256 seconds) 2020-04-08T07:49:30Z mdhughes quit (Ping timeout: 256 seconds) 2020-04-08T07:52:06Z mdhughes_ is now known as mdhughes 2020-04-08T08:16:14Z ngz joined #scheme 2020-04-08T08:16:18Z ngz quit (Remote host closed the connection) 2020-04-08T08:16:27Z ngz joined #scheme 2020-04-08T08:17:03Z skapata quit (Quit: ฤœis!) 2020-04-08T08:23:31Z lritter quit (Ping timeout: 265 seconds) 2020-04-08T08:39:05Z xi quit (Remote host closed the connection) 2020-04-08T08:39:46Z ggole joined #scheme 2020-04-08T08:40:14Z xi joined #scheme 2020-04-08T08:53:30Z kopiyka joined #scheme 2020-04-08T09:16:20Z civodul joined #scheme 2020-04-08T09:18:10Z `micro quit (Remote host closed the connection) 2020-04-08T09:20:36Z revtintin joined #scheme 2020-04-08T09:29:25Z revtintin quit (Quit: WeeChat 1.9.1) 2020-04-08T09:31:43Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-08T09:45:28Z xelxebar joined #scheme 2020-04-08T10:50:45Z lavaflow quit (Ping timeout: 265 seconds) 2020-04-08T10:56:53Z lavaflow joined #scheme 2020-04-08T11:01:32Z lockywolf_ joined #scheme 2020-04-08T11:03:02Z luni quit (Quit: Connection closed) 2020-04-08T11:16:51Z z-memory joined #scheme 2020-04-08T11:19:55Z lockywolf_: Is there any potential usefulness in "syntax used as value"? 2020-04-08T11:21:13Z lockywolf_: For example, at the moment chibi complains if I write (procedure? if). 2020-04-08T11:21:47Z wasamasa: aren't you supposed to quote that argument? 2020-04-08T11:22:11Z lockywolf_: wasamasa, quoting it would make it evaluate as a symbol. 2020-04-08T11:22:17Z lockywolf_: That's a valid usage. 2020-04-08T11:22:22Z wasamasa: if is not a procedure anyway 2020-04-08T11:22:42Z lockywolf_: it's not 2020-04-08T11:22:49Z wasamasa: so, yes, I'd consider that a useful hint 2020-04-08T11:23:07Z wasamasa: I thought of something like fboundp in elisp 2020-04-08T11:23:24Z wasamasa: where you use symbols to check whether there's any function/macro by that name 2020-04-08T11:24:15Z lockywolf_: good point 2020-04-08T11:31:46Z TCZ joined #scheme 2020-04-08T11:40:28Z lockywolf__ joined #scheme 2020-04-08T11:43:25Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-08T11:45:31Z turtleman joined #scheme 2020-04-08T11:51:50Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-08T11:55:28Z lockywolf joined #scheme 2020-04-08T11:58:03Z lockywolf_ joined #scheme 2020-04-08T12:00:50Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-08T12:10:04Z lockywolf__ joined #scheme 2020-04-08T12:12:14Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-08T12:21:58Z lockywolf_ joined #scheme 2020-04-08T12:24:14Z lockywolf__ quit (Ping timeout: 240 seconds) 2020-04-08T12:27:46Z lockywolf__ joined #scheme 2020-04-08T12:29:41Z lockywolf_ quit (Ping timeout: 250 seconds) 2020-04-08T12:33:55Z lockywolf_ joined #scheme 2020-04-08T12:34:27Z lockywolf_ quit (Read error: Connection reset by peer) 2020-04-08T12:35:49Z lockywolf__ quit (Read error: Connection reset by peer) 2020-04-08T12:36:09Z terpri quit (Read error: Connection reset by peer) 2020-04-08T12:36:21Z terpri joined #scheme 2020-04-08T12:39:48Z jao joined #scheme 2020-04-08T12:41:47Z jcowan: mdhughes: I agree. The point of saving Green/Olive till fairly late in the process is to build trust in the process first (standard negotiating tactic) 2020-04-08T12:49:06Z Yardanico joined #scheme 2020-04-08T12:51:46Z srandon111 joined #scheme 2020-04-08T12:58:31Z klovett quit (Remote host closed the connection) 2020-04-08T12:58:46Z klovett joined #scheme 2020-04-08T13:01:16Z lockywolf joined #scheme 2020-04-08T13:08:37Z turtleman quit (Ping timeout: 264 seconds) 2020-04-08T13:13:14Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-08T13:13:54Z srandon111 quit (Ping timeout: 240 seconds) 2020-04-08T13:14:07Z luni joined #scheme 2020-04-08T13:17:44Z TCZ quit (Quit: Leaving) 2020-04-08T13:25:29Z daviid quit (Ping timeout: 258 seconds) 2020-04-08T13:30:42Z srandon111 joined #scheme 2020-04-08T13:42:08Z ngz quit (Ping timeout: 246 seconds) 2020-04-08T13:43:00Z lavaflow quit (Ping timeout: 256 seconds) 2020-04-08T13:50:03Z lockywolf joined #scheme 2020-04-08T13:57:06Z gwatt: jcowan: how do you choose the color names for the ballots? 2020-04-08T13:57:20Z jcowan: I started with spectral names and interpolated. 2020-04-08T14:02:54Z TCZ joined #scheme 2020-04-08T14:12:11Z ahungry joined #scheme 2020-04-08T14:43:41Z revtintin joined #scheme 2020-04-08T14:48:31Z TCZ quit (Quit: Leaving) 2020-04-08T14:51:44Z revtintin quit (Ping timeout: 258 seconds) 2020-04-08T15:12:17Z lockywolf: Why don't primitive procedures take the current environment as an argument? I mean, in SICP they don't. 2020-04-08T15:12:25Z revtintin joined #scheme 2020-04-08T15:20:23Z wasamasa: (+ (repl-environment) 1 1) 2020-04-08T15:20:48Z revtintin quit (Ping timeout: 256 seconds) 2020-04-08T15:22:42Z gwatt: why should primitive procedures take the environment? The environment determines which names resolve to which procedures, the procedures don't need to handle that themselves 2020-04-08T15:23:49Z gwatt: slight update: The environment determiens what value names resolve to, procedure or not. 2020-04-08T15:24:17Z jcowan: eval needs the environment, but that's the only exception I know of 2020-04-08T15:35:48Z turtleman joined #scheme 2020-04-08T15:39:07Z revtintin joined #scheme 2020-04-08T15:42:20Z TCZ joined #scheme 2020-04-08T15:47:00Z terpri quit (Remote host closed the connection) 2020-04-08T15:47:23Z terpri joined #scheme 2020-04-08T15:48:30Z terpri quit (Remote host closed the connection) 2020-04-08T15:48:47Z TCZ quit (Quit: Leaving) 2020-04-08T15:58:08Z lavaflow joined #scheme 2020-04-08T16:01:07Z valjda joined #scheme 2020-04-08T16:03:28Z brendyyn quit (Ping timeout: 265 seconds) 2020-04-08T16:03:43Z valjda quit (Client Quit) 2020-04-08T16:03:58Z valjda joined #scheme 2020-04-08T16:08:18Z retropikzel joined #scheme 2020-04-08T16:13:42Z luni quit (Quit: Connection closed) 2020-04-08T16:31:15Z TCZ joined #scheme 2020-04-08T16:42:04Z drakonis joined #scheme 2020-04-08T16:44:19Z TCZ quit (Quit: Leaving) 2020-04-08T16:55:56Z terpri joined #scheme 2020-04-08T16:58:18Z lritter joined #scheme 2020-04-08T17:01:23Z ggole quit (Quit: Leaving) 2020-04-08T17:03:12Z skapata joined #scheme 2020-04-08T17:07:47Z klovett quit (Remote host closed the connection) 2020-04-08T17:12:26Z averell quit (Quit: .) 2020-04-08T17:25:46Z Riastradh: lockywolf: Which primitive procedures and what would they do with that environment? 2020-04-08T17:53:43Z revtintin quit (Quit: WeeChat 1.9.1) 2020-04-08T17:54:11Z gravicappa joined #scheme 2020-04-08T17:56:36Z klovett joined #scheme 2020-04-08T18:06:46Z luni joined #scheme 2020-04-08T18:27:30Z turtleman quit (Ping timeout: 265 seconds) 2020-04-08T18:38:56Z jobol quit (Quit: Leaving) 2020-04-08T18:39:06Z Adso_of_Jelq quit (Excess Flood) 2020-04-08T18:39:16Z Adso_of_Jelq joined #scheme 2020-04-08T19:29:39Z lavaflow_ joined #scheme 2020-04-08T19:29:57Z lavaflow_ quit (Client Quit) 2020-04-08T19:31:29Z lavaflow quit (Ping timeout: 265 seconds) 2020-04-08T19:34:33Z lavaflow joined #scheme 2020-04-08T19:39:28Z lavaflow quit (Quit: WeeChat 2.7.1) 2020-04-08T19:40:23Z lavaflow joined #scheme 2020-04-08T19:40:35Z deesix_ joined #scheme 2020-04-08T19:42:14Z deesix quit (Ping timeout: 240 seconds) 2020-04-08T19:42:33Z deesix_ is now known as deesix 2020-04-08T19:56:42Z retropikzel quit (Quit: Leaving) 2020-04-08T20:13:14Z valjda quit (Quit: WeeChat 2.8) 2020-04-08T20:17:15Z tautologico joined #scheme 2020-04-08T20:22:52Z TCZ joined #scheme 2020-04-08T20:25:57Z Naptra quit (Remote host closed the connection) 2020-04-08T20:27:36Z ski quit (Ping timeout: 256 seconds) 2020-04-08T20:34:23Z CyDefect quit (Quit: Verlassend) 2020-04-08T21:02:19Z gravicappa quit (Ping timeout: 250 seconds) 2020-04-08T21:03:44Z future-schemer-7 joined #scheme 2020-04-08T21:04:36Z future-schemer-7 quit (Client Quit) 2020-04-08T21:20:50Z ngz joined #scheme 2020-04-08T21:28:26Z ahungry quit (Remote host closed the connection) 2020-04-08T21:47:47Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-08T22:03:28Z pilne joined #scheme 2020-04-08T22:03:49Z valjda joined #scheme 2020-04-08T22:08:05Z TCZ quit (Quit: Leaving) 2020-04-08T22:10:12Z luni quit (Quit: Connection closed) 2020-04-08T22:10:53Z SGASAU quit (Remote host closed the connection) 2020-04-08T22:11:04Z SGASAU joined #scheme 2020-04-08T22:13:56Z daviid joined #scheme 2020-04-08T22:17:25Z shymega quit (Quit: Ciao.) 2020-04-08T22:17:54Z malaclyps quit (Ping timeout: 240 seconds) 2020-04-08T22:23:43Z shymega joined #scheme 2020-04-08T22:24:18Z malaclyps joined #scheme 2020-04-08T22:29:51Z malaclyps quit (Ping timeout: 260 seconds) 2020-04-08T22:33:05Z SGASAU quit (Remote host closed the connection) 2020-04-08T22:33:31Z SGASAU joined #scheme 2020-04-08T22:46:31Z SGASAU quit (Remote host closed the connection) 2020-04-08T22:46:58Z SGASAU joined #scheme 2020-04-08T22:47:24Z Riastradh quit (Ping timeout: 256 seconds) 2020-04-08T22:52:56Z turtleman joined #scheme 2020-04-08T22:58:25Z SGASAU quit (Remote host closed the connection) 2020-04-08T22:58:38Z SGASAU joined #scheme 2020-04-08T23:00:43Z torbo joined #scheme 2020-04-08T23:07:38Z SGASAU quit (Remote host closed the connection) 2020-04-08T23:08:01Z SGASAU joined #scheme 2020-04-08T23:28:01Z SGASAU quit (Remote host closed the connection) 2020-04-08T23:28:56Z SGASAU joined #scheme 2020-04-08T23:34:36Z ngz quit (Ping timeout: 265 seconds) 2020-04-08T23:39:11Z duncanm: hey hey 2020-04-08T23:39:26Z duncanm: oh, Riastradh is not around 2020-04-08T23:39:41Z duncanm: if I want to use a pattern matching macro, http://synthcode.com/scheme/chibi/lib/chibi/match.html -- this is the one to use, right? 2020-04-08T23:39:50Z duncanm: I'm using Kawa Scheme 2020-04-08T23:47:53Z duncanm: I'm trying to load: http://synthcode.com/scheme/match.scm 2020-04-08T23:48:02Z duncanm: it looks like it depends on a definiton of IS-A? 2020-04-08T23:49:55Z duncanm: woohoo, at least match-simple.scm worked 2020-04-09T00:02:46Z Riastradh joined #scheme 2020-04-09T00:08:01Z lockywolf quit (Ping timeout: 264 seconds) 2020-04-09T00:12:37Z duncanm: hey Riastradh 2020-04-09T00:13:32Z jcowan: duncanm: If you say his name he often appears 2020-04-09T00:16:43Z aeth: Riastradh Riastradh Riastradh 2020-04-09T00:16:53Z aeth: hmm, nope, didn't work 2020-04-09T00:18:13Z Riastradh: Hi! What's up? 2020-04-09T00:18:34Z aeth: Riastradh: duncanm is trying to port match.scm from chibi to Kawa, if I'm reading the lines before you joined correctly. 2020-04-09T00:18:55Z Riastradh: match.scm should be pretty portable to begin with, no? 2020-04-09T00:18:59Z aeth: i.e. https://ccl.clozure.com/irc-logs/scheme/scheme-2020-04.txt 2020-04-09T00:19:04Z Riastradh: I seem to recall foof wrote it using syntax-rules and not much else. 2020-04-09T00:20:00Z Riastradh: foof: https on synthcode.com is busted! 2020-04-09T00:20:01Z zaifir: There's also Oleg's pmatch, which is also portable, and super tiny https://github.com/webyrd/quines/blob/master/pmatch.scm 2020-04-09T00:20:21Z Riastradh: duncanm: I don't think the references to is-a? matter unless you try to use something that would require them. 2020-04-09T00:20:49Z Riastradh: I.e., if you don't use ($ ...) or (struct ...) patterns, &c., then it's not relevant. 2020-04-09T00:21:15Z duncanm: somehow, Kawa just doesn't like loading it 2020-04-09T00:21:24Z duncanm: I might tinker with it some more, and if there are issues, I'll go talk to Per 2020-04-09T00:21:40Z Riastradh: Could just comment out those rules. 2020-04-09T00:21:49Z aeth: Yeah, I'd just comment things out until it loaded 2020-04-09T00:21:54Z duncanm: zaifir: ha, that *is* small 2020-04-09T00:21:57Z duncanm: oh hmm, okay 2020-04-09T00:22:17Z duncanm: I see a few errors when loading the full match.scm 2020-04-09T00:22:27Z Riastradh: What errors? 2020-04-09T00:22:50Z duncanm: match.scm:354:60: non-symbol '($splice$ object)' in literals list 2020-04-09T00:22:56Z duncanm: match.scm:743:43: non-symbol '($splice$ object)' in literals list 2020-04-09T00:23:03Z duncanm: and then when I load in the library, i see this 2020-04-09T00:23:38Z duncanm: #|kawa:2|# (import (match)) 2020-04-09T00:23:38Z duncanm: #|kawa:3|# (let ((ls (list 1 2 3))) (match ls ((1 2 3) #t))) 2020-04-09T00:23:50Z duncanm: dev/tty:3:26: no matching syntax-rule for match-record-named-refs 2020-04-09T00:23:56Z duncanm: dev/tty:3:26: warning - no declaration seen for is-a? 2020-04-09T00:24:03Z duncanm: so maybe it's a bug inside Kawa's syntax-rules 2020-04-09T00:24:05Z duncanm: brb, dinner 2020-04-09T00:24:14Z duncanm: match-simple worked 2020-04-09T00:24:26Z duncanm: zaifir: i wonder how match-simple compares with pmatch 2020-04-09T00:29:25Z SGASAU quit (Remote host closed the connection) 2020-04-09T00:29:49Z SGASAU joined #scheme 2020-04-09T00:33:00Z zaifir: duncanm: It's worth studying both. simple-match seems to use letrec with labels rather than the raw continuations that pmatch uses. 2020-04-09T00:42:50Z SGASAU quit (Remote host closed the connection) 2020-04-09T00:43:11Z SGASAU joined #scheme 2020-04-09T00:52:03Z torbo quit (Remote host closed the connection) 2020-04-09T00:52:30Z TCZ joined #scheme 2020-04-09T00:58:40Z lockywolf joined #scheme 2020-04-09T01:02:39Z lockywolf: nah, I meant that the eval-compound-procedure takes the current environment, extends it, etc..., but eval-primitive-procedure doesn't. 2020-04-09T01:06:30Z Riastradh: duncanm: I am pretty baffled by those errors and I don't see what match.scm could be doing to elicit them. The text `$splice$' does not seem to appear in match.scm, and I don't see why match-named-record-refs is getting invoked there because neither `@' nor `object' appears in your input. 2020-04-09T01:13:01Z lockywolf_ joined #scheme 2020-04-09T01:15:23Z lockywolf quit (Ping timeout: 250 seconds) 2020-04-09T01:17:43Z ahungry joined #scheme 2020-04-09T01:18:10Z valjda quit (Quit: WeeChat 2.8) 2020-04-09T01:22:53Z drakonis quit (Quit: WeeChat 2.7.1) 2020-04-09T01:24:11Z duncanm: yeah, weird! 2020-04-09T01:24:16Z duncanm: I'll write Per Bothner 2020-04-09T01:26:40Z TCZ quit (Quit: Leaving) 2020-04-09T01:35:11Z SGASAU quit (Remote host closed the connection) 2020-04-09T01:35:39Z SGASAU joined #scheme 2020-04-09T01:38:32Z lritter quit (Ping timeout: 256 seconds) 2020-04-09T01:39:17Z lritter joined #scheme 2020-04-09T01:44:41Z SGASAU quit (Remote host closed the connection) 2020-04-09T01:45:05Z SGASAU joined #scheme 2020-04-09T01:45:24Z duncanm: so I'm using match-cond-expand.scm for now 2020-04-09T01:45:36Z duncanm: is there a syntax for an optional thing is a list? 2020-04-09T01:46:05Z duncanm: for example, given this "(point x y [color])" 2020-04-09T01:46:35Z z-memory quit (Quit: Connection closed for inactivity) 2020-04-09T01:51:17Z zaifir: Hmm, why does chibi cough on 'define-library'? Loading any simple R7RS sld file results in an 'undefined operator' error for define-library. 2020-04-09T01:52:54Z duncanm: hmm 2020-04-09T01:53:09Z duncanm: (define (parse-command command) 2020-04-09T01:53:09Z duncanm: (match command 2020-04-09T01:53:09Z duncanm: (`(point ,x ,y) 2020-04-09T01:53:09Z duncanm: (format #t "point ~a ~a" x y)))) 2020-04-09T01:53:16Z duncanm: what's the right syntax? 2020-04-09T01:53:27Z aeth: zaifir: that doesn't sound right, since Chibi extensively uses define-library in .sld 2020-04-09T01:53:30Z duncanm: > ezd.scm:8:6: unrecognized pattern operator quasiquote 2020-04-09T01:53:41Z zaifir: aeth: I know, right? 2020-04-09T01:53:43Z aeth: zaifir: Maybe you have to import (scheme base) first? 2020-04-09T01:59:24Z zaifir: If I put http://ix.io/2hid in 'test.sld', and (load "test.sld") in chibi, I get a whole bunch of warnings beginning with "undefined operator: define-library". Happens on a custom build and with the OpenBSD package. 2020-04-09T02:01:28Z balkamos quit (Ping timeout: 256 seconds) 2020-04-09T02:02:15Z balkamos joined #scheme 2020-04-09T02:05:01Z lockywolf__ joined #scheme 2020-04-09T02:05:19Z zaifir: Huh, it happens if I try to manually load an included Chibi .sld file. 2020-04-09T02:05:32Z zaifir: I guess you can only `import' them. 2020-04-09T02:06:50Z aeth: ah 2020-04-09T02:07:49Z lockywolf_ quit (Ping timeout: 265 seconds) 2020-04-09T02:07:53Z aeth: I guess chibi is designed to magically build a library based on its location in the filesystem? So it probably looks for (scheme base) in chibi-scheme/lib/scheme/base.sld 2020-04-09T02:08:06Z aeth: idk about third party 2020-04-09T02:09:06Z zaifir: Yeah, that's what's described in the manual. http://synthcode.com/scheme/chibi/#h3_ModuleSystem 2020-04-09T02:09:31Z zaifir: What's weird is that define-library doesn't seem to work in the REPL. 2020-04-09T02:28:38Z jcowan: aeth: It also looks on $CHIBI_MODULE_PATH to find .sld files 2020-04-09T02:29:07Z jcowan: However, if it finds a .sld file that doesn't contain a define-library form, or contains a definition of the wrong library, it's ignored 2020-04-09T02:29:45Z jao quit (Remote host closed the connection) 2020-04-09T02:30:08Z jcowan: but define-library is not known to the REPL at all 2020-04-09T02:30:31Z jcowan: so neither load nor include will work on .sld files 2020-04-09T02:47:09Z SGASAU quit (Remote host closed the connection) 2020-04-09T02:47:19Z SGASAU joined #scheme 2020-04-09T03:00:36Z lockywolf_ joined #scheme 2020-04-09T03:03:24Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-09T03:10:09Z lockywolf joined #scheme 2020-04-09T03:12:12Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-09T03:14:12Z zaifir: jcowan: Yeah, I figured. 2020-04-09T03:14:57Z brendyyn joined #scheme 2020-04-09T03:16:51Z aeth: weird 2020-04-09T03:18:40Z duncanm: In Kawa, I can load sld files 2020-04-09T03:24:17Z aeth: I never even though to implement define-library in a weird, special case, Java-style way 2020-04-09T03:24:31Z aeth: (ironically, Kawa (on the JVM) doesn't do this, either) 2020-04-09T03:25:30Z terpri quit (Remote host closed the connection) 2020-04-09T03:25:52Z terpri joined #scheme 2020-04-09T03:35:14Z turtleman quit (Ping timeout: 240 seconds) 2020-04-09T03:37:29Z zaifir: I do think it's weird that `define-library' isn't "first-class syntax", whatever that means. 2020-04-09T03:43:24Z aeth: does Chibi not have unhygienic macros? I'm sure there's some ultra-elite hygienic way to do it, but define-library definitely looks like a good candidate for a simple defmacro/define-macro 2020-04-09T03:49:18Z zaifir: aeth: It's got syntactic closures. 2020-04-09T03:54:47Z pilne quit (Quit: Few women admit their age. Few men act theirs.) 2020-04-09T03:58:07Z mdhughes: That's weird, you can (library... at top in Chezโ€ฆ 2020-04-09T04:00:52Z mdhughes: Mistakes were made: `brew install chibi-scheme` is now boiling the ocean. 2020-04-09T04:01:02Z zaifir: brew ocean 2020-04-09T04:02:33Z mdhughes: (it had to do 2 months of updates to every other package; and I don't even keep much installed with brew!) 2020-04-09T04:08:24Z mdhughes: Does Chibi not have . in its default lib paths? 2020-04-09T04:08:55Z mdhughes: My maintest demo gives ERROR on line 3 of file ./main.scm: couldn't find import: (worker) 2020-04-09T04:09:43Z zaifir: It does. It looks for (worker) in /worker.sld 2020-04-09T04:09:59Z zaifir: If it's ./worker.sld, it should, uh, work. 2020-04-09T04:10:21Z aeth: that is so java 2020-04-09T04:10:28Z zaifir: Hah. 2020-04-09T04:10:58Z aeth: maybe I should make my convention library.scm 2020-04-09T04:11:02Z aeth: like CL's package.lisp 2020-04-09T04:12:02Z mdhughes: Oh, right, I was using bare files, not sld. 2020-04-09T04:13:46Z zaifir: aeth: What I find annoying with Chibi is the hard-coding of the .sld suffix into the library system. I can't just put my library in some-lib.scm or whatever and load it. 2020-04-09T04:13:54Z zaifir: But it's a minor annoyance. 2020-04-09T04:15:40Z zaifir: (And I can't call a library (foo bar baz) unless I'm willing to define it in the file foo/bar/baz.sld. Blech.) 2020-04-09T04:16:25Z mdhughes: WTF: ERROR on line 276 of file /usr/local/share/chibi/meta-7.scm: cdr: not a pair: () 2020-04-09T04:17:52Z aeth: zaifir: .sld is more than a minor annoyance. Every .sld needs to have the Emacs modeline at the top and hope that every tool recognizes it because they sure aren't going to recognize it by extension 2020-04-09T04:18:24Z zaifir: Ah, right. 2020-04-09T04:18:55Z aeth: i.e. ;;;; -*- mode: scheme; -*- 2020-04-09T04:19:14Z aeth: do ;;; or ;; instead if you want to feel special and unique :-p 2020-04-09T04:19:21Z aeth: Although idk, maybe mine are the only ones with ;;;; 2020-04-09T04:19:24Z mdhughes: Ah, (define-library (worker), not (define-library worker 2020-04-09T04:20:52Z aeth: The R7RS library system seems fairly closely related to how CL's ASDF 3 works, with foo/bar/baz except in R7RS that's (foo bar baz) 2020-04-09T04:20:54Z zaifir: aeth: #| |# if you want to be really special. 2020-04-09T04:20:59Z mdhughes: Is there a real REPL for this? http://synthcode.com/scheme/lib/chibi/repl.html returns null. 2020-04-09T04:21:11Z aeth: zaifir: yeah, but the point is to provide it for tools to recognize it 2020-04-09T04:21:36Z aeth: e.g. it's needed for the Scheme syntax highlighting in .sld files in Gitlab. 2020-04-09T04:21:54Z zaifir: aeth: Well, #| |# is standard Scheme comment syntax. 2020-04-09T04:22:27Z aeth: yeah, but will everyone parse that correctly? 2020-04-09T04:22:50Z zaifir: mdhughes: http://synthcode.com/scheme/chibi/lib/chibi/repl.html 2020-04-09T04:22:55Z revtintin joined #scheme 2020-04-09T04:23:05Z zaifir: aeth: Probably not. 2020-04-09T04:23:24Z mdhughes: zaifir: Thanks! 2020-04-09T04:27:26Z retropikzel joined #scheme 2020-04-09T04:36:01Z revtintin quit (Ping timeout: 250 seconds) 2020-04-09T04:38:29Z mdhughes: OK, got the example up: http://community.schemewiki.org/?module-example-chibi 2020-04-09T04:39:09Z mdhughes: Chibi doesn't compile, except as a C library, does it? 2020-04-09T04:42:57Z luni joined #scheme 2020-04-09T04:45:20Z mdhughes: Doing these for every Scheme has taught me Chez is a perfect jewel and anyone else is a heretic and blasphemer. 2020-04-09T04:46:36Z aeth: no 2020-04-09T04:56:28Z lritter quit (Ping timeout: 256 seconds) 2020-04-09T04:56:58Z revtintin joined #scheme 2020-04-09T05:11:30Z lockywolf_ joined #scheme 2020-04-09T05:11:33Z lockywolf quit (Ping timeout: 250 seconds) 2020-04-09T05:15:25Z lockywolf_ quit (Remote host closed the connection) 2020-04-09T05:26:39Z lockywolf_ joined #scheme 2020-04-09T05:26:50Z lockywolf_: (chibi repl) is included in modern chibi 2020-04-09T05:26:58Z lockywolf_: no need to install it separately 2020-04-09T05:27:06Z lockywolf_: just run chibi-scheme -R 2020-04-09T05:27:36Z lockywolf_: you usually only declare a library in .sld, and (include) the contents of an .scm file 2020-04-09T05:27:50Z lockywolf_: then you can just (load) the meaty .scm file 2020-04-09T05:27:56Z ahungry quit (Read error: Connection reset by peer) 2020-04-09T05:29:48Z skapata quit (Quit: ฤœis!) 2020-04-09T05:34:02Z gravicappa joined #scheme 2020-04-09T05:35:27Z mdhughes: But that exposes all your internals. The value of having libraries is information hidingโ€ฆ 2020-04-09T05:37:40Z revtintin quit (Ping timeout: 256 seconds) 2020-04-09T05:41:25Z aeth: "information hiding" sounds a bit too textbook OOP for me 2020-04-09T05:42:07Z aeth: I like how in CL, everything's a foo::bar or a %foo away, it's just that those symbols means you really shouldn't use those in production. 2020-04-09T05:43:33Z mdhughes: "Information hiding" is terser than "You can't stomp on another library's internal shit". 2020-04-09T05:44:09Z aeth: I mean, in CL you can, it's just hidden behind :: so you shouldn't 2020-04-09T05:44:39Z mdhughes: Sure, and I generally take Common Lisp as a cautionary tale of what to avoid. 2020-04-09T05:44:54Z aeth: The main issue is with optimizations 2020-04-09T05:45:14Z aeth: Or, rather, you have to actually create functions, even if they're internal-only, so more of a memory optimization issue 2020-04-09T05:45:35Z aeth: CLs tend to use a lot of RAM 2020-04-09T05:49:01Z aeth: I'm not sure if I can support :: because of how Airship Scheme works. In particular, setting a foo::bar won't do what you think it will do. 2020-04-09T05:51:38Z aeth: Importing bar is sort of like (let ((bar foo::bar)) #| your body here |# ) which means directly setting the original wouldn't update your version 2020-04-09T05:54:55Z Naptra joined #scheme 2020-04-09T05:56:38Z revtintin joined #scheme 2020-04-09T06:06:13Z revtintin quit (Ping timeout: 264 seconds) 2020-04-09T06:11:32Z revtintin joined #scheme 2020-04-09T06:22:14Z lockywolf__ joined #scheme 2020-04-09T06:23:37Z revtintin quit (Ping timeout: 264 seconds) 2020-04-09T06:24:52Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-09T06:28:22Z revtintin joined #scheme 2020-04-09T06:30:54Z luni quit (Quit: Connection closed) 2020-04-09T06:38:49Z SGASAU quit (Remote host closed the connection) 2020-04-09T06:39:02Z revtintin quit (Ping timeout: 256 seconds) 2020-04-09T06:39:04Z SGASAU joined #scheme 2020-04-09T06:41:34Z SGASAU quit (Remote host closed the connection) 2020-04-09T06:41:46Z SGASAU joined #scheme 2020-04-09T06:49:04Z revtintin joined #scheme 2020-04-09T06:58:52Z jobol joined #scheme 2020-04-09T07:04:24Z revtintin quit (Ping timeout: 265 seconds) 2020-04-09T07:11:23Z madage quit (Ping timeout: 240 seconds) 2020-04-09T07:11:43Z madage joined #scheme 2020-04-09T07:16:32Z civodul joined #scheme 2020-04-09T07:27:11Z CyDefect joined #scheme 2020-04-09T07:56:49Z tautologico quit (Quit: Connection closed for inactivity) 2020-04-09T07:59:50Z srandon111 quit (Ping timeout: 256 seconds) 2020-04-09T08:13:13Z srandon111 joined #scheme 2020-04-09T08:13:20Z eMBee quit (Remote host closed the connection) 2020-04-09T08:13:59Z eMBee joined #scheme 2020-04-09T08:24:40Z revtintin joined #scheme 2020-04-09T08:29:47Z SGASAU quit (Remote host closed the connection) 2020-04-09T08:29:57Z SGASAU joined #scheme 2020-04-09T08:36:43Z srandon111 quit (Ping timeout: 265 seconds) 2020-04-09T08:43:45Z retropikzel quit (Quit: Leaving) 2020-04-09T08:51:06Z srandon111 joined #scheme 2020-04-09T09:00:17Z srandon111: guys i was watching sicp... and at a certain point the Professor writes this recursive function https://pastebin.com/mjFbYP5Z as a solution to the hanoi game, my question is... in these tree recursive function, which code happens first? i mean after (move (sub1 n) from spare to) i have the print-move or first the execution goes deep into the first move function until it finishes?? 2020-04-09T09:02:10Z aeth: it looks depth-first to me. 2020-04-09T09:02:14Z wasamasa: recursion - it hurts so good 2020-04-09T09:02:21Z aeth: it shouldn't terminate until n is 0, since that's the base case 2020-04-09T09:05:43Z revtintin quit (Ping timeout: 265 seconds) 2020-04-09T09:14:39Z revtintin joined #scheme 2020-04-09T09:23:16Z marmulak[m] joined #scheme 2020-04-09T09:24:30Z terpri quit (Remote host closed the connection) 2020-04-09T09:24:34Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-09T09:24:50Z terpri joined #scheme 2020-04-09T09:34:22Z lockywolf joined #scheme 2020-04-09T09:40:55Z revtintin quit (Ping timeout: 260 seconds) 2020-04-09T09:48:03Z terpri quit (Remote host closed the connection) 2020-04-09T09:48:22Z terpri joined #scheme 2020-04-09T09:48:23Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-09T09:57:42Z srandon111: aeth, ok thanks 2020-04-09T09:58:13Z revtintin joined #scheme 2020-04-09T09:58:14Z srandon111: so basically it goes inside the first move it finds... then inside inside inside and so on... 2020-04-09T09:58:35Z mouloud[m]: can anyone read me? 2020-04-09T09:58:40Z mouloud[m]: hello 2020-04-09T09:58:40Z lockywolf quit (Ping timeout: 258 seconds) 2020-04-09T09:58:43Z aeth: What I would do if I were you is I'd add a bunch of display to test. You can add another argument to see which branch you're going down. 2020-04-09T09:58:53Z srandon111: mouloud[m], yes 2020-04-09T09:59:15Z mouloud[m]: thanks. 2020-04-09T09:59:25Z srandon111: mouloud[m], you are welcome... 2020-04-09T09:59:30Z terpri quit (Remote host closed the connection) 2020-04-09T09:59:31Z srandon111: mouloud[m], where are you writing from? mars? 2020-04-09T10:00:03Z terpri joined #scheme 2020-04-09T10:01:49Z mouloud[m]: sadly no, I rely on riot.im and matrix.org 2020-04-09T10:04:20Z luni joined #scheme 2020-04-09T10:04:30Z terpri quit (Remote host closed the connection) 2020-04-09T10:04:50Z terpri joined #scheme 2020-04-09T10:05:05Z marmulak[m]: Riot for the win 2020-04-09T10:08:38Z revtintin quit (Ping timeout: 258 seconds) 2020-04-09T10:29:39Z pilne joined #scheme 2020-04-09T10:36:45Z lockywolf joined #scheme 2020-04-09T10:37:50Z ggole joined #scheme 2020-04-09T10:42:30Z revtintin joined #scheme 2020-04-09T10:45:37Z ngz joined #scheme 2020-04-09T10:50:36Z revtintin quit (Ping timeout: 265 seconds) 2020-04-09T11:00:16Z revtintin joined #scheme 2020-04-09T11:03:36Z CyDefect quit (Remote host closed the connection) 2020-04-09T11:07:25Z revtintin quit (Ping timeout: 264 seconds) 2020-04-09T11:12:12Z xelxebar joined #scheme 2020-04-09T11:16:38Z revtintin joined #scheme 2020-04-09T11:31:13Z hugh_marera joined #scheme 2020-04-09T11:38:22Z drot quit (Quit: Quit.) 2020-04-09T11:38:39Z drot joined #scheme 2020-04-09T11:54:44Z luni quit (Quit: Connection closed) 2020-04-09T12:03:22Z turtleman joined #scheme 2020-04-09T12:03:49Z revtintin quit (Ping timeout: 264 seconds) 2020-04-09T12:20:04Z CyDefect joined #scheme 2020-04-09T12:20:08Z revtintin joined #scheme 2020-04-09T12:26:23Z TCZ joined #scheme 2020-04-09T12:30:09Z hugh_marera quit (Quit: hugh_marera) 2020-04-09T12:35:28Z revtintin quit (Ping timeout: 256 seconds) 2020-04-09T12:38:53Z klovett quit (Remote host closed the connection) 2020-04-09T12:39:29Z klovett joined #scheme 2020-04-09T12:40:26Z cpressey joined #scheme 2020-04-09T12:46:59Z TCZ quit (Quit: Leaving) 2020-04-09T12:50:00Z revtintin joined #scheme 2020-04-09T12:55:42Z TCZ joined #scheme 2020-04-09T12:55:52Z revtintin quit (Ping timeout: 256 seconds) 2020-04-09T12:57:58Z revtintin joined #scheme 2020-04-09T12:58:30Z klovett quit (Remote host closed the connection) 2020-04-09T12:58:48Z klovett joined #scheme 2020-04-09T13:03:26Z SGASAU quit (Remote host closed the connection) 2020-04-09T13:03:26Z klovett quit (Ping timeout: 258 seconds) 2020-04-09T13:03:50Z SGASAU joined #scheme 2020-04-09T13:05:20Z turtleman quit (Ping timeout: 256 seconds) 2020-04-09T13:06:49Z nckx quit (Ping timeout: 264 seconds) 2020-04-09T13:17:04Z cartwright quit (Remote host closed the connection) 2020-04-09T13:17:04Z tryte_ quit (Remote host closed the connection) 2020-04-09T13:17:04Z madage quit (Remote host closed the connection) 2020-04-09T13:17:04Z xelxebar quit (Remote host closed the connection) 2020-04-09T13:18:00Z xelxebar joined #scheme 2020-04-09T13:20:35Z cartwright joined #scheme 2020-04-09T13:21:04Z tryte joined #scheme 2020-04-09T13:25:29Z madage joined #scheme 2020-04-09T13:45:11Z kritixilithos joined #scheme 2020-04-09T13:46:02Z srandon111: guys what's a good reference for functional programming? 2020-04-09T13:47:51Z jcowan: Reference, or tutorial? 2020-04-09T13:50:45Z srandon111: both 2020-04-09T13:51:02Z jcowan: aeth: Chibi actually does implement define-library as an explicit-renaming macro, but in a different global environment from the usual one. 2020-04-09T13:51:04Z srandon111: i think i got the fundamentals but want to know more... e.g., i read soewhere about monads 2020-04-09T13:51:13Z srandon111: and don't know what they are 2020-04-09T13:51:37Z wasamasa: they are a distraction 2020-04-09T13:51:57Z wasamasa: it doesn't make much sense to talk about them without a ML-style type system 2020-04-09T13:52:57Z jcowan disagrees 2020-04-09T13:54:27Z jcowan: https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/ContextsCowan.md 2020-04-09T13:55:57Z tdammers: a monad is a type for which lawful implementations of bind and return exist 2020-04-09T13:56:17Z tdammers: in practical programming, the concept isn't very useful unless you have a type system that supports it (like in Haskell) 2020-04-09T13:56:48Z tdammers: there are monad libraries for various lisps, but they don't buy you much in practice, because the main benefit is that it makes certain constraints expressable in the type system 2020-04-09T13:56:58Z tdammers: without a type system, there isn't much of a point expressing those constraints 2020-04-09T13:57:29Z tdammers: also, there's this air of mystique around monads that is completely undeserved, and mostly based on misconceptions 2020-04-09T13:59:35Z lockywolf_ joined #scheme 2020-04-09T13:59:44Z ahungry joined #scheme 2020-04-09T14:00:36Z klovett joined #scheme 2020-04-09T14:02:10Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-09T14:04:13Z retropikzel joined #scheme 2020-04-09T14:08:12Z srandon111: tdammers, since i wanted to zoom out from the context of lisps/schemes i was trying to gather more info on fp 2020-04-09T14:08:18Z srandon111: and i encountered this concept 2020-04-09T14:09:03Z tdammers: srandon111: maybe worth noting that "FP" tends to mean two rather different things in typed-FP land and Lisp land 2020-04-09T14:09:29Z TCZ quit (Quit: Leaving) 2020-04-09T14:09:58Z brendyyn: Guix has the store monad https://guix.gnu.org/manual/en/html_node/The-Store-Monad.html 2020-04-09T14:10:05Z tdammers: in lisp land, "function" is generally taken as a synonym for "procedure", and "functional programming" is a relatively vague notion of a programming style that emphasizes immutable data structures and prefers recursion and higher-level flow control patterns over destructive loops 2020-04-09T14:10:28Z srandon111: tdammers, ok go on... 2020-04-09T14:10:48Z tdammers: in typed-pure-FP land, "function" is closer to the mathematical ideal; here, "functional programming" means "programming with functions, actual functions" 2020-04-09T14:11:06Z tdammers: such a function is not something you "execute" or "call", it's more like something that "just is", much like in Math 2020-04-09T14:11:37Z tdammers: x = 15, here, doesn't mean "create a variable and assign the value 15 to it", but rather, "I hereby define x to be a synonym for 15" 2020-04-09T14:11:51Z srandon111: tdammers, ok yes as in haskell 2020-04-09T14:11:55Z tdammers: yep 2020-04-09T14:12:01Z srandon111: when you do something like f = x * x 2020-04-09T14:12:16Z tdammers: you probably mean f x = x * x, yes? 2020-04-09T14:12:22Z srandon111: yes tdammers 2020-04-09T14:12:59Z srandon111: tdammers, so it seems that in lisp land, the concept of functional is much more relaxed... i mean not as strict 2020-04-09T14:13:02Z srandon111: right? 2020-04-09T14:13:05Z tdammers: yes 2020-04-09T14:13:15Z tdammers: I like to call the two paradigms "weak" and "strong" FP 2020-04-09T14:13:35Z tdammers: at the risk of making it sound like one is better than the other 2020-04-09T14:14:17Z mdhughes: LISP and Scheme aren't functional-only, they're imperative with some functional capabilities. You can write a literal transcription of FORTRAN into Scheme without problems. 2020-04-09T14:14:32Z tdammers: you can do the same in Haskell too 2020-04-09T14:14:58Z tdammers: Haskell's IO type provides run-of-the-mill imperative semantics 2020-04-09T14:15:36Z tdammers: we have this hand-waivy thing where we say "A-HA! But you're not actually executing that IO code, you just purely declare an IO action, and leave the dirty work to the runtime system!" 2020-04-09T14:15:44Z mdhughes: But unlike most imperative languages like Python or C, you can write functional code with unlimited recursion in Scheme. 2020-04-09T14:15:56Z tdammers: but for all practical programming intents and purposes, you can very much write "imperative Haskell" 2020-04-09T14:18:39Z tdammers: do { x <- newIORef 10; whileM ((> 0) <$> readIORef x) do { print =<< readIORef x; modifyIORef (+ 1) x }; putStrLn "All done!" } 2020-04-09T14:19:14Z srandon111: tdammers, i don't know haskell 2020-04-09T14:19:36Z srandon111: tdammers, so it seems that you know both haskell and some lisps i imagine... how do they compare? i mean which one do you prefer? 2020-04-09T14:19:48Z srandon111: and what are strengths og both of them 2020-04-09T14:19:58Z DKordic: an interesting footnote about Monads: http://okmij.org/ftp/tagless-final/nondet-effect.html 2020-04-09T14:20:07Z tdammers: I prefer Haskell for most stuff 2020-04-09T14:20:16Z tdammers: biggest advantage of lisps, however, is the whole macro stuff 2020-04-09T14:20:57Z tdammers: I also like lisps for scripting host applications, because they're easy to implement and provide a lot of expressive power from a very small interpreter system 2020-04-09T14:21:17Z tdammers: I mean, I can write a working lisp parser in like half an hour, and implement most of the interpreter in a day 2020-04-09T14:21:25Z tdammers: I wouldn't dare trying that for something like Python 2020-04-09T14:22:02Z tdammers: what tips the scale towards haskell, for me, is the ability to build up a tower of sound abstractions, safely moving from one level to the next 2020-04-09T14:22:18Z poga quit (Ping timeout: 265 seconds) 2020-04-09T14:22:19Z tdammers: plus the ability to change any level of that tower after the fact, and the compiler will tell me what I broke and how 2020-04-09T14:22:41Z tdammers: the "just make the friggin' change and then follow the compiler errors until it compiles again" workflow is absolutely fantastic 2020-04-09T14:23:01Z tdammers: then again, the learning curve is outrageous 2020-04-09T14:23:24Z poga joined #scheme 2020-04-09T14:23:44Z tdammers: for anyone with any "normal" programming experience, lisp is going to be a bit strange, but haskell will just make your brain hurt for a year 2020-04-09T14:27:33Z cpressey left #scheme 2020-04-09T14:34:23Z revtintin quit (Ping timeout: 265 seconds) 2020-04-09T14:35:21Z cky quit (Ping timeout: 272 seconds) 2020-04-09T14:35:38Z cky joined #scheme 2020-04-09T14:47:14Z nckx joined #scheme 2020-04-09T14:49:32Z brendyyn quit (Ping timeout: 256 seconds) 2020-04-09T14:51:11Z shymega quit (Quit: Ciao.) 2020-04-09T14:53:17Z shymega joined #scheme 2020-04-09T14:58:38Z revtintin joined #scheme 2020-04-09T14:59:18Z luni joined #scheme 2020-04-09T15:01:24Z shymega quit (Quit: Ciao.) 2020-04-09T15:02:40Z shymega joined #scheme 2020-04-09T15:03:18Z jcowan: I broken down on Haskell trying to understand how to do non-folding operations on arrays 2020-04-09T15:09:40Z hugh_marera joined #scheme 2020-04-09T15:13:11Z revtintin quit (Ping timeout: 260 seconds) 2020-04-09T15:25:16Z tdammers: yeah, as long as you're stuck in a mutable-state imperative mindset, haskell will keep breaking your brain 2020-04-09T15:30:27Z CyDefect quit (Ping timeout: 260 seconds) 2020-04-09T15:39:12Z revtintin joined #scheme 2020-04-09T15:40:20Z salinasc joined #scheme 2020-04-09T15:41:35Z jcowan: and many applications of arrays are just that 2020-04-09T15:43:54Z salinasc quit (Client Quit) 2020-04-09T15:44:00Z cdrlos joined #scheme 2020-04-09T15:45:24Z cdrlos quit (Client Quit) 2020-04-09T15:47:47Z tdammers: sure 2020-04-09T15:47:55Z tdammers: but not a lot of programming problems are inherently that 2020-04-09T15:48:33Z tdammers: that is, using mutable arrays is an implementation detial 2020-04-09T15:48:35Z tdammers: detail* 2020-04-09T15:49:49Z CyDefect joined #scheme 2020-04-09T15:50:59Z jcowan: The problem was about a compact representation of a histogram, which is very easily done in impure languages 2020-04-09T15:51:17Z jcowan: The Monad Song (tune: "We're In The Money" from _42nd St._) 2020-04-09T15:51:22Z jcowan: We're in the monad / We're in the monad / We've got a context that we have to pass along! / We're in the monad / Our life's not so bad / Well-typed imperative programming can't go wrong! 2020-04-09T15:51:22Z jcowan: We never need to muta- / Te inscruta-ble state / And when we see IO types / We can look those guys right in the eyes ... 2020-04-09T15:51:22Z jcowan: We're in the monad / (Just rhymes with "gonad") / Let's choose it, use it / Keep it moving along! 2020-04-09T16:00:17Z tdammers: lol 2020-04-09T16:00:34Z tdammers: but, yeah, "compact representation of a histogram" is where you break out the arrays 2020-04-09T16:00:53Z tdammers: there are still few use cases where you really need in-place mutations though 2020-04-09T16:01:14Z tdammers: then again, when you do, not all is lost, there are still suitable APIs for mutable state 2020-04-09T16:01:18Z tdammers: it's just more explicit 2020-04-09T16:01:42Z tdammers: which, I would argue, is an acceptable price to pay for the comfort of not having to think about mutations at all outside of that particular section of code 2020-04-09T16:02:56Z jcowan njods 2020-04-09T16:03:28Z jcowan: There are I think two philosophies: sealed-off mutation like that and external-only mutation like FRP 2020-04-09T16:03:48Z jcowan: or the IO monad 2020-04-09T16:04:17Z jcowan: In MFTL, these are actually syntactically different 2020-04-09T16:05:16Z jcowan: they are somewhat so in Haskell because of do-notation, but MFTL sharply distinguishes between functions and commands, where commands have all the regular stuff 2020-04-09T16:05:50Z jcowan: You know about http://conal.net/blog/posts/the-c-language-is-purely-functional ? 2020-04-09T16:07:08Z jcowan: It's a satire, but it carries an important message about the nonexistence of effective purely functional languages 2020-04-09T16:12:38Z tdammers: I know it, and that's not the entire message 2020-04-09T16:12:52Z tdammers: rather, the message is, I think, that purity is a matter of viewpoint 2020-04-09T16:13:03Z mdhughes: I've seen real, useful software written in Haskell, but few and far between, and they're a mess around the database/IO layers. There's more of Erlang and ML, tho, which are functional but make state a little more practical. 2020-04-09T16:13:10Z tdammers: or, if you want, that pure functional programming is, by necessity, always a form of metaprogramming 2020-04-09T16:13:43Z Riastradh: `purity' is a distracting ideologically loaded word that should be abolished 2020-04-09T16:14:07Z jcowan: tdammers: Quite so. Riastradh: I always thought it was meant ironically. 2020-04-09T16:14:11Z tdammers: Riastradh: propose an alternative then? 2020-04-09T16:14:38Z tdammers: "purity" in the "pure FP" sense means "there are no side effects" 2020-04-09T16:14:41Z Riastradh: tdammers: The technically meaningful point is that side effects are named in the types. 2020-04-09T16:14:49Z Riastradh: (other than nontermination) 2020-04-09T16:14:59Z tdammers: no 2020-04-09T16:15:07Z tdammers: they're not *side* effects 2020-04-09T16:15:22Z Riastradh: OK, effects are named in the type. 2020-04-09T16:15:26Z jcowan: as with drugs, one person's effect is another's side effect 2020-04-09T16:15:49Z jcowan: I take several prescription drugs for their official side effects. 2020-04-09T16:15:49Z tdammers: the distinction is important, because it allows distinguishing evaluation from execution 2020-04-09T16:16:13Z tdammers: evaluating Haskell is pure; there are no effects bound to it 2020-04-09T16:16:21Z Riastradh: My point is that `purity' is an ideologically loaded word that is distracting from the technical merit of the idea of putting effects in the type system in Haskell. 2020-04-09T16:16:38Z tdammers: it's not meant to be ideologically loaded 2020-04-09T16:16:45Z Riastradh: Whatever it is `meant' to be, it _is_. 2020-04-09T16:16:51Z tdammers: it doesn't mean "pure" in the "pure breed" sense 2020-04-09T16:16:57Z jcowan: The meaning of a word is in the hearer, not the speaker 2020-04-09T16:17:09Z Riastradh: People get ideologically attached to the idea of `purity' whether you like it or not and the choice of term invites that. 2020-04-09T16:17:11Z tdammers: ah, see, there's this cultural rift 2020-04-09T16:17:46Z tdammers: in some contexts at least, it is necessary to put the responsibility for the meaning of a word with the speaker 2020-04-09T16:17:51Z tdammers: in the form of rigid definitions 2020-04-09T16:18:11Z jcowan: Indeed. In the 1960s there was this hysterical (for the times) TV sketch of a bounch of white U.S. Southerners learning to pronounced the word "Negro". 2020-04-09T16:18:21Z tdammers: you can't do science if the definitions of all the terms you use are at the listener's discretion 2020-04-09T16:19:02Z jcowan: Or the speaker's. It doesn't matter that I rigidly define "commutative" to mean associative, or "associative" to mean commutative, you will still be confused. 2020-04-09T16:19:29Z Riastradh: `commutative' and `associative' don't carry the same connotations as `purity' and people don't get ideologically attached to them. 2020-04-09T16:19:36Z cartwright quit (Remote host closed the connection) 2020-04-09T16:19:49Z tdammers: Riastradh: then propose an alternative 2020-04-09T16:19:52Z jcowan: The U.S. and the rest of the world have opposite meanings for "trapezium" and "trapezoid", a circumstance traceable to an error in a single 18C textbook much used in the U.S. at the time 2020-04-09T16:20:05Z jcowan: Riastradh: True. But the difference is one of degree, not of kind 2020-04-09T16:20:07Z Riastradh: tdammers: My alternative is to say that effects are named in the type system. 2020-04-09T16:20:14Z daviid quit (Ping timeout: 240 seconds) 2020-04-09T16:20:20Z Riastradh: That's the important idea of a `purely functional' programming language. 2020-04-09T16:20:21Z tdammers: Riastradh: that's not the same thing though. "Pure" means "has no effects". 2020-04-09T16:20:35Z tdammers: No, it's not. The important idea is to have a language that doesn't allow effects AT ALL. 2020-04-09T16:20:38Z Riastradh: Yes, I'm suggesting an alternative way of framing the entire discussion. 2020-04-09T16:20:44Z Riastradh: That's a completely useless language. 2020-04-09T16:20:46Z jcowan nods 2020-04-09T16:20:58Z cartwright joined #scheme 2020-04-09T16:21:08Z tdammers: Yes, it is. Simon Peyton-Jones himself has recorded a wonderful video to that extent 2020-04-09T16:21:13Z jcowan: I once knew someone who was on a crusade to eliminate the word "kill" from all command languages (before Unix escaped the Labs) 2020-04-09T16:21:25Z tdammers: https://www.youtube.com/watch?v=iSmkqocn0oQ&t=5s 2020-04-09T16:21:48Z jcowan: and there is a campaign underway to stop using "master" and "slave" for processes, databases, etc. because of the connotations they carry. 2020-04-09T16:22:05Z tdammers: the point being made there is that Haskell is useless by itself, being a pure (effectless) language, but we can make it useful as a meta-language 2020-04-09T16:22:16Z tdammers: that's how people use haskell for practical applications 2020-04-09T16:22:16Z jcowan: "YourDB network status: 2 bosses, 20 employees running" 2020-04-09T16:23:41Z Riastradh: jcowan: My objection goes beyond that -- it's that in my experience of watching the discourse in functional programming communities, people actually get ideologically attached to the idea of purity and miss the technical merit of naming effects in a type system. 2020-04-09T16:24:01Z jcowan: Or attached against it, I suppose 2020-04-09T16:24:06Z Riastradh: right 2020-04-09T16:24:25Z Riastradh: The ideological baggage of a stupid word the arguments especially insufferable. 2020-04-09T16:29:53Z Riastradh: makes 2020-04-09T16:31:03Z tdammers: my experience is different 2020-04-09T16:31:35Z tdammers: I've seen perfectly valid preferences mistaken for ideology 2020-04-09T16:32:18Z tdammers: and, again, it's not just about 'naming effects in the type system'. it's about having a substantial part of the overall language that DOES NOT HAVE EFFECTS AT ALL 2020-04-09T16:32:59Z tdammers: there are more technical merits than just the naming part 2020-04-09T16:33:20Z luni quit (Quit: Connection closed) 2020-04-09T16:33:59Z tdammers: they are not as obvious though, and people who don't understand them (yet) will sometimes reject explanations from those who do as "academic" or "ideology-driven". 2020-04-09T16:36:47Z mouloud[m]: pure is loaded word, it is the reason it was taken, in the sense superior to other functional languages. 2020-04-09T16:36:52Z mouloud[m]: that is my understanding 2020-04-09T16:38:13Z zaifir: I wonder: In a future of functional languages with algebraic effects, would Haskell and friends with their simple "IO sin bin" approach be viewed "less pure"? 2020-04-09T16:38:18Z zaifir: *viewed as 2020-04-09T16:38:27Z Riastradh: Maybe if the word didn't suggest ideological superiority it would be easier for the audience who is not in the in-group to recognize the technical points. 2020-04-09T16:42:55Z zaifir: Yes. 2020-04-09T16:43:33Z zaifir: "Purity through (Co)Strength" --rejected Republic of Haskell slogan 2020-04-09T16:44:18Z Riastradh: (by the way, you don't need to convince me of the merit of naming effects in the type system or of having a culture of keeping effects narrowly scoped; I am only talking about the discourse and the way that Haskell evangelism appears outside the in-group) 2020-04-09T16:49:02Z Riastradh: jcowan: Incidentally, I do tend to think that `replica' and `worker' are better alternatives to `slave' which neither carry cultural baggage nor sound silly (and as a bonus, they're more specific for different purposes). 2020-04-09T16:50:28Z jcowan nods 2020-04-09T16:50:39Z jcowan: Although the last point may be good or bad depending on context 2020-04-09T16:51:42Z Riastradh: I don't expect there are many contexts in which one word is needed to mean _both_ `replica' and `master'. 2020-04-09T16:51:49Z Riastradh: er 2020-04-09T16:51:52Z Riastradh: `replica' and `worker' 2020-04-09T16:52:38Z jcowan: Consider a set of servers each of which do part of the job (thus not replicas) but lack central coordination (thus not workers as usually understood) 2020-04-09T16:55:08Z Riastradh: Yes, you can construct an artificial example, but would you use the word `slave' for that otherwise? 2020-04-09T16:55:53Z Riastradh: (`peer' seems more appropriate in your scenario) 2020-04-09T16:56:03Z xelxebar quit (Write error: Connection reset by peer) 2020-04-09T16:56:49Z xelxebar joined #scheme 2020-04-09T16:56:51Z jcowan nods 2020-04-09T17:02:54Z drakonis joined #scheme 2020-04-09T17:06:20Z turtleman joined #scheme 2020-04-09T17:10:18Z CyDefect quit (Ping timeout: 256 seconds) 2020-04-09T17:12:03Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-09T17:12:12Z mouloud[m]: does gambit scheme backend support eval? 2020-04-09T17:12:38Z mouloud[m]: I mean javascript backend, is it possible to eval some scheme in the browser using gambit-js? 2020-04-09T17:14:01Z xelxebar joined #scheme 2020-04-09T17:16:03Z turtleman quit (Ping timeout: 258 seconds) 2020-04-09T17:21:06Z turtleman joined #scheme 2020-04-09T17:23:40Z aeth quit (Ping timeout: 256 seconds) 2020-04-09T17:27:54Z turtleman quit (Ping timeout: 265 seconds) 2020-04-09T17:34:41Z aeth joined #scheme 2020-04-09T17:39:09Z luni joined #scheme 2020-04-09T17:44:39Z webshinra quit (Remote host closed the connection) 2020-04-09T17:46:57Z CyDefect joined #scheme 2020-04-09T18:02:34Z aeth: tdammers: The distinctions are less than you make them out to be. e.g. your "x = 15" example would, in mathematics, be "Let x = 15" which in your example language was sourcecodified as "x = 15" but in a Lisp is sourcecodified as (let ((x 15)) ...) which in a sense is superior because it makes scope explicit 2020-04-09T18:03:11Z aeth: Now, I mean, of course, (set! x 42) within that let shouldn't make sense, you would have to create a new scope to rebind x. 2020-04-09T18:03:54Z aeth: but (let ((x 15)) (let ((x 42)) x)) is perfectly legal FP, although a bit pointless since you're not using the first x 2020-04-09T18:04:36Z aeth: You will find similar such things (much less clearly!) in math textbooks if they're talking about scope (which exists in math) 2020-04-09T18:06:46Z aeth: What's "weak" about the Scheme FP is everything ending in a ! and everything that should end in a ! but doesn't, like display! 2020-04-09T18:09:44Z aeth: Lisp in general on the other hand is very much not FP, especially Common Lisp with CLOS, where you're almost necessarily going to have to SETF all over the place. Not as much as in other OOP, though. 2020-04-09T18:14:09Z aeth: tdammers: As for mutable arrays being an implementation detail, not really, unless you can find an exact equivalent to the many algorithms that assume mutable arrays. What's hard about pure FP is that you can't use most algorithms. 2020-04-09T18:19:24Z aeth: Riastradh: I'd phrase things differently in the context of a #scheme channel. Pure FP is where (1) every procedure/macro/etc. with a side effect has ! (even ones that currently don't, like display!) and (2) those things are not used. I suppose you could see it as a language that necessarily has at least two procedure types: pure and impure, though. 2020-04-09T18:21:54Z zaifir: aeth: You use different algorithms, but the distinction is sometimes fine. "In a sense, the main difference between functional and imperative algorithm design is that a functional programmer doesn't take assume an O(1) array access function." (Richard Bird) 2020-04-09T18:22:23Z aeth: (Oh, and note that #2 is saying "every foo! is not used", but of course the language can have no foo! and #2 still holds.) 2020-04-09T18:22:50Z aeth: zaifir: That's... huge. 2020-04-09T18:22:59Z zaifir: aeth: Indeed! But that's sort of it. 2020-04-09T18:23:55Z aeth: zaifir: But, I mean, it's like... e.g. you go here and none of this holds. https://en.wikipedia.org/wiki/Matrix_multiplication_algorithm 2020-04-09T18:26:26Z zaifir: aeth: Efficient matrix multiplication is probably where Haskellers pull out IO. 2020-04-09T18:26:27Z Riastradh: aeth: Such a language is not useful as a programming language, and would also not characterize Haskell. 2020-04-09T18:26:29Z aeth: OK, not quite, you could modify the divide and conquer algorithm to use something other than the iterative algorithm in its base case. But now you are putting on the hat of an algorithm designer, which is much harder and more likely to accidentally O(n!) things. 2020-04-09T18:28:30Z zaifir: aeth: The point, though, is that mutation-less algorithm design is an area of research and lots of people work hard on problems like these. "We are not the first people to be able to think!" --Arnold Schoenberg 2020-04-09T18:29:01Z aeth: Riastradh: Right, FP is all about where you break purity. In Common Lisp, the solution is "we don't really care, SETF everything if you want". In Scheme, the solution is "let's avoid ! as much as we can". In Haskell it is afaik monads, which are just monoids in the category of endofunctors. 2020-04-09T18:29:09Z turtleman joined #scheme 2020-04-09T18:29:21Z aeth: Riastradh: It's interesting that Scheme does not ! its IO, though. 2020-04-09T18:29:37Z aeth: So Scheme did kind of give up there. 2020-04-09T18:30:17Z Riastradh: aeth: `breaking purity' is the kind of loaded phrasing that leads these discussions to be insufferable and unhelpful. 2020-04-09T18:30:32Z zaifir: Hah, if it did, Scheme would have the lowest-budget IO type--i.e. there isn't one, but we stick '!' on things to remind you. 2020-04-09T18:30:51Z zaifir: Riastradh, agreed. 2020-04-09T18:30:58Z aeth: zaifir: My point on algorithms, though, is that if you want to solve a problem, you just search for the answer and implement the pseudocode or whatever. Take away mutable arrays and you cut 99% of your search results in certain areas (e.g. numerical), if not more. 2020-04-09T18:31:01Z Riastradh: aeth: In Haskell, effects are named in the type system, so it's mandatory -- the types will not check if you accidentally put an effect in your code, but you don't name it in the type. 2020-04-09T18:31:32Z zaifir: aeth: That's a pretty lazy way to solve problems. 2020-04-09T18:31:54Z aeth: Riastradh: You can do something similar in a Scheme by distinguishing between pure and impure as the only two types of procedures, where ! contaminates 2020-04-09T18:32:04Z Riastradh: This mandatory labelling of effects has two main consequences: (1) there's a little more pressure to compose logic without side effects if it's not necessary, and (b) you are _guaranteed_ that if an effect isn't in the type then it won't happen. 2020-04-09T18:32:12Z Riastradh: er 2020-04-09T18:32:16Z Riastradh: (a) 2020-04-09T18:32:21Z aeth: You could write a Scheme where your code doesn't compile if your impure procedure doesn't end in a ! 2020-04-09T18:32:35Z Riastradh: Scheme's convention of writing ! only gives (a), not (b). 2020-04-09T18:32:46Z zaifir: Ahem, my experience with finding non-mutative solutions is (1) I ask on #scheme (2) *certain people* tell me I'm crazy to do X without mutation, (3) I look it up myself and find lots of effective solutions. 2020-04-09T18:33:30Z mouloud[m]: sprint lisp game jam is tomorrow 2020-04-09T18:33:32Z mouloud[m]: https://itch.io/jam/spring-lisp-game-jam-2020 2020-04-09T18:33:32Z Riastradh: Either way, I still recommend that you avoid the words `purity' and `impure' because the value-loaded connotations they are burdened with are unhelpful. 2020-04-09T18:33:58Z aeth: Riastradh: If you wrote the hypothetical Scheme I described, you are guaranteed that if the procedure doesn't end in ! then it is not a !-procedure, to avoid "impure" and "pure". 2020-04-09T18:34:12Z mouloud[m]: I mean a few hours away, exactly 9 hours ans 26 minutes. 2020-04-09T18:34:47Z mouloud[m]: s/sprint/spring/ 2020-04-09T18:34:59Z Riastradh: aeth: Does (lambda (f) (f)) have side effects? 2020-04-09T18:35:00Z aeth: Riastradh: that is (define (foo l) (set-car! l 42)) would be a compiler error because you're trying to call it "foo" instead of "foo!" 2020-04-09T18:35:40Z zaifir: aeth: That's kind of silly. 2020-04-09T18:36:08Z aeth: Riastradh: No, because you can taint the impure procedures there, too. That is, (lambda (f!) (f!)) would have side effects whereas (lambda (f) (f)) does not. 2020-04-09T18:36:10Z Riastradh: Certainly you could invent a type system for Scheme whose only distinction is `procedure with side effects' vs `anything else', but I suspect that writing code in such a language would incur the pain of dynamically typed languages _and_ statically typed languages. 2020-04-09T18:36:22Z aeth: s/would have/could have/ 2020-04-09T18:37:49Z Riastradh: aeth: Right, so you're inventing a type system like I just described. 2020-04-09T18:38:36Z Riastradh: Of course, you have to propagate it everywhere. E.g., with (define-record-type ... (f foo-f) ...), does ((foo-f foo) ...) have side effects? Well, you'll need to incorporate it into the notion of record types. 2020-04-09T18:43:16Z zaifir: That does indeed sound like incurring "the pain of dynamically typed languages _and_ statically typed languages." 2020-04-09T18:43:52Z Riastradh: It's like that in Haskell: In Haskell an expression giving a value of type t but also having side effects on the world has the type `IO t'. There's no way to take an expression of that type and make an expression of type `t' out of it (*); you can only turn it into more IO-type expressions. 2020-04-09T18:49:38Z retropikzel quit (Quit: Leaving) 2020-04-09T18:56:27Z jobol quit (Quit: Leaving) 2020-04-09T18:57:19Z jcowan: For whatever reason, most of I/O was not as affected by the Great Renaming 2020-04-09T18:57:51Z lritter joined #scheme 2020-04-09T18:58:07Z aeth: why isn't (scheme base) pure? 2020-04-09T18:58:11Z jcowan: I don't understand the claim that functional objects are hard in CL and that you have to "setf all over the place, though 2020-04-09T18:58:48Z Riastradh: `you keep using that word...' 2020-04-09T18:58:55Z aeth: jcowan: it's not so much that they're hard, it's that CLers don't particularly care. https://github.com/slburson/fset exists 2020-04-09T18:59:16Z jcowan: "Real programmers can write Fortran in any language" 2020-04-09T18:59:21Z aeth: Riastradh: I would say "why does (scheme base) have !'s in it?" but there are some things without !'s that would be problematic, I think 2020-04-09T19:00:06Z jcowan: We started with the R5RS+ basis set and modularized it by looking at what an implementation might reasonably not be able to support because of its size or environment 2020-04-09T19:00:23Z jcowan: functionalness was not a consideration. 2020-04-09T19:00:25Z Riastradh: aeth: So `why does anything in (scheme base) have side effects'? Which things in particular? For example, if you don't want to kick out letrec (or letrec*) and call-with-current-continuation, I have some bad news for you... 2020-04-09T19:00:31Z jcowan: (scheme base) is not any kind of minimal and never has been 2020-04-09T19:01:13Z aeth: jcowan: but (scheme write) is a separte library.... 2020-04-09T19:01:28Z ggole quit (Quit: Leaving) 2020-04-09T19:01:31Z jcowan: Indeed. It has to do a lot, and if you are running on an Arduino, say, it's probably pointless. 2020-04-09T19:01:33Z aeth: (but there are more write-foo in (scheme base) than (scheme write)) 2020-04-09T19:01:39Z zaifir: Someone should amend the first line of https://en.wikipedia.org/wiki/Scheme_(programming_language) , then. 2020-04-09T19:01:50Z jcowan: That has never applied to the library 2020-04-09T19:02:08Z jcowan: The library of R[01]RS was "all the functions in Maclisp" 2020-04-09T19:02:30Z aeth: zaifir: the minimalist part? 2020-04-09T19:02:36Z zaifir: aeth: Yes. 2020-04-09T19:02:47Z aeth: "Scheme was a minimalist dialect of the Lisp family of programming languages until R6RS" sounds like a great way to attract a flamewar 2020-04-09T19:03:00Z zaifir laughs. 2020-04-09T19:03:05Z mouloud[m]: minimalism is not the number of procedures. minimlism is not small. 2020-04-09T19:03:30Z jcowan: It is not minimal in any sense. If it were, it would have car, cdr, cons, and (). 2020-04-09T19:03:54Z jcowan: and pair? 2020-04-09T19:04:10Z aeth: PG presents a minimalist Lisp... http://paulgraham.com/rootsoflisp.html 2020-04-09T19:04:16Z aeth: "The Code" i.e. jmc.lisp 2020-04-09T19:04:23Z Riastradh: aeth: The sentiment that Scheme had jumped the shark, and maybe we should just say `Scheme' is fixed to mean what it was then and move on with another name, was around back in the '90s. 2020-04-09T19:04:29Z aeth: someone probably translated that page into Scheme before 2020-04-09T19:04:50Z zaifir: rudybot: Consen und Fixnumen 2020-04-09T19:04:50Z rudybot: zaifir: A natural number is either the empty set or a set containing one element, its predecessor. As for unnatural numbers: "Die Consen und die Fixnumen hat der lieber McCarthy gemacht; alles andere ist Hackerwerk." 2020-04-09T19:05:03Z aeth: "Assumes only quote, atom, eq, cons, car, cdr, cond." 2020-04-09T19:05:22Z aeth: weirdly, that has COND as a primitive while Scheme does not 2020-04-09T19:05:30Z aeth: I guess because it had no macro system to build COND from IF 2020-04-09T19:05:42Z Riastradh: cond came long before if. 2020-04-09T19:05:59Z jcowan: yes, and of course defining if in terms of primitive cond is fine 2020-04-09T19:06:59Z jcowan: the set {variable, procedure call, literal, if, lambda, set!, letrec} and various compile-time things is just *a* minimal basis for the language 2020-04-09T19:07:49Z aeth: Riastradh: Scheme probably peaked at some point before MIT abandoned it. Although I'm not sure if Scheme actually peaked or if it was just the renaming of PLT Scheme to Racket that did the trick. As I said in #lispcafe a while back, if SBCL renamed itself to "Steel" and stopped branding itself as a CL, that would take like 70%-90% of the CL community with it. 2020-04-09T19:08:12Z aeth: This is all after the 90s, though. 2020-04-09T19:09:15Z aeth: Riastradh: As for cond coming long before if, yes, I'm talking about: https://sep.yimg.com/ty/cdn/paulgraham/jmc.lisp?t=1564708198& 2020-04-09T19:09:33Z aeth: That's basically the original Lisp translated to CL 2020-04-09T19:10:37Z aeth: Unlike Scheme, but like what jcowan was talking about, it is minimal. 2020-04-09T19:10:55Z wasamasa: you remind me that I tried translating rabbit from maclisp to elisp 2020-04-09T19:10:59Z wasamasa: I failed spectacularly 2020-04-09T19:11:37Z aeth: Riastradh: I just found it amusing how it's minimal but with COND, which is derived in Scheme. It's like when someone turns a theorem into an axiom 2020-04-09T19:11:37Z wasamasa: there was an introspection related incompatibility and the code isn't exactly the easiest to understand 2020-04-09T19:11:53Z aeth: Riastradh: Except I guess things went the other way around 2020-04-09T19:12:21Z jcowan: Well, I would start by porting SCHEME (the interpreter) to modern Scheme. I don't know if Cheapy is still around, but it's much simpler than Rabbit. 2020-04-09T19:12:22Z aeth: wasamasa: someone is trying to implement LISP 1.5 in CL iirc. e.g. https://old.reddit.com/r/lisp/comments/fqs19u/differences_between_lisp_15_and_common_lisp_part_1/ 2020-04-09T19:16:50Z skapata joined #scheme 2020-04-09T19:16:58Z wasamasa: jcowan: this is what I was suggested when I wrote an email to the author of the paper and asked whether there's any surviving version of the interpreter used to bootstrap it 2020-04-09T19:18:55Z wasamasa: jcowan: Sussman suggested to instead rewrite the compiler in a modern scheme, claiming the original sources have been lost 2020-04-09T19:20:42Z aeth: Rabbit? 2020-04-09T19:20:53Z aeth: And is it r0rs, r-1rs, r-2rs, or? 2020-04-09T19:20:58Z wasamasa: of the interpreter used to bootstrap rabbit 2020-04-09T19:21:14Z aeth: ah 2020-04-09T19:21:40Z wasamasa: it was something fancier than the interpreter presented in AIM-349 2020-04-09T19:22:31Z wasamasa: the reason why it had to be rabbit is because I came up with just the right name for a revival project 2020-04-09T19:22:55Z jcowan: Rabbit bootstraps from Maclisp directly 2020-04-09T19:23:13Z wasamasa: yeah, I've later found a java implementation of maclisp capable of booting rabbit 2020-04-09T19:23:30Z wasamasa: I did debug my port a bit, but eventually gave up 2020-04-09T19:23:40Z jcowan: Rabbit was the first high-performance Scheme compiler; it targeted Maclisp. 2020-04-09T19:23:52Z jcowan: Cheapy was the first not-very-high-performance etc. etc. 2020-04-09T19:24:02Z jcowan: SCHEME was a Scheme interpreter in Maclisp 2020-04-09T19:24:09Z aeth: It shouldn't be too hard to port Maclisp to Common Lisp. 2020-04-09T19:24:16Z jcowan: ("the AIM-349 interpreter") 2020-04-09T19:24:36Z aeth: What you could do is port the Maclisp to Common Lisp and then port the Common Lisp to Scheme piece-by-piece by using a Scheme written in Common Lisp. 2020-04-09T19:24:42Z jcowan: Rabbit has a lot of Maclisp dependencies, but I'm sure they could be worked around. 2020-04-09T19:25:14Z jcowan: for example it has hunks, but it uses them as poor man's structs 2020-04-09T19:25:18Z jcowan: s/has/needs 2020-04-09T19:25:27Z wasamasa: the interpreter in AIM-349 assumes it's the only program running on the machine 2020-04-09T19:25:47Z aeth: jcowan: yes, but Common Lisp was designed for you to port your Maclisp (or Interlisp) to it 2020-04-09T19:25:49Z wasamasa: it runs scheduler code in a busy loop for some reason 2020-04-09T19:26:17Z aeth: wasamasa: can't that just be solved by inserting a few strategically placed sleeps? 2020-04-09T19:26:29Z aeth: now you emulate the original! slow things down... 2020-04-09T19:27:19Z wasamasa: probably, but then, it doesn't seem terribly useful anyway, other than demonstrating how you can do something reminiscent of green threads 2020-04-09T19:27:41Z luni quit (Quit: Connection closed) 2020-04-09T19:28:17Z aeth: I increasingly dislike green threads, but that might just be because my core count keeps going up 2020-04-09T19:28:33Z mdhughes: Well, a cooperative scheduler's just call/cc in a loopโ€ฆ 2020-04-09T19:28:50Z jcowan: aeth: Forget porting Interlisp: it's almost all environment. 2020-04-09T19:28:56Z mdhughes: But yeah, green threads are the worst thing anymore. 2020-04-09T19:29:02Z Riastradh: wasamasa: The early Scheme's concurrency primitives are not, in fact, terribly useful. 2020-04-09T19:29:10Z jcowan: Yes, just blow them off. 2020-04-09T19:29:53Z aeth: These days, "mainstream" desktops are 6 core to 16 core and workstations can reach 64 core. In x86-64. 2020-04-09T19:29:59Z mdhughes: I really think TempleOS was onto something: No process scheduler. Each "multitasking" program gets its own core. 2020-04-09T19:30:10Z aeth: mdhughes: Ahead of its time, then. 2020-04-09T19:30:42Z drakonis: y'all should check barrelfish 2020-04-09T19:30:50Z aeth: htop says I have "86 tasks", though, and that's pretty low. In a "real" desktop environment it can easily be double that. 2020-04-09T19:31:11Z aeth: So I guess I need a dual socket 128 core machine 2020-04-09T19:32:25Z mdhughes: "Barrelfish is โ€œmultikernelโ€ operating system [3]: it consists of a small kernel running on each core (one kernel per core), and while rest of the OS is structured as a distributed system of single-core processes atop these kernels. Kernels share no memory, even on a machine with cache-coherent shared RAM, and the rest of the OS does not use shared memory except for transferring messages and data between cores, 2020-04-09T19:32:26Z mdhughes: and booting other cores. Applications can use multiple cores and share address spaces (and therefore cache-coherent shared memory) between cores, but this facility is provided by user-space runtime libraries." 2020-04-09T19:32:41Z mdhughes applauds 2020-04-09T19:33:26Z aeth: So are we saying that barrelfish is the exact opposite of green threads? 2020-04-09T19:33:54Z mdhughes: Yes, seems like it. 2020-04-09T19:34:15Z jcowan: I think the R0RS concurrency was removed from R1RS, and it is not in Rabbit at all. 2020-04-09T19:34:54Z zaifir: What's de facto R7RS concurrency--SRFI 18? 2020-04-09T19:34:54Z mdhughes: I would think a kernel per core is a bit memory-heavy, but depends on how small they can keep the kernel. 2020-04-09T19:35:10Z aeth: Is there a Scheme that has all RnRS? Maybe Racket? 2020-04-09T19:35:40Z jcowan: No 2020-04-09T19:35:57Z aeth: No r4rs even. That's disappointing. https://pkgd.racket-lang.org/pkgn/search?q=r4rs&tags= 2020-04-09T19:36:06Z jcowan: First of all, I doubt if any functioning Scheme supports all of R3RS, not to mention anything earlier 2020-04-09T19:36:10Z mdhughes: MIT Scheme, if you go back far enough in snapshotsโ€ฆ 2020-04-09T19:36:16Z jcowan: Scheme 9 is R4RS. 2020-04-09T19:36:32Z aeth: A r4rs lang should be doable afaik. Although there might be subtle differences that I'm not aware of 2020-04-09T19:36:34Z mdhughes: Well, it wouldn't be R0, R2? 2020-04-09T19:36:37Z aeth: r4rs just looks like r5rs-- 2020-04-09T19:37:01Z jcowan: Yes, 2020-04-09T19:37:07Z aeth: jcowan: what's in r4rs that a modern Scheme doesn't support? 2020-04-09T19:37:13Z aeth: s/r4rs/r3rs/ 2020-04-09T19:37:26Z jcowan: Little things here and there, trivial to implement now 2020-04-09T19:39:07Z jcowan: https://people.csail.mit.edu/jaffer/r4rs.pdf p. 38 gives you a summary of them 2020-04-09T19:39:32Z jcowan: Implementing the optional R4RS macro appendix probably isn't worth doing, as it's a trivial variant of syntax-rules. 2020-04-09T19:40:06Z jcowan: pp. 40-46 2020-04-09T19:40:22Z jcowan: r2 and r3 had no macros 2020-04-09T19:40:42Z aeth: OK so r4rs is just small differences with a different, optional syntax-rules 2020-04-09T19:42:06Z jcowan: yes, although an implementation could be simplified because r4 has neither multiple values nor dynamic-wind, though it does have call/cc. 2020-04-09T19:42:24Z aeth: That's a good PDF, actually. 2020-04-09T19:42:51Z aeth: I don't think I've encountered "A compatible low-level macro facility" before, but I could be mistaken 2020-04-09T19:43:18Z aeth: Is that out of date? 2020-04-09T19:43:36Z jcowan: Yes. 2020-04-09T19:43:43Z jcowan: There's a complete set of PDFs at https://bitbucket.org/cowan/r7rs/src/draft-10/rnrs/ 2020-04-09T19:44:03Z jcowan: from r0 to r7-small 2020-04-09T19:45:10Z aeth: Is there a diff/changelog PDF out there on the internet? 2020-04-09T19:45:19Z aeth: or "history" etc 2020-04-09T19:45:40Z wasamasa: an antinews for the standards would be fun 2020-04-09T19:46:15Z TCZ joined #scheme 2020-04-09T19:53:20Z aeth quit (Ping timeout: 256 seconds) 2020-04-09T19:54:04Z wasamasa: jcowan: you don't happen to know a paper or source code copy covering cheapy, do you 2020-04-09T19:54:47Z jcowan: No, no idea. It's mentioned in one of the Lambda papers, possibly Rabbit itself 2020-04-09T19:56:04Z jcowan: There is TeX source out there. Both R7RS and R6RS are descendants of the R5RS source, which is is a descendant of the R4RS source. I don't know beyond that. 2020-04-09T19:58:18Z izh_ joined #scheme 2020-04-09T19:58:38Z wasamasa: it's described as throwaway code, that's why I didn't think much of it 2020-04-09T19:59:09Z aeth joined #scheme 2020-04-09T20:00:00Z kritixilithos quit (Remote host closed the connection) 2020-04-09T20:06:56Z revtintin quit (Ping timeout: 256 seconds) 2020-04-09T20:08:32Z madage quit (Remote host closed the connection) 2020-04-09T20:09:04Z madage joined #scheme 2020-04-09T20:12:25Z revtintin joined #scheme 2020-04-09T20:13:43Z revtintin quit (Client Quit) 2020-04-09T20:19:52Z tdammers: aeth: no, what's "weak" about scheme FP is that it doesn't distinguish "functions" from "procedures" 2020-04-09T20:20:05Z tdammers: aeth: the ! thing is a syntactic detail 2020-04-09T20:20:59Z tdammers: aeth: what matters is that there is no enforced distinction between "expressions that may cause effects to be executed when evaluated" and "expressions that will not cause effects to be executed when evaluated" 2020-04-09T20:21:57Z tdammers: the "enforced" part is important, because without it, the distinction becomes an honor system, subject to manual diligence, and that becomes unmaintainable the moment your codebase (including its dependencies) becomes too large to fit in your head 2020-04-09T20:22:34Z tdammers: that doesn't mean the paradigm is unworkable entirely, just that a different approach to problem solving must be taken 2020-04-09T20:23:08Z zaifir: tdammers: Something similar happens in big Haskell codebases when IO gets pulled out for random things. 2020-04-09T20:23:24Z aeth: tdammers: that's just unspecified, actually. 2020-04-09T20:24:12Z zaifir: tdammers: It's of course true that the type system isolates this, but the type tends to spill out everywhere. At least in Scheme procedure-local mutation doesn't, roughly speaking, change anything beyond that procedure. 2020-04-09T20:24:12Z tdammers: zaifir: yes, but the difference is that with IO, you are forced to make it explicit; you can designate a whole subexpression as "pure", meaning that it cannot have any effects (other than returning a pure value) 2020-04-09T20:24:13Z aeth: tdammers: in particular, only procedure? is specified and in Scheme all functions are procedures, but there is no function? provided that can tell you if your procedure is a (pure) function 2020-04-09T20:24:20Z tdammers: zaifir: and the compiler enforces that 2020-04-09T20:24:54Z tdammers: aeth: yes, exactly. and that means that even if you attempt to write a pure function, nothing will stop you from accidentally calling something impure from within by accident 2020-04-09T20:25:08Z Riastradh: zaifir: Fortunately Haskell also provides ways to create your own types of effects that are more narrowly defined. 2020-04-09T20:25:24Z aeth: tdammers: The compiler stopping you might be non-portable. The compiler warning you is afaik absolutely permitted by the standard. 2020-04-09T20:25:30Z tdammers: aeth: it's not as bad as, say, Python, where something as innocious-looking as def foo(a): return a + a is, in fact, not guaranteed to be pure 2020-04-09T20:25:46Z Riastradh: zaifir: So you can create a way to say, e.g., `only database transactions occur in this part of the program -- no other side effects'. 2020-04-09T20:25:56Z zaifir: Riastradh: Right. 2020-04-09T20:26:01Z tdammers: zaifir: IO only spills if you allow it to. 2020-04-09T20:26:38Z tdammers: zaifir: if all you're after is mutation, you can also use ST, which provides "externally pure, but with internal mutable local state" semantics in a safe fashion 2020-04-09T20:27:00Z aeth: tdammers: Do you want me to add a compiler warning when a procedure whose name does not end in ! has side effects? Because I think that's possible, with the caveat that it could complicate higher order functions. 2020-04-09T20:27:28Z zaifir: tdammers: I happen to be a big fan of separating out IO with the type system. There's more than one way to do it, though. 2020-04-09T20:27:40Z tdammers: aeth: no, if I wanted to do pure FP in scheme, I'd want the compiler to reject my program if I declare a procedure as pure, but use impure constructs inside 2020-04-09T20:27:47Z Riastradh: aeth: Big difference between `compiler might warn about a confusing idiom' and `you can confidently prove theorems about entire subsystems'. 2020-04-09T20:28:41Z zaifir: tdammers: Your argument seems to be "Scheme is impure", in a moral sense. It sounds a bit like a crusade, unfortunately. 2020-04-09T20:28:48Z aeth: tdammers: You're declaring a procedure as pure if its name doesn't end in ! 2020-04-09T20:29:05Z aeth: With the exception of higher order functions 2020-04-09T20:29:41Z tdammers: aeth: OK. So in that case, again, if I wanted to program pure FP in Scheme (which I don't), I would want the compiler to reject my program if I use any impure procedure inside a procedure declared as pure (by means of having a name not ending in !) 2020-04-09T20:29:58Z Riastradh: `With the exception of higher order functions'? `Well, with the exception of burning oil, we're pretty good about stemming carbon emissions.' 2020-04-09T20:30:00Z aeth: I mean I guess you could also do an actual pure declaration 2020-04-09T20:30:06Z tdammers: *including* higher-order, because if effects can sneak in through arguments, it's all pretty much useless 2020-04-09T20:30:46Z aeth: Riastradh: Languages aren't about proving theorems with rare exceptions like Coq, and even then, they're not generally used to prove the more serious, advanced theorems. 2020-04-09T20:30:50Z tdammers: zaifir: it's not a crusade, I'm merely using the word "pure" here to talk about "things that don't cause any effects as a consequence of evaluating them" 2020-04-09T20:31:03Z jcowan: https://github.com/scheme-requests-for-implementation/srfi-172/blob/master/srfi-172-functional.sld is my best shot at a pure subset of R7RS-small 2020-04-09T20:31:05Z tdammers: zaifir: it does not mean "morally pure" here in any way 2020-04-09T20:31:52Z Riastradh: zaifir: I don't think tdammers is trying to say `Scheme is impure' in a moral sense. I lost track of the original conversation, but I think tdammers was trying to discuss the technical merits of using the type system to mark side effects and of having pressure from the language to keep side effects narrowly scoped. 2020-04-09T20:32:08Z tdammers: ^ this 2020-04-09T20:32:15Z zaifir: Ok, understood. 2020-04-09T20:32:16Z tdammers: I am not making any moral argument whatsoever here 2020-04-09T20:32:53Z tdammers: Scheme is unsuitable (in its current form) for an "effectless" programming style (trying really hard to avoid the word "pure" here) 2020-04-09T20:33:07Z Riastradh: (I jumped in to point out that the term `purity' obscures the technical point by dressing it up in ideological language, and confuses a lot of the audience that isn't in the in-group -- and confuses some of the in-group into treating `purity' as an ideological virtue in its own right rather than as a technique for keeping systems understandable.) 2020-04-09T20:33:34Z jcowan: Obviously you can smuggle in impure functions by passing them to these procedures, but I don't think any of them have any side effects except allocation, which is usually not considered a side effect 2020-04-09T20:33:41Z Riastradh: aeth: Type systems are _all about_ proving theorems, and proving theorems in one's head is a substantial part of reasoning about any complex computing systems. It is at least half of what I'm doing in my head whenever I'm programming. 2020-04-09T20:33:56Z tdammers: Riastradh: problem is that within the world of type theory, programming language theory, and programming language design in general, "purity" is the accepted term for this specific concepts, and there aren't really any good alternatives 2020-04-09T20:34:09Z tdammers: I tried "effectless", but honestly, it doesn't quite capture the meaning 2020-04-09T20:34:25Z jcowan: But not explicitly, any more than you (as a native speaker) are explicitly manipulating the grammar of English in order to construct an English sentence. 2020-04-09T20:34:36Z jcowan: you = Riastradh 2020-04-09T20:35:10Z tdammers: jcowan: that's an interesting point actually, because programming is a form of communication, and it matters greatly what you are trying to tell the (human) reader 2020-04-09T20:35:43Z aeth: tdammers: I'm not sure that Scheme is unsuitable here, actually. If you use srfi-172-functional, sure, internally you can't write anything, but if it's used in e.g. an IRC bot, the writing is done after the computation, i.e. displaying the return value, outside of the functional language. 2020-04-09T20:36:29Z tdammers: aeth: I'm simply talking about the fact that scheme has no built-in way of statically proving the absence of side effects 2020-04-09T20:36:33Z jcowan: RIght, and when I write code I prove theorems, but only tacitly, not explicitly. 2020-04-09T20:36:49Z Riastradh: tdammers: If it were just a matter of using `pure' as an adjective in the sense of `pure function', that might be fine -- nobody seems to get ideologically excited about the GCC attribute((pure)) qualifier to mark `pure functions' as such. But `purity' -- which I don't dispute is the standard accepted term in PL theory &c. -- does confuse the discourse, and I think it would help to reframe that 2020-04-09T20:36:56Z Riastradh: discourse as emphasizing that you're naming effects in the types. 2020-04-09T20:36:58Z wasamasa: jcowan: how is list->string supposed to work in bottom scheme if there's no support for characters? 2020-04-09T20:37:00Z jcowan: have you seen the Dialyzer example about pessimistic vs. optimistic type systems? 2020-04-09T20:37:35Z tdammers: Riastradh: I don't think I follow. 'purity' is what you get when you noun the adjective 'pure', what else would you use for that? 2020-04-09T20:37:42Z jcowan: wasamasa: The input is a list of strings, so it's really a simple case of string-append. If I get back to that I may rename it. 2020-04-09T20:37:47Z nullus quit (Quit: leaving) 2020-04-09T20:38:02Z aeth: tdammers: The srfi-172-functional procedures/macros do not have to be the same as the srfi-172 or r7rs procedures/macros. They can be separate implementations that verify that there are no side effects at all in the system. 2020-04-09T20:38:03Z Riastradh: tdammers: It's part of the marketing of Haskell, not just a term restricted to technical journals. 2020-04-09T20:38:10Z wasamasa: jcowan: and more importantly, do you reckon it's possible to implement r7rs-small on top of it? 2020-04-09T20:38:21Z Riastradh: haskell.org, `An advanced, purely functional programming language' 2020-04-09T20:38:26Z jcowan: aeth: To do that, srfi 172 functional would have to also be first order 2020-04-09T20:38:46Z jcowan: And like much marketing, it is untrue 2020-04-09T20:38:54Z aeth: jcowan: you would need a different implementation of srfi-172-functional.sld if that's what you mean 2020-04-09T20:38:56Z Riastradh: tdammers: zaifir got confused in this conversation by the `purity' terminology. 2020-04-09T20:39:16Z zaifir: Riastradh: Actually, I was punning. 2020-04-09T20:39:43Z tdammers: Riastradh: yes. people also get confused about the use of the word "retard" in aviation. that doesn't mean we need to change cockpit callouts to avoid that word just because laypeople think it's offensive 2020-04-09T20:39:47Z jcowan: srfi 172 functional does not attempt to prevent *explicit* impurity, only hidden impurity. If you pass in a function that is not written in the subset, there's nothing to be done. 2020-04-09T20:39:49Z zaifir: I know, not very helpful. But my point was that these conversations seem to inevitably become about ideology. 2020-04-09T20:39:52Z Riastradh: Anyway, I lost track of what the point of the discussion is. 2020-04-09T20:39:55Z Riastradh *poof* 2020-04-09T20:40:02Z aeth: But, anyway, srfi-172-functional is more functional than Haskell is because srfi-172-functional can be embedded within a broader programming language. That is, srfi-172-functional needs absolutely no escape hatches to achieve things like IO at all, whatsoever. No IO. Strictly inputs and outputs. Why? Because the input can come from r7rs and the output can go to r7rs 2020-04-09T20:40:05Z jcowan: Lost track of yourself, too 2020-04-09T20:40:20Z zaifir: "Riastradh disappears in a puff of logic." 2020-04-09T20:40:30Z tdammers: zaifir: it becomes about ideology the moment someone refuses to accept the existence of jargon 2020-04-09T20:40:42Z tdammers: s/refuses/rejects/ 2020-04-09T20:40:48Z aeth: s/Strictly inputs and outputs/Strictly inputs and outputs via functions/ 2020-04-09T20:40:49Z tdammers: no wait, refuses 2020-04-09T20:40:51Z jcowan: Not the existence, the suitability. 2020-04-09T20:41:20Z tdammers: existence, suitability, validity, something along those lines 2020-04-09T20:41:27Z jcowan: Anyhow, that strikes me as a trivial distinction: pure Haskell is embedded in another language that happens to be called "Haskell" 2020-04-09T20:41:51Z tdammers: there are several ways to look at it, and they're all correct from a certain point of view 2020-04-09T20:42:18Z jcowan: Joy is also an interesting case: it has a pure model and an impure model, and they are completely different 2020-04-09T20:43:03Z jcowan: there is a model with a mutable sglobal stack, exactly like the Forth stack except that you can push non-atomic objects onto it. 2020-04-09T20:43:20Z jcowan: And then there is a pure functional model where every word is a function from a stack to a stack. 2020-04-09T20:43:37Z jcowan: (the subset without files, anyway) 2020-04-09T20:43:51Z aeth: Anyway, what's interesting about srfi-172-functional is that you can do this or any other such variant and no side effects are possible within srfi-172-functional or a library described as "functional" (so there would need to be another SRFI extension?): (srfi-172-functional-+ (foo) (bar)) => 42 2020-04-09T20:44:11Z aeth: So you could probably embed a completely functional programming language within Scheme that way, assuming the compiler or interpreter supports it 2020-04-09T20:44:49Z jcowan: One of the Steelman requirements for Ada was a severe limitation on the side effects permitted in functions (= code objects that return a value when invoked). 2020-04-09T20:45:54Z tdammers: aeth: that's pretty awesome, but I wouldn't say that makes scheme "suitable for pure functional programming". just suitable for embedding a pure-functional EDSL 2020-04-09T20:45:57Z aeth: hmm, I think this is a better way of doing it than e.g. implicitly reading ! 2020-04-09T20:46:13Z tdammers: aeth: similar to how you can embed an imperative, untyped scripting language as a Haskell EDSL 2020-04-09T20:46:16Z aeth: tdammers: No, you're absolutely correct, Scheme isn't suitable for pure functional programming, but I see how it could be. 2020-04-09T20:46:48Z jcowan: "4C. Side Effects. The language shall attempt to minimize side effects in expressions, but shall not prohibit all side effects. A side effect shall not be allowed if it would alter the value of a variable that can be accessed at the point of the expression. Side effects shall be limited to own variables of encapsulations. The language shall permit side effects that are necessary to instrument functions and to do storage 2020-04-09T20:46:48Z tdammers: and also, again, I'm not saying that's a bad thing, it just means that when you program in Scheme, you're better off picking a different paradigm 2020-04-09T20:46:48Z jcowan: management within functions. The order of side effects within an expression shall not be guaranteed." 2020-04-09T20:47:21Z jcowan: In fact most Scheme programs are mostly functional, maybe about as much non-functional stuff as Haskell programs. 2020-04-09T20:47:31Z aeth: tdammers: What you would need to do is create a new SRFI to extend define-library where define-library could mark a library as "functional". Then, starting off of srfi-172-functional as a base (if implemented with this tag), you could build a series of Scheme libraries that create, if you only use those libraries and no others, a functional programming language with no side effects whatsoever. 2020-04-09T20:47:48Z aeth: i.e. it works at the library, rather than procedure/macro level 2020-04-09T20:47:51Z ArthurStrong joined #scheme 2020-04-09T20:48:10Z aeth: Then effectively, the outer Scheme language becomes something somewhat like Haskell's IO 2020-04-09T20:48:18Z aeth: Riastradh: ^ 2020-04-09T20:48:19Z casaca joined #scheme 2020-04-09T20:48:36Z tdammers: heh 2020-04-09T20:48:49Z tdammers: arguably, the resulting language would no longer be Scheme though 2020-04-09T20:48:56Z tdammers: but I the idea sounds fun 2020-04-09T20:49:26Z aeth: tdammers: well, it would no longer be Scheme only in the sense that Racket is no longer a Scheme. I mean, yes, to be pedantic yes. But effectively, it'd still be discussed here. 2020-04-09T20:49:50Z aeth: (Racket cons pairs are immutable, and there might be a few other differences.) 2020-04-09T20:50:04Z tdammers: hmhm 2020-04-09T20:50:08Z jcowan: Racket is clearly a Scheme 2020-04-09T20:50:19Z jcowan: And the resulting language would be a Scheme too. 2020-04-09T20:50:35Z gravicappa quit (Ping timeout: 250 seconds) 2020-04-09T20:51:02Z jcowan: aeth: You don't need a declaration on define-library: it would be straightforward to write a linter that determines if a library is pure using macroexpansion and code-walking. 2020-04-09T20:51:11Z aeth: jcowan: You can argue that Racket is a Scheme and that it's not, just like with a language centered around srfi-172-functional and the hypothetical srfi-n that extends define-library to allow a functional declaration 2020-04-09T20:51:20Z aeth: jcowan: yes, yes, you can do it automatically. 2020-04-09T20:52:02Z jcowan: MFTL on the other hand is about providing different facilities for functions and commands that make them both easy to write without fuss. 2020-04-09T20:52:43Z mouloud[m]: You will be very happy when you read about my new scheme that is inspired from R7RS without libraries, but is not R5RS either without macros ๐Ÿ› 2020-04-09T20:52:51Z jcowan: e.g. the equivalent of (if a b) is valid in a command, but not in a function. 2020-04-09T20:52:58Z aeth: jcowan: The compiler could still infer that something is functional without the declaration that it is, and could still optimize it, but then if you import (scheme write), it will cease being optimized as such and you won't notice. It will fail silently. The define-library extension guarantees that something declared functional remains functional. 2020-04-09T20:53:00Z mouloud[m]: (and without ports also) 2020-04-09T20:54:11Z aeth: jcowan: Similarly, the compiler could also optimize the Scheme core libraries in srfi-172-functional and just use exactly https://github.com/scheme-requests-for-implementation/srfi-172/blob/a1b5e3ac110156fff53253853c320b908900dad8/srfi-172-functional.sld 2020-04-09T20:54:12Z rudybot: https://teensy.info/xoUeyGhFro 2020-04-09T20:54:17Z jcowan: back to 4C for a moment, I interpret that as meaning that a function can have side effects as long as they are not discernible to the rest of the program as such. 2020-04-09T20:55:18Z jcowan: logging being a paradigm example 2020-04-09T20:56:45Z jcowan: Another example is a limited form of exception catching in which the catcher does not receive the exception caught. 2020-04-09T20:57:21Z aeth: How does Haskell do logging? 2020-04-09T20:58:14Z jcowan: I don't know for sure, I think it's an application of the Writer monad 2020-04-09T21:03:39Z cartwright quit (Quit: WeeChat 2.5) 2020-04-09T21:04:52Z cantstanya joined #scheme 2020-04-09T21:10:11Z klovett quit (Ping timeout: 260 seconds) 2020-04-09T21:12:32Z ski joined #scheme 2020-04-09T21:12:36Z klovett joined #scheme 2020-04-09T21:20:58Z lritter quit (Quit: Leaving) 2020-04-09T21:21:19Z lritter joined #scheme 2020-04-09T21:29:52Z CyDefect quit (Quit: Verlassend) 2020-04-09T21:35:30Z turtleman quit (Ping timeout: 256 seconds) 2020-04-09T21:36:47Z aeth: jcowan: OK. I think what I'm going to be going with is "(declare functional)" in define-library at the top line, where declare is a special form parsed by the parent macro, like in CL. That is, define-library will check to see if the first line is declare and if it is, it will go through the declaration list. 2020-04-09T21:37:30Z aeth: jcowan: And at the moment, I'm thinking of designing it so any use of something that is not functional within a library that is declared functional is an error, which would then make (srfi 172 functional) be more about convenience than anything else. 2020-04-09T21:38:21Z ArthurStrong quit (Quit: leaving) 2020-04-09T21:38:29Z jcowan: I agree with that 2020-04-09T21:40:10Z izh_ quit (Quit: Leaving) 2020-04-09T21:40:23Z tdammers: loggin in haskell is an effect, hands down 2020-04-09T21:40:33Z aeth: I will probably have an (airship functional) that will consist of (srfi 172 functional) and (cl functional) which can then be used as the base for an entirely functional program, except for the entry library, since you probably want to write a result somewhere 2020-04-09T21:41:14Z TCZ quit (Quit: Leaving) 2020-04-09T21:41:14Z tdammers: except for debug trace logging, which uses the "filthy unspeakable backdoor" into IO, unsafePerformIO (behind the facade of the Debug.Trace module) 2020-04-09T21:41:41Z tdammers: normal logging, though, is generally implemented in terms of IO, and exposed through a suitable typeclass (MonadLogger or whatever you call it) 2020-04-09T21:42:25Z jcowan: aeth: I recommend using just (functional) 2020-04-09T21:42:27Z tdammers: the main reason being that if logging were exposed through a pure API, you would lose the ability to control what gets logged when, because the compiler is free to decide if and when to evaluate things, as long as the result is the same 2020-04-09T21:42:43Z jcowan: by definition, everything in a define-library form is a declaration 2020-04-09T21:42:53Z ahungry quit (Remote host closed the connection) 2020-04-09T21:44:12Z aeth: jcowan: OK 2020-04-09T21:46:29Z aeth: jcowan: Should non-functional procedures passed into higher order functions of libraries declared functional be an error? 2020-04-09T21:47:19Z jcowan: Not necessarily. That permits you to specify valid callbacks out of the sandbox. 2020-04-09T21:47:56Z jcowan: In any case it is not checkable in general 2020-04-09T21:48:54Z aeth: Well, yes, not every procedure not infered as functional would actually not be functional. 2020-04-09T21:49:18Z aeth: Or I guess there exists at least one procedure not inferred as functional that is functional? 2020-04-09T21:49:23Z aeth: Well, probably. 2020-04-09T21:51:20Z aeth: anyway, I added srfi 172 because it is just define-library, even though it is not yet, heh, functional. 2020-04-09T21:51:58Z aeth: I implemented it as specified in the SRFI itself, manually removing the exports as specified in the SRFI itself. I did use the imports from the example code because they differ from the specification. 2020-04-09T21:52:45Z aeth: This is (srfi 172 functional) at the moment: https://gitlab.com/mbabich/airship-scheme/-/blob/master/srfi/172/functional.sld 2020-04-09T21:55:16Z tdammers: effectfulness is undecidable ;) 2020-04-09T21:55:45Z tdammers: practical purity checkers can only tell you "this is definitely not effectful" or "this may be effectful" 2020-04-09T21:56:36Z tdammers: they *could* also tell you "this is definitely effectful", but most won't bother, because there's still going to be a nonempty set of expressions that are undecidable 2020-04-09T21:57:11Z jcowan: That's where Dialyzer (the type checker for Erlang) is interesting. Rather than rejecting all programs that may be wrongly typed, it rejects only programs that are definitely wrongly typed. 2020-04-09T21:58:22Z aeth: The built-ins will be tagged functional or not, probably like so: (define-scheme-procedure ((car functional) pair) (car pair)). functional libraries will only be able to use things that are built-ins tagged functional or things exported from functional libraries. Anything in a functional library will be marked functional. 2020-04-09T21:59:23Z aeth: Until I work out the fine details, (functional) will be completely ignored and treated as a convention. 2020-04-09T22:00:01Z aeth: Technically speaking, you can break the whole system by lying about the state (or, rather, the lack of mutable state of) a built-in. 2020-04-09T22:01:49Z aeth: As described, higher order functions will be in a strange situation since they could be exported and used by a library not marked as functional. I suppose the compiler will simply optimize those less. 2020-04-09T22:04:58Z jcowan: aeth: If there are discrepancies between the code and the spec of SRFI 172, please tell me what they are. 2020-04-09T22:08:32Z aeth: jcowan: the code says (import (scheme base)) (import (scheme case-lambda)) (import (scheme char)) (import (scheme complex)) (import (scheme cxr)) (import (scheme inexact)) (import (scheme lazy)) 2020-04-09T22:08:38Z aeth: jcowan: the specification says "They simply import the (scheme base), (scheme char), (scheme complex), (scheme cxr), (scheme inexact), (scheme lazy), (scheme read), and (scheme write) libraries, and export the identifiers given above." 2020-04-09T22:08:50Z aeth: so the code adds (scheme case-lambda) and removes (scheme read) and (scheme write) 2020-04-09T22:11:07Z aeth: jcowan: there might also be a difference in the actual exports, if my code (implemented from the specification) differs from yours in a way other than where I put the line breaks. Of course, I could've also made a mistake removing a symbol etc 2020-04-09T22:11:36Z jcowan: I verified that pretty carefully but didn't verify the Implementation section. 2020-04-09T22:13:07Z jcowan: I asked Arthur to remove the list of libraries from the SRFI 2020-04-09T22:14:38Z aeth: The current full Implementation section for future reference: "Implementations of the two libraries for Chibi can be found in the repository of this SRFI. They simply import the (scheme base), (scheme char), (scheme complex), (scheme cxr), (scheme inexact), (scheme lazy), (scheme read), and (scheme write) libraries, and export the identifiers given above." 2020-04-09T22:16:38Z aeth: Hmm, so string->symbol is missing. Is anything else banned for sandboxing reasons rather than side effect reasons? https://srfi-email.schemers.org/srfi-172/msg/13298661/ 2020-04-09T22:18:48Z aeth: I might have to create a supplemental functional library 2020-04-09T22:19:10Z aeth: i.e. (srfi 172 functional) is (intersection functional sandboxable) 2020-04-09T22:20:38Z longshi joined #scheme 2020-04-09T22:28:33Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-09T22:34:00Z luni joined #scheme 2020-04-09T22:34:04Z jcowan: string->symbol side effects the symbol uniqueness table 2020-04-09T22:45:11Z f8l quit (Remote host closed the connection) 2020-04-09T22:46:34Z f8l joined #scheme 2020-04-09T22:47:15Z daviid joined #scheme 2020-04-09T22:50:48Z SGASAU quit (Remote host closed the connection) 2020-04-09T22:51:20Z SGASAU joined #scheme 2020-04-09T23:05:02Z Naptra quit (Remote host closed the connection) 2020-04-09T23:08:21Z SGASAU quit (Remote host closed the connection) 2020-04-09T23:08:39Z aeth: jcowan, tdammers, Riastradh: https://gitlab.com/mbabich/airship-scheme/-/issues/18 2020-04-09T23:08:56Z SGASAU joined #scheme 2020-04-09T23:13:23Z aeth: Feedback would be appreciated. 2020-04-09T23:13:52Z aeth: Riastradh: And as for the "proving via types", I have something else in store for that, later on. 2020-04-09T23:14:49Z aeth: Any other feature requests will be processed. 2020-04-09T23:15:14Z aeth: jcowan: Any chance of seeing extensions to define-library like (functional) in R7RS-large? 2020-04-09T23:15:34Z aeth: I mean, you can't enforce that compilers/interpreters will check this and especially can't enforce that they will optimize this 2020-04-09T23:19:13Z aeth: I also apologize if I was a bit rude. It was a useful conversation as far as getting an exact specification of what #scheme sees as functional 2020-04-09T23:21:26Z aeth: It also told me to completely avoid the word "pure", which I absolutely was going to label my primitives with. 2020-04-09T23:24:11Z aeth: tdammers: And whether or not such a language is usable is something I can discover when it's implemented! :-) 2020-04-09T23:36:52Z lockywolf_ quit (Ping timeout: 265 seconds) 2020-04-09T23:37:24Z TCZ joined #scheme 2020-04-09T23:38:27Z hugh_marera quit (Read error: Connection reset by peer) 2020-04-09T23:55:54Z TCZ quit (Quit: Leaving) 2020-04-09T23:58:33Z jcowan: aeth: I've added it to https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/LibraryDeclarationsCowan.md 2020-04-09T23:58:39Z jcowan: It says: 2020-04-09T23:58:53Z jcowan: (functional) 2020-04-09T23:58:53Z jcowan: Indicates that the procedures exported by this library and the transitive closure of the procedures they call are pure and functional. 2020-04-10T00:00:10Z aeth: jcowan: Should there perhaps be a note that higher order functions are not necessarily pure/functional or is that implied? 2020-04-10T00:00:38Z jcowan: The functions themselves are p&f, it's the functions passed to them that are not. 2020-04-10T00:00:42Z aeth: OK 2020-04-10T00:00:52Z jcowan: might not be, anyway 2020-04-10T00:02:21Z aeth: I think that's one of the main reasons why it's so important for it to be at the *library* level, since otherwise no information can be known about the HOF. 2020-04-10T00:04:58Z aeth: jcowan: what edition is LibraryDeclarations in? 2020-04-10T00:20:38Z turtleman joined #scheme 2020-04-10T00:20:46Z aeth: jcowan: does Scheme have individual procedure declarations like CL does? 2020-04-10T00:20:53Z aeth: Or is the function declaration the only way to do it? 2020-04-10T00:32:48Z mdhughes: Other way around, there's only procedures, no functions! 2020-04-10T00:33:02Z mdhughes: (but they actually are functions, most of the time) 2020-04-10T00:33:09Z aeth: s/the function declaration/the functional declaration/ 2020-04-10T00:33:20Z cantstanya is now known as Oxford 2020-04-10T00:33:31Z aeth: or, rather, the functional library declaration 2020-04-10T00:34:04Z Oxford is now known as frank 2020-04-10T00:34:10Z frank is now known as cartwright 2020-04-10T00:34:26Z cartwright is now known as cantstanya 2020-04-10T00:34:40Z mdhughes: You mean (define foo ...) vs (define (foo) ...)? 2020-04-10T00:35:17Z longshi quit (Quit: WeeChat 2.7.1) 2020-04-10T00:35:59Z aeth: mdhughes: procedures are functions when used in a functional library, such as https://gitlab.com/mbabich/airship-scheme/-/blob/master/srfi/172/functional.sld 2020-04-10T00:35:59Z terpri quit (Remote host closed the connection) 2020-04-10T00:36:35Z terpri joined #scheme 2020-04-10T00:37:17Z mdhughes: But I mean that Scheme only really has lambda, and how it's bound to something with define or letrec or passed in is kind of irrelevant. 2020-04-10T00:37:30Z aeth: jcowan is proposing (functional) as just an optimization in define-library (which is absolutely the way to do it portably, since there's no guarantee an implementation is going to enforce it) 2020-04-10T00:37:39Z aeth: More specifically, I am doing this: https://gitlab.com/mbabich/airship-scheme/-/issues/18 2020-04-10T00:37:56Z ngz quit (Ping timeout: 246 seconds) 2020-04-10T00:38:17Z aeth: mdhughes: It absolutely has to be done at the library level because of the liberal use of lambdas in Scheme. You're right. I was just checking to see if there was another way, but there probably isn't. 2020-04-10T00:39:10Z aeth: Not without a ton of inference. 2020-04-10T00:40:16Z aeth: mdhughes: Cowan's version: https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/LibraryDeclarationsCowan.md 2020-04-10T00:40:24Z aeth: "Indicates that the procedures exported by this library and the transitive closure of the procedures they call are pure and functional." 2020-04-10T00:40:52Z mdhughes: There's no introspection in most Schemes, they're fully compiled by runtime, so you'd have to declare it somewhere above. And I dunno how you'd control someone passing in (lambda () (set! globalstate 666)) 2020-04-10T00:41:35Z aeth: mdhughes: Iirc, mutating global state is undefined in Scheme. Racket doesn't permit it. 2020-04-10T00:42:18Z mdhughes: Huh? Racket has a perfectly good set! (it's not actually "global", it's per module) 2020-04-10T00:42:37Z aeth: oh, sorry, mutating it from outside of the library 2020-04-10T00:42:44Z aeth: whether that counts as outside is an interesting question 2020-04-10T00:43:31Z mdhughes: But if I return my mutator from what seems to be a PFP procedure, it'll work. 2020-04-10T00:45:56Z aeth: mdhughes: How can you return the mutator from a PFP procedure if the only way to declare a procedure functional is at the library level and the libraries marked as functional do not have set! or any similar procedures? 2020-04-10T00:46:40Z aeth: This is a very minor extension of the functional sandbox (srfi 172 functional), so breaking the sandbox might be of interest to every Schemer. https://srfi.schemers.org/srfi-172/srfi-172.html 2020-04-10T00:46:57Z aeth: (Of course "Use of these libraries does not provide any sort of safety guarantee.") 2020-04-10T00:47:21Z mdhughes: You'd have to find some way to pass in set! or equivalent to the PFP, which it then bounces out with a reference to its global state. 2020-04-10T00:48:28Z jcowan: set! is syntax; it can't be passed 2020-04-10T00:48:29Z mdhughes: And you have to let the user (code) send in some lambdas, otherwise you can't use HOF at all. 2020-04-10T00:50:26Z aeth: HOF are only known to be functional if either used by other functional libraries or by passing in (known at compile time) procedures from functional libraries. So HOF procedures aren't actually functions in other cases. This isn't problematic, though, as long as the pure environment isn't mutated. 2020-04-10T00:54:10Z TCZ joined #scheme 2020-04-10T00:57:29Z lockywolf joined #scheme 2020-04-10T01:00:58Z stultulo joined #scheme 2020-04-10T01:02:21Z f8l quit (Ping timeout: 250 seconds) 2020-04-10T01:02:21Z stultulo is now known as f8l 2020-04-10T01:04:04Z lockywolf_ joined #scheme 2020-04-10T01:04:41Z ahungry joined #scheme 2020-04-10T01:05:29Z lockywolf_ quit (Max SendQ exceeded) 2020-04-10T01:06:00Z lockywolf_ joined #scheme 2020-04-10T01:06:49Z lockywolf quit (Ping timeout: 264 seconds) 2020-04-10T01:27:06Z brendyyn joined #scheme 2020-04-10T01:31:23Z turtleman quit (Ping timeout: 250 seconds) 2020-04-10T01:36:49Z lritter quit (Ping timeout: 264 seconds) 2020-04-10T01:37:11Z lritter joined #scheme 2020-04-10T01:43:28Z TCZ quit (Quit: Leaving) 2020-04-10T02:11:39Z luni quit (Quit: Connection closed) 2020-04-10T02:26:46Z klovett quit (Remote host closed the connection) 2020-04-10T02:30:34Z xkapastel joined #scheme 2020-04-10T02:31:10Z terpri quit (Quit: Leaving) 2020-04-10T03:04:33Z lockywolf__ joined #scheme 2020-04-10T03:07:36Z lockywolf_ quit (Ping timeout: 265 seconds) 2020-04-10T03:28:23Z malaclyps joined #scheme 2020-04-10T03:45:23Z Riastradh quit (Remote host closed the connection) 2020-04-10T03:54:39Z aeth: jcowan: I'm curious, did you come up with SRFI 172 after conversations on IRC about how one of the reasons for the success of Lua as an embedded scripting language is because it's one of the few languages that's easily and fully sandboxable? 2020-04-10T03:54:56Z aeth: (And the other major one that people know is JavaScript, which is so incredibly heavyweight compared to Lua) 2020-04-10T03:55:02Z aeth: jcowan: Or is it a coincidence? 2020-04-10T03:57:01Z pilne quit (Quit: Never underestimate the power of stupid people in large groups.) 2020-04-10T03:58:12Z aeth: jcowan: Or was it motivated by IRC bots that run Scheme code? 2020-04-10T04:00:29Z aeth: Or something completely different? 2020-04-10T04:33:09Z skapata quit (Ping timeout: 265 seconds) 2020-04-10T04:39:54Z aeth: does anyone know where the gigantic table that shows all of the SRFIs and who implements them is located? 2020-04-10T04:43:12Z skapata joined #scheme 2020-04-10T04:48:27Z lavaflow quit (Ping timeout: 260 seconds) 2020-04-10T04:57:52Z drakonis quit (Quit: WeeChat 2.8) 2020-04-10T05:04:19Z retropikzel joined #scheme 2020-04-10T05:14:30Z gravicappa joined #scheme 2020-04-10T05:18:44Z revtintin joined #scheme 2020-04-10T05:20:07Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-10T05:30:47Z aeth: unfortunately, that table was a Google spreadsheet that's no longer available 2020-04-10T05:31:04Z aeth: it's in https://small.r7rs.org/ as "Scheme Systems Supporting SRFIs" 2020-04-10T05:39:16Z revtintin quit (Ping timeout: 256 seconds) 2020-04-10T05:41:25Z lritter quit (Ping timeout: 250 seconds) 2020-04-10T05:43:05Z terpri joined #scheme 2020-04-10T05:44:10Z revtintin joined #scheme 2020-04-10T05:45:47Z xelxebar quit (Remote host closed the connection) 2020-04-10T05:47:20Z xelxebar joined #scheme 2020-04-10T05:51:06Z revtintin quit (Ping timeout: 256 seconds) 2020-04-10T06:02:16Z revtintin joined #scheme 2020-04-10T06:02:40Z aeth: Well, that took a while and I probably made some mistakes, but I have all of the SRFIs listed now, including their R7RS-small (really hard to find) and R7RS-large status (really easy to find). https://gitlab.com/mbabich/airship-scheme/-/blob/master/SRFI.md 2020-04-10T06:07:20Z nullus joined #scheme 2020-04-10T06:08:38Z aeth: (I can't wait to rewrite everything in SRFI 110 once I implement it.) 2020-04-10T06:08:40Z ahungry quit (Ping timeout: 256 seconds) 2020-04-10T06:39:37Z jobol joined #scheme 2020-04-10T06:54:17Z revtintin quit (Ping timeout: 265 seconds) 2020-04-10T06:59:47Z skapata quit (Ping timeout: 246 seconds) 2020-04-10T07:15:04Z revtintin joined #scheme 2020-04-10T07:20:08Z revtintin quit (Ping timeout: 256 seconds) 2020-04-10T07:27:20Z civodul joined #scheme 2020-04-10T07:29:52Z revtintin joined #scheme 2020-04-10T07:37:04Z revtintin quit (Ping timeout: 256 seconds) 2020-04-10T07:50:53Z revtintin joined #scheme 2020-04-10T07:58:31Z lavaflow joined #scheme 2020-04-10T08:00:15Z joast quit (Ping timeout: 260 seconds) 2020-04-10T08:03:22Z lavaflow quit (Ping timeout: 256 seconds) 2020-04-10T08:41:18Z kritixilithos joined #scheme 2020-04-10T08:53:37Z revtintin quit (Ping timeout: 264 seconds) 2020-04-10T09:01:34Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-10T09:02:41Z lockywolf joined #scheme 2020-04-10T09:07:13Z revtintin joined #scheme 2020-04-10T09:07:43Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-10T09:14:41Z ggole joined #scheme 2020-04-10T09:21:03Z kritixilithos joined #scheme 2020-04-10T09:22:08Z madage quit (Remote host closed the connection) 2020-04-10T09:31:20Z madage joined #scheme 2020-04-10T09:44:34Z revtintin quit (Ping timeout: 256 seconds) 2020-04-10T09:45:46Z mouloud[m]: so minimalism is just... a marketing slogan? 2020-04-10T09:50:14Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-10T09:53:20Z wasamasa: what are you talking about? 2020-04-10T09:57:38Z revtintin joined #scheme 2020-04-10T10:01:12Z aeth: Scheme's choice of minimalism is, at best, kind of weird by modern standards given that most comparable languages have hash tables, but few languages have call/cc or a numeric tower. 2020-04-10T10:04:56Z aeth: Implementors will spend their time on things like rationalize while users probably want JSON. 2020-04-10T10:04:59Z aeth: Although to be fair... https://srfi.schemers.org/srfi-180/srfi-180.html 2020-04-10T10:15:55Z SGASAU quit (Remote host closed the connection) 2020-04-10T10:16:11Z SGASAU joined #scheme 2020-04-10T10:17:08Z amerigo joined #scheme 2020-04-10T10:41:38Z TCZ joined #scheme 2020-04-10T10:48:23Z ngz joined #scheme 2020-04-10T10:55:46Z ArthurStrong joined #scheme 2020-04-10T11:19:25Z mouloud[m]: wasamasa: I am quoting jcowan that wrote that scheme is not minimalist in any way. The marketing slogan is my doing. 2020-04-10T11:19:52Z mouloud[m]: aeth: scheme is not only R7RS-small 2020-04-10T11:21:05Z mouloud[m]: does it mean that call/cc and numeric tower are useless? 2020-04-10T11:29:02Z Naptra joined #scheme 2020-04-10T11:30:00Z lavaflow joined #scheme 2020-04-10T11:41:48Z pinoaffe1: mouloud[m]: scheme has a relatively minimalist syntax, the concepts behind scheme could be considered "minimalist" in a sense, and its extensibility allow for certain features that are built into other languages to be implemented in scheme, to extend scheme 2020-04-10T11:42:33Z pinoaffe1: but I don't know any scheme implementation I would consider a "minimalist" language, and I don't think it's necessarily desirable for an implementation to be minimalist 2020-04-10T11:56:39Z lockywolf joined #scheme 2020-04-10T12:05:45Z TCZ quit (Quit: Leaving) 2020-04-10T12:08:03Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-10T12:10:46Z TCZ joined #scheme 2020-04-10T12:12:07Z kritixilithos joined #scheme 2020-04-10T12:23:57Z jcowan: I should have said that the Scheme library has never been minimalist 2020-04-10T12:24:15Z jcowan: the list of primitive syntaxes is really short, though 2020-04-10T12:25:19Z jcowan: You can get the benefits of proper tail calls even without realizing it, but call/cc takes conscious understanding, as does the deliberate use of tail calls to do things that just don't work in other languages 2020-04-10T12:26:19Z jcowan: aeth: I am not sure about the answers to your questions 2020-04-10T12:26:50Z jcowan: Sandboxing seemed like an interesting challenge, so I wrote it down, but I don't really know what put it into my head in the first place 2020-04-10T12:29:20Z averell joined #scheme 2020-04-10T13:02:39Z _apg quit (Ping timeout: 260 seconds) 2020-04-10T13:05:27Z TCZ quit (Quit: Leaving) 2020-04-10T13:12:03Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-10T13:15:57Z pilne joined #scheme 2020-04-10T13:21:03Z jobol quit (Remote host closed the connection) 2020-04-10T13:21:19Z kritixilithos joined #scheme 2020-04-10T13:21:47Z joast joined #scheme 2020-04-10T13:23:19Z jobol joined #scheme 2020-04-10T13:24:21Z skapata joined #scheme 2020-04-10T13:33:45Z kritixilithos quit (Remote host closed the connection) 2020-04-10T13:34:54Z kritixilithos joined #scheme 2020-04-10T13:42:49Z revtintin quit (Ping timeout: 264 seconds) 2020-04-10T13:43:38Z klovett joined #scheme 2020-04-10T13:52:06Z ahungry joined #scheme 2020-04-10T13:53:37Z amerigo: what is the rationale behind r7rs-large? 2020-04-10T13:54:16Z amerigo: wouldnt something like portable standard library be more useful? 2020-04-10T13:57:54Z jcowan: It's meant to be a batteries-included language suitable as a base for modern software development. As currently planned it may not quite get there, but we'll see. 2020-04-10T13:59:51Z jcowan: Not everything that would be good to standardize can be written portably, though: threads, sockets, subprocesses, delimited continuations, .... 2020-04-10T14:00:52Z mouloud[m]: amerigo: r 2020-04-10T14:01:30Z mouloud[m]: amerigo: r7rs large aim to make easier to port a program from one scheme implementation to another. 2020-04-10T14:02:34Z amerigo: so it is in fact a form of a standard for a library 2020-04-10T14:02:54Z mouloud[m]: yes 2020-04-10T14:03:00Z lucasb joined #scheme 2020-04-10T14:03:48Z grobe0ba quit (Ping timeout: 258 seconds) 2020-04-10T14:03:49Z pilne quit (Read error: Connection reset by peer) 2020-04-10T14:04:02Z jcowan: that's why we use a democratic process with open elections to decide what individual libraries become R7RS-large. Sometimes there are competing libs, but often it is a straight include/exclude decision. 2020-04-10T14:04:59Z jcowan: As chair (but subject to an override vote) I have excluded certain things because I think they are ratholes, like FFIs and specific class hierarchies. 2020-04-10T14:05:49Z pilne joined #scheme 2020-04-10T14:07:44Z grobe0ba joined #scheme 2020-04-10T14:08:43Z pilne quit (Read error: Connection reset by peer) 2020-04-10T14:11:50Z pilne joined #scheme 2020-04-10T14:16:13Z daviid quit (Ping timeout: 250 seconds) 2020-04-10T14:20:33Z TCZ joined #scheme 2020-04-10T14:20:59Z brendyyn quit (Ping timeout: 250 seconds) 2020-04-10T14:28:03Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-10T14:30:31Z kritixilithos joined #scheme 2020-04-10T14:31:04Z revtintin joined #scheme 2020-04-10T14:42:20Z TCZ quit (Quit: Leaving) 2020-04-10T14:42:39Z TCZ joined #scheme 2020-04-10T14:44:34Z revtintin quit (Ping timeout: 256 seconds) 2020-04-10T14:53:17Z trafaret1 joined #scheme 2020-04-10T15:01:33Z Yardanico quit (Killed (Sigyn (Spam is off topic on freenode.))) 2020-04-10T15:01:41Z trafaret1 left #scheme 2020-04-10T15:05:05Z mdhughes: aeth: As always, I point at R6RS which was perfect and rejected by Philistines, which has hash tables and a good record system. 2020-04-10T15:06:19Z mdhughes: Maybe R7RS-large should just be R6RS. Then everyone's happy. 2020-04-10T15:07:23Z mdhughes: (now I say it, I honestly don't know if I mean that or if I'm shitposting.) 2020-04-10T15:20:10Z amerigo: didnt mean to troll, it just seems to me that trying to standarise a library instead of a language would not provoke so many controversies 2020-04-10T15:26:02Z f8l quit (Remote host closed the connection) 2020-04-10T15:27:25Z f8l joined #scheme 2020-04-10T15:40:40Z Yardanico joined #scheme 2020-04-10T15:44:22Z mouloud[m]: R7RS standardize the language and the stdlib 2020-04-10T15:45:01Z mouloud[m]: controversies are not only, about the size of the stdlib, they are more involving subjects. 2020-04-10T15:49:05Z mouloud[m]: My take on scheme standard process is not only about making an alternative to JavaScript or Python or Ruby but to be a better language and ecosystem. 2020-04-10T15:51:42Z mouloud[m]: SRFI process in particular allows to gather people interested in the same subject say a date and time library, and build together something. 2020-04-10T15:51:51Z mouloud[m]: Unlike the cpan, pypi and npmjs approach that is popularity contest, and you end up with dozen libs dealing with the same problem. 2020-04-10T15:52:06Z mouloud[m]: And all of them has unsolved problems. 2020-04-10T15:52:12Z SGASAU quit (Remote host closed the connection) 2020-04-10T15:52:26Z SGASAU joined #scheme 2020-04-10T15:52:32Z mouloud[m]: What I think SRFI is trying to do is something along the lines joining forces to have a flaw less libraries. 2020-04-10T15:52:48Z willghatch[m] joined #scheme 2020-04-10T15:52:53Z willghatch[m] left #scheme 2020-04-10T15:54:12Z mouloud[m]: The SRFI process is unique, no other language has it. 2020-04-10T16:02:47Z mouloud[m]: Here is the charter of R7RS WG2 https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/WG2Charter.md 2020-04-10T16:03:33Z mouloud[m]: And no other language can claim there is more than two or three active implementation, except JavaScript. 2020-04-10T16:04:08Z mouloud[m]: Well, JavaScript has 3 implementation (Google, Mozilla and Apple) 2020-04-10T16:08:54Z zaifir: mdhughes: Well, if everyone's happy with a Scheme standard in which having a REPL makes you non-conformant... 2020-04-10T16:09:21Z mdhughes: How do you figure that? 2020-04-10T16:10:27Z zaifir: This is true. http://andykeep.com/SchemeWorkshop2015/papers/sfpw1-2015-clinger.pdf 2020-04-10T16:11:23Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-10T16:13:08Z mdhughes: When I see someone refer to IETF "MUST/SHALL" terms as "mustard", I tune out until they're not drunk. 2020-04-10T16:13:55Z zaifir: "The R6RS also contains absolute requirements that have the effect of forbidding interactive REPLs. ... the editors themselves believed the R6RS mustard forbidding interactive REPLs would be 'more honored in the breach than the observance'." (Clinger) 2020-04-10T16:14:23Z zaifir: mdhughes: Because IETF tend not to use 'must' for everything, unlike the R6 editors. 2020-04-10T16:15:39Z mdhughes: Do you have an R6RS reference to that prohibition? 2020-04-10T16:16:42Z zaifir: Clinger (who was on the R6RS committee) refers to section 5.5. 2020-04-10T16:17:43Z zaifir: "... implementations _must_ detect syntax violations, and _must_ respond to syntax violations by raising a &syntax exception before execution of the top-level program is allowed to begin." 2020-04-10T16:17:48Z zaifir: So no REPL for you. 2020-04-10T16:17:49Z mdhughes: Raising &syntax on syntax error doesn't prohibit REPL. 2020-04-10T16:18:25Z mdhughes: The REPL program is complete and syntax-error-free. Then it reads and evals an expression, which may have syntax errors. 2020-04-10T16:19:30Z mdhughes: "Did IQs drop sharply while I was away?" 2020-04-10T16:19:40Z zaifir: Each evaluated expression is part of the full (possibly infinite) top-level program, which, it seems, is not to be executed until all of it is checked. 2020-04-10T16:20:08Z mdhughes: No, the contents of a REPL read at runtime are not part of the toplevel, obviously, any more than any other data file read. 2020-04-10T16:21:11Z zaifir: Well, the R6 editors acknowledged that this had the effect of prohibiting REPLs, according to Clinger, who ought to know. 2020-04-10T16:21:23Z valjda joined #scheme 2020-04-10T16:21:39Z zaifir: The idea was that implementers would just not worry about it. 2020-04-10T16:21:46Z mdhughes: People A) are sometimes drunk, B) are sometimes inconsistent with the actions of a group they were formerly with. 2020-04-10T16:22:07Z mdhughes: Take your more charitable interpretation. 2020-04-10T16:22:50Z mdhughes: "code is data" doesn't mean all data is also code. 2020-04-10T16:22:52Z zaifir: mdhughes: It's really unpleasant to discuss things with you, since you seem to switch to browbeating and contempt as soon as anyone disagrees. 2020-04-10T16:23:22Z mdhughes: Normally no, but that's the least rational conflation of ideas I've heard in quite some time. 2020-04-10T16:29:10Z kritixilithos joined #scheme 2020-04-10T16:30:04Z jobol quit (Quit: Leaving) 2020-04-10T16:34:25Z jcowan: IIRC, Larceny (which is Clinger's) in R6RS mode will only run programs; there is no R6RS REPL, although all the R6RS and R7RS libraries are fully interoperable. 2020-04-10T16:34:55Z mdhughes: Does he have eval so you can write a REPL? 2020-04-10T16:34:56Z SGASAU quit (Remote host closed the connection) 2020-04-10T16:35:03Z jcowan: Sure. 2020-04-10T16:35:11Z mdhughes: And if so, what happens when you give it a syntax error? 2020-04-10T16:35:24Z SGASAU joined #scheme 2020-04-10T16:35:26Z jcowan: I don't have Larceny installed atm 2020-04-10T16:35:55Z mdhughes: Fair enough, but that's an experiment to run to see if it was a serious assertion. 2020-04-10T16:36:23Z jcowan: Larceny takes a relaxed attitude to the R6RS requirements anyway: strictly conforming code behaves correctly, but not always nonconforming code. 2020-04-10T16:37:55Z SGASAU quit (Remote host closed the connection) 2020-04-10T16:39:25Z SGASAU joined #scheme 2020-04-10T16:52:21Z vyzo quit (Ping timeout: 246 seconds) 2020-04-10T16:52:41Z cky quit (Ping timeout: 246 seconds) 2020-04-10T16:52:46Z vyzo joined #scheme 2020-04-10T16:52:57Z cky joined #scheme 2020-04-10T16:59:09Z lritter joined #scheme 2020-04-10T17:09:14Z rudybot quit (Ping timeout: 240 seconds) 2020-04-10T17:09:50Z rudybot joined #scheme 2020-04-10T17:16:48Z luni joined #scheme 2020-04-10T17:21:20Z Tirifto joined #scheme 2020-04-10T17:30:58Z TCZ quit (Quit: Leaving) 2020-04-10T17:59:35Z mouloud[m] quit (*.net *.split) 2020-04-10T17:59:35Z X-Scale quit (*.net *.split) 2020-04-10T17:59:36Z keep-learning[m] quit (*.net *.split) 2020-04-10T17:59:36Z amnesic[m] quit (*.net *.split) 2020-04-10T17:59:36Z siraben quit (*.net *.split) 2020-04-10T17:59:36Z eagleflo quit (*.net *.split) 2020-04-10T17:59:36Z DGASAU` quit (*.net *.split) 2020-04-10T17:59:37Z abbe quit (*.net *.split) 2020-04-10T18:03:50Z mouloud[m] joined #scheme 2020-04-10T18:03:50Z amnesic[m] joined #scheme 2020-04-10T18:03:50Z keep-learning[m] joined #scheme 2020-04-10T18:03:50Z siraben joined #scheme 2020-04-10T18:03:50Z eagleflo joined #scheme 2020-04-10T18:03:50Z DGASAU` joined #scheme 2020-04-10T18:03:50Z abbe joined #scheme 2020-04-10T18:04:20Z X-Scale joined #scheme 2020-04-10T18:12:37Z luni quit (Quit: Connection closed) 2020-04-10T18:15:47Z ngz quit (Ping timeout: 265 seconds) 2020-04-10T18:18:01Z retropikzel quit (Quit: Leaving) 2020-04-10T18:20:17Z retropikzel joined #scheme 2020-04-10T18:25:39Z duncanm: hey zaifir 2020-04-10T18:25:56Z duncanm: zaifir: how you used the synthcode match.scm macro much? 2020-04-10T18:30:01Z zaifir: duncanm: Not the chibi version much, as yet, but I've used matchable https://wiki.call-cc.org/eggref/5/matchable in CHICKEN, which is also by foof and thus probably the same code. 2020-04-10T18:30:29Z duncanm: ahh, i was trying to start using it 2020-04-10T18:30:47Z duncanm: I tried one of the samples from a doc i found, and that worked, but when I wrote my own pattern, I couldn't get it to match 2020-04-10T18:31:24Z SGASAU quit (Remote host closed the connection) 2020-04-10T18:32:18Z SGASAU joined #scheme 2020-04-10T18:34:33Z sz0 quit (Ping timeout: 246 seconds) 2020-04-10T18:35:15Z kilimanjaro quit (Ping timeout: 246 seconds) 2020-04-10T18:35:57Z marmulak[m] quit (Ping timeout: 246 seconds) 2020-04-10T18:36:30Z sz0 joined #scheme 2020-04-10T18:36:37Z kilimanjaro joined #scheme 2020-04-10T19:08:26Z ahungry quit (Remote host closed the connection) 2020-04-10T19:10:53Z kjak quit (Ping timeout: 250 seconds) 2020-04-10T19:12:56Z ahungry joined #scheme 2020-04-10T19:17:48Z SGASAU quit (Remote host closed the connection) 2020-04-10T19:18:29Z SGASAU joined #scheme 2020-04-10T19:40:31Z kjak joined #scheme 2020-04-10T19:48:40Z drakonis1 joined #scheme 2020-04-10T19:49:37Z ggole quit (Quit: Leaving) 2020-04-10T19:50:29Z ahungry quit (Remote host closed the connection) 2020-04-10T19:51:24Z stepnem quit (Read error: Connection reset by peer) 2020-04-10T19:52:34Z hugh_marera joined #scheme 2020-04-10T19:54:10Z aeth: pinoaffe1: CL has more minimalist syntax than Scheme, e.g. no "\n" and its complex type is #C(1 1) instead of 1+1i... Of course CL has reader macros so it doesn't necessarily have to be minimalist there (and can in fact be anything). Most Schemes also e.g. have [] as equivalent to () and a bunch of other things that most Lisps don't have. 2020-04-10T19:54:40Z aeth: Syntax is basically the only thing where Scheme isn't minimalist compared to most other Lisps. 2020-04-10T19:55:11Z stepnem joined #scheme 2020-04-10T19:56:16Z aeth: mouloud[m]: Scheme is also R7RS-large :-) 2020-04-10T19:57:51Z aeth: mdhughes: R7RS-large seems to be primarily influenced by R6RS, maybe followed by Common Lisp. 2020-04-10T19:57:52Z ahungry joined #scheme 2020-04-10T19:59:17Z zaifir: It's possible to implement R6 as almost completely a subset of R7, which is a good reason to go R7 all the way. 2020-04-10T19:59:33Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-10T20:00:15Z aeth: amerigo: Most of R7RS-large are SRFIs and most of the SRFIs are non-syntactic. (Most of the popular syntactic SRFIs apparently wound up in R7RS-small) 2020-04-10T20:00:34Z bars0 joined #scheme 2020-04-10T20:01:11Z aeth: amerigo: I think this is R7RS-large as it currently stands, but I might have missed a few things: https://gitlab.com/mbabich/airship-scheme/-/blob/master/SRFI.md#r7rs-large 2020-04-10T20:01:38Z aeth: Most of those are new SRFIs that supersede popular old ones to be R7RS compatible. 2020-04-10T20:03:01Z jcowan: aeth: On the other hand, there are a number of # things that Scheme doesn't have 2020-04-10T20:03:28Z aeth: jcowan: yes, but #(...) is syntactically a lot simpler than 1+1i 2020-04-10T20:04:33Z aeth: It basically just implicitly quotes the (...) part and applies the function denoted by the letter (if none, then vector) to it, in a special way that the literalness of the quote is preserved. 2020-04-10T20:04:52Z aeth: Well, I mean, conceptually. Under the hood it has this weird dispatch macro function thing going on. 2020-04-10T20:05:05Z friscosam: in "top-level" vs. repl there is a distinction that a "top-level" is a complete program so it should be well defined. At the repl you can have all sorts of future references etc. 2020-04-10T20:05:26Z friscosam: Related to "the top level is hopeless" 2020-04-10T20:08:01Z aeth: mouloud[m]: Common Lisp has more than 3 active implementations. C and C++ (usually a shared compiler) have three preferred compilers but that's because there are three major OSes each recommending their own... there are definitely more than three active ones. But I get what you're saying. You search for Scheme implementations and you can find something completely new each time, even if they're just partial implementations. 2020-04-10T20:08:33Z aeth: I mean, yeah, the BDFL scripting languages tend to have one popular implementation and there are a lot of those. 2020-04-10T20:09:05Z aeth: For Java, the JVM has many implementations, but the Oracle lawsuit might be discouraging them. 2020-04-10T20:11:16Z aeth: And the SRFI part is definitely true. I don't think any other language has something active like SRFIs. CL tried to copy them with CDRs, but no one cared. Informal portability libraries over extensions are how things are done there. 2020-04-10T20:13:06Z kritixilithos quit (Quit: quit) 2020-04-10T20:15:48Z kritixilithos joined #scheme 2020-04-10T20:15:50Z aeth: Going back further in time, you definitely see older, uncool languages with many implementations: COBOL, Fortran, Pascal... Probably some still-cool ones like Smalltalk. 2020-04-10T20:16:44Z aeth: Forth is probably the only one comparable to Scheme, though, in terms of it being a language that's just begging you to write your own custom implementation of it. 2020-04-10T20:19:03Z friscosam: Java JSRs and Python PEPs are similar to SRFIs 2020-04-10T20:21:19Z kritixilithos quit (Quit: quit) 2020-04-10T20:25:35Z acarrico1 joined #scheme 2020-04-10T20:28:34Z klovett quit (Remote host closed the connection) 2020-04-10T20:28:56Z acarrico quit (Ping timeout: 256 seconds) 2020-04-10T20:34:37Z aeth: friscosam: ah, right Python PEP, but that's different in a way because it's for one implementation 2020-04-10T20:35:06Z aeth: Python PEPs are more like the feature request subset of https://github.com/racket/racket/issues 2020-04-10T20:35:07Z acarrico joined #scheme 2020-04-10T20:35:31Z aeth: ah, these: https://github.com/racket/racket/issues?q=is%3Aissue+is%3Aopen+label%3Afeature-request 2020-04-10T20:36:44Z acarrico1 quit (Ping timeout: 265 seconds) 2020-04-10T20:38:52Z aeth: OK, maybe not quite that trivial, but they still don't have cross-implementation concerns 2020-04-10T20:40:25Z mouloud[m]: It seems to me PEP are only about CPython and the stdlib of CPython is narrowing. 2020-04-10T20:40:40Z aeth: right, has PyPy ever blocked a PEP? 2020-04-10T20:41:10Z mouloud[m]: I am not into that PEP stuff, so I can not tell. 2020-04-10T20:41:18Z valjda quit (Read error: Connection reset by peer) 2020-04-10T20:42:33Z aeth: Of course, PEPs might have influenced SRFIs. Or Python in general. Even though Python is very much anti-FP and Scheme is very much pro-FP, Python might be the 3rd largest influence after R6RS and CL. I'm not entirely sure. 2020-04-10T20:42:50Z klovett joined #scheme 2020-04-10T20:43:45Z mouloud[m]: From what I know Python culture is little bit better than PHP, but not much better. 2020-04-10T20:44:28Z mouloud[m]: Also I do not CL. 2020-04-10T20:45:27Z aeth: Well, the Python/Ruby era of web programming (before node) was basically premised on a "We're better than PHP and Perl" pitch 2020-04-10T20:45:57Z mouloud[m]: prolly, I started coding in Python because I read that Google was written in Python. 2020-04-10T20:46:50Z aeth: That's a lie. They lure you in with Python and then make you write Java. 2020-04-10T20:46:50Z friscosam: When Jython was more of a thing I seem to recall a bit of coordination/concern about features working in both implementations. 2020-04-10T20:50:50Z mouloud[m]: I learned a lot of things in Python, I consider I wasted 10 out of 15 years. I guess, I had to move to something else... 2020-04-10T20:51:25Z aeth: I only wasted a few years in Python because as soon as I found Scheme, I tried to translate things into Python and that didn't work out very well 2020-04-10T20:52:29Z friscosam: I keep trying to port designs I've done in Racket to Python and keep making reactor/thread systems 2020-04-10T20:52:45Z aeth: It's a good introductory language because it's opinionated, but it doesn't "scale" well to different paradigms because it's opinionated. And it doesn't literally scale well, either, because of the GIL. 2020-04-10T20:54:59Z aeth: Also, look at Chez Scheme's numbers and then look at CPython's numbers and then it's pretty clear that it's just a lie when Python evangalists tell you that you need to lose as much performance over C for productivity as you lose. 2020-04-10T20:55:01Z ArthurStrong left #scheme 2020-04-10T20:56:21Z aeth: Because arguably Chez Scheme is both higher level and faster than CPython 2020-04-10T21:01:06Z evdubs quit (Remote host closed the connection) 2020-04-10T21:01:24Z aeth: But, anyway, a bit more on topic, that's why having more than one major implementation is so important. So you can't have someone veto FP or neglect performance just because. 2020-04-10T21:01:28Z evdubs joined #scheme 2020-04-10T21:06:19Z aeth: (That is, pretty much all of Python's drawbacks are related to it being a one-major-implementation language) 2020-04-10T21:07:28Z jcowan: I would say there are three groups of languages: multiple implementations with a standard, multiple implementations with one serving as the standard, and single implementations. 2020-04-10T21:08:49Z jcowan: most of Racket's langs belong to type 3 2020-04-10T21:09:14Z jcowan: but it also supports r5rs, r6rs, and Algol 60 2020-04-10T21:09:19Z jcowan: which have standards 2020-04-10T21:10:17Z aeth: I'm disappointed that it doesn't (apparently) have r0rs, r1rs, r2rs, r3rs, or (iirc) r4rs. Not particularly practical, but it's sometimes interesting to see where things came from. 2020-04-10T21:10:38Z aeth: Obviously Maclisp, Interlisp, LISP 1.5, etc., would be asking for too much. 2020-04-10T21:13:58Z ngz joined #scheme 2020-04-10T21:14:57Z aeth: jcowan: are there any runnable, non-emulated early versions of Scheme? 2020-04-10T21:15:29Z jcowan: Having R0/R1 would *mean* having Maclisp 2020-04-10T21:15:40Z aeth: ah, not just R0 then 2020-04-10T21:17:00Z aeth: Are the sources still available? It won't be in idiomatic CL, but it should still be portable to CL because CL was designed as Maclisp's successor. People have ported smaller programs. 2020-04-10T21:17:06Z klovett quit 2020-04-10T21:18:19Z aeth: I think someone here yesterday was mentioning how the sources for some were lost, unfortunately. 2020-04-10T21:19:46Z klovett joined #scheme 2020-04-10T21:20:16Z Naptra quit (Remote host closed the connection) 2020-04-10T21:22:36Z aeth: This might be everything available: http://www.softwarepreservation.org/projects/LISP/ 2020-04-10T21:23:04Z hugh_marera quit (Quit: hugh_marera) 2020-04-10T21:23:14Z aeth: In particular these: http://www.softwarepreservation.org/projects/LISP/scheme_family/#Scheme_ 2020-04-10T21:23:17Z bars0 quit (Quit: leaving) 2020-04-10T21:26:12Z ahungry quit (Remote host closed the connection) 2020-04-10T21:27:08Z jcowan: They are, as part of Rabbit and AIM-349 2020-04-10T21:31:52Z aeth: It's weird how that Scheme family page is old Scheme material, but the Common Lisp family page has current CL material as well. 2020-04-10T21:31:59Z aeth: It's a wiki so maybe someone should update the page I linked to. 2020-04-10T21:32:57Z aeth: In particular, it has no r7rs 2020-04-10T21:34:37Z jcowan: I think the only things on the CL family page from the 21C are specifically historical retrospectives, except for Weinreb's survey 2020-04-10T21:34:38Z aeth: Another site with tons of old Lisp/Scheme material (all these archive sites never discovered HTTPS?): http://bitsavers.trailing-edge.com/ 2020-04-10T21:35:49Z jcowan: Nobody cares about potential MITM attacks on this stuff 2020-04-10T21:35:57Z jcowan: and the sites are read-only, so there is nothing to protect 2020-04-10T21:36:00Z aeth: this in particular is a great resource: http://bitsavers.trailing-edge.com/pdf/mit/cadr/ 2020-04-10T21:36:07Z jcowan nods 2020-04-10T21:36:23Z jcowan: Between softwarepreservation and bitsavers, almost all that survives of the old days can be found 2020-04-10T21:36:44Z aeth: archive.org has a lot of software these days, too 2020-04-10T21:36:51Z jcowan: I mean, yes, a nasty ISP could inject ads into old manuals, but the traffic is so low, why should they? 2020-04-10T21:36:58Z jcowan: So http is fine. 2020-04-10T21:37:11Z aeth: Idk if they have the academic non-microcomputer software on archive.org, though. 2020-04-10T21:39:05Z valjda joined #scheme 2020-04-10T21:40:16Z aeth: jcowan: I think there's still a lot from the old days in physical archives that never went online. Hopefully those are discovered before they rot (not bitrot, rot), though. Especially the software archives. 2020-04-10T21:41:16Z jcowan: Paper gets lost or corrodes, tapes become unreadable without special hardware and then just unreadable. Digital archivists talk about "refreshing". A lot of this stuff is in private hands. 2020-04-10T21:43:27Z pilne_ joined #scheme 2020-04-10T21:43:36Z pilne quit (Read error: Connection reset by peer) 2020-04-10T21:55:37Z mouloud[m]: Hello, here my private museum about LISP Scheme ๐Ÿ™‰ 2020-04-10T21:55:47Z klovett quit 2020-04-10T21:57:17Z klovett joined #scheme 2020-04-10T21:57:59Z aeth: mouloud[m]: I mean, yeah, jcowan is right about private collectors, e.g. see https://old.reddit.com/r/lisp/comments/fsnqfq/stylewarnings_symbolics_ti_lisp_machines_for_sale/ 2020-04-10T21:58:14Z gravicappa quit (Ping timeout: 240 seconds) 2020-04-10T22:36:49Z pilne_ quit (Quit: Give a man a fish and he will eat for a day. Teach him how to fish, and he will sit in a boat and drink beer all day) 2020-04-10T22:37:06Z pilne joined #scheme 2020-04-10T22:45:42Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-10T22:46:57Z SGASAU quit (Remote host closed the connection) 2020-04-10T22:47:24Z SGASAU joined #scheme 2020-04-10T22:47:50Z daviid joined #scheme 2020-04-10T22:50:00Z mtld joined #scheme 2020-04-10T22:53:56Z f8l quit (Ping timeout: 256 seconds) 2020-04-10T22:55:30Z drakonis1 is now known as drakonis 2020-04-10T22:56:16Z f8l joined #scheme 2020-04-10T23:12:24Z SGASAU quit (Remote host closed the connection) 2020-04-10T23:12:37Z SGASAU joined #scheme 2020-04-10T23:16:38Z SGASAU quit (Remote host closed the connection) 2020-04-10T23:16:54Z SGASAU joined #scheme 2020-04-10T23:18:32Z mtld quit (Ping timeout: 256 seconds) 2020-04-10T23:20:24Z friscosam: Core Racket is becoming more the the type 2 language. There is Racket C, Racket CS, and PyRacket. 2020-04-10T23:21:03Z friscosam: although only two of those are day to day usable :P 2020-04-10T23:22:16Z friscosam: sorry pycket not PyRacket. 2020-04-10T23:24:23Z Tirifto quit (Quit: Leaving.) 2020-04-10T23:25:54Z SGASAU quit (Remote host closed the connection) 2020-04-10T23:26:16Z SGASAU joined #scheme 2020-04-10T23:30:11Z torbo joined #scheme 2020-04-10T23:41:13Z pinoaffe1: aeth: I wasn't comparing it to just other lisps, but to other programming languages in general, and in that context scheme has a relatively simple syntax imo 2020-04-10T23:56:54Z torbo quit (Remote host closed the connection) 2020-04-11T00:06:24Z valjda_ joined #scheme 2020-04-11T00:07:16Z valjda quit (Ping timeout: 256 seconds) 2020-04-11T00:09:06Z ngz quit (Ping timeout: 265 seconds) 2020-04-11T00:14:17Z heredoc quit (Ping timeout: 260 seconds) 2020-04-11T00:30:46Z brendyyn joined #scheme 2020-04-11T00:34:16Z nly quit (Remote host closed the connection) 2020-04-11T00:38:27Z nly joined #scheme 2020-04-11T01:04:18Z ryansg8 joined #scheme 2020-04-11T01:12:24Z ryansg8 quit (Quit: Connection closed) 2020-04-11T01:20:07Z ahungry joined #scheme 2020-04-11T01:33:48Z hive-mind quit (Ping timeout: 256 seconds) 2020-04-11T01:34:34Z lritter quit (Ping timeout: 258 seconds) 2020-04-11T01:35:07Z lritter joined #scheme 2020-04-11T01:35:37Z hive-mind joined #scheme 2020-04-11T01:46:33Z amerigo quit (Quit: Connection closed for inactivity) 2020-04-11T01:50:54Z hive-mind quit (Ping timeout: 240 seconds) 2020-04-11T01:53:23Z hive-mind joined #scheme 2020-04-11T02:02:27Z skapata quit (Quit: ฤœis!) 2020-04-11T02:05:48Z lritter quit (Quit: Leaving) 2020-04-11T02:33:23Z valjda_ quit (Quit: WeeChat 2.8) 2020-04-11T02:39:23Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-11T02:40:43Z xelxebar joined #scheme 2020-04-11T04:15:55Z pilne quit (Quit: Given the choice between you, I'll take the sea-sick crocodile.) 2020-04-11T05:04:10Z drakonis quit (Quit: WeeChat 2.8) 2020-04-11T05:22:39Z gravicappa joined #scheme 2020-04-11T06:08:02Z lockywolf_ joined #scheme 2020-04-11T06:10:50Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-11T06:16:38Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-11T06:17:05Z xelxebar joined #scheme 2020-04-11T06:21:47Z ahungry quit (Remote host closed the connection) 2020-04-11T07:02:04Z aeth: oh, huh, this is a good observation: https://news.ycombinator.com/item?id=22838567 2020-04-11T07:02:16Z aeth: on this functional programming language: https://ptls.dev/ 2020-04-11T07:02:41Z aeth: it has an output variable 2020-04-11T07:04:18Z aeth: so it looks like it would be like if all printing was done in a (define (output) ...) or (define output ...) 2020-04-11T07:05:18Z madage quit (Ping timeout: 240 seconds) 2020-04-11T07:05:18Z cantstanya quit (Ping timeout: 240 seconds) 2020-04-11T07:11:30Z lritter joined #scheme 2020-04-11T07:16:44Z aeth: As I suspected, it uses lazy lists to implement its output variable, which is how I'd implement the same thing in Scheme: https://ptls.dev/docs.html#output%20commands 2020-04-11T07:17:25Z madage joined #scheme 2020-04-11T07:18:06Z Naptra joined #scheme 2020-04-11T07:23:08Z even4void joined #scheme 2020-04-11T07:26:37Z cantstanya joined #scheme 2020-04-11T07:30:11Z nly quit (Read error: Connection reset by peer) 2020-04-11T07:47:37Z even4void quit (Quit: My MacBook has gone to sleep. ZZZzzzโ€ฆ) 2020-04-11T07:49:54Z even4void joined #scheme 2020-04-11T07:52:07Z nly joined #scheme 2020-04-11T08:01:48Z amerigo joined #scheme 2020-04-11T08:21:05Z lockywolf__ joined #scheme 2020-04-11T08:24:02Z lockywolf_ quit (Ping timeout: 265 seconds) 2020-04-11T08:33:45Z even4void quit (Quit: My MacBook has gone to sleep. ZZZzzzโ€ฆ) 2020-04-11T08:44:08Z klovett_ joined #scheme 2020-04-11T08:46:19Z kritixilithos joined #scheme 2020-04-11T08:47:03Z klovett quit (Ping timeout: 265 seconds) 2020-04-11T09:07:52Z lockywolf__: https://gitlab.com/Lockywolf/schemetran 2020-04-11T09:08:10Z wasamasa: oh noes 2020-04-11T09:08:19Z lockywolf__: I can't say I'm proud of this code, but meh, it implements sicp 5.51 2020-04-11T09:08:34Z lockywolf__: ๅ“ˆๅ“ˆๅ“ˆๅ“ˆๅ“ˆๅ“ˆ 2020-04-11T09:08:50Z wasamasa: no plenken please 2020-04-11T09:09:35Z wasamasa: I wrote a tiny bit of modern fortran to test how hard it would be to implement MAL with it 2020-04-11T09:09:43Z wasamasa: couldn't figure out how GC would be done though 2020-04-11T09:09:45Z wasamasa: so thanks 2020-04-11T09:09:48Z lockywolf__: MAL? 2020-04-11T09:10:04Z wasamasa: https://github.com/kanaka/mal/ 2020-04-11T09:10:45Z wasamasa: it's a far easier exercise than implementing scheme :D 2020-04-11T09:14:48Z lockywolf__: well, I can't say it was too hard 2020-04-11T09:15:22Z lockywolf__: What does "plenken" mean? 2020-04-11T09:15:36Z wasamasa: https://en.wikipedia.org/wiki/Plenken 2020-04-11T09:17:04Z xelxebar quit (Remote host closed the connection) 2020-04-11T09:17:19Z xelxebar joined #scheme 2020-04-11T09:18:45Z wasamasa: so, from what I see this is a mark and sweep GC? 2020-04-11T09:20:17Z lockywolf_ joined #scheme 2020-04-11T09:21:04Z wasamasa: I'm kind of surprised you found bugs in gfortran, but then I also ran into debugging segfaults with this test: https://github.com/wasamasa/mal-candidates/tree/master/fortran 2020-04-11T09:22:09Z mdhughes: lockywolf, the saying is "some programmers code FORTRAN in any language", not "some programmers code any language in FORTRAN". 2020-04-11T09:23:00Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-11T09:26:08Z luni joined #scheme 2020-04-11T09:28:16Z lockywolf_: I can't say gfortran is a paragon of stability 2020-04-11T09:29:31Z lockywolf_: even while looking for answers while learning it, I found too many stackoverlow and intel developer zone questions ending answered with "a compiler bug" 2020-04-11T09:29:43Z lockywolf_: it's not bad though 2020-04-11T09:30:17Z lockywolf_: kinda like C with classes . (not the original Stroustrup's c-with-classes, as I haven't seen it) 2020-04-11T09:30:43Z wasamasa: yeah, as weird and foreign it is, the compiler is far more helpful than with C 2020-04-11T09:31:01Z wasamasa: it handles pointer stuff and gives you useful debugging/warn options 2020-04-11T09:31:10Z lockywolf_: well, working with physicists every day, I understand why this is the case 2020-04-11T09:31:36Z wasamasa: you can still shoot yourself in the foot, but it's not nearly as easy as with C 2020-04-11T09:32:23Z lockywolf_: roughly a third of my work ends up implementing various error messages 2020-04-11T09:34:25Z lockywolf_: because physicists despise programming, and unless a compiler includes a guidebook into itself, they are unlikely to learn new features 2020-04-11T09:35:12Z mouloud[m]: I always think FORTRAN is PASCAL and PASCAL is FORTRAN 2020-04-11T09:35:49Z mouloud[m]: clearly they are not the same 2020-04-11T09:38:08Z lockywolf_: Fortran is a FORmula TRANslator 2020-04-11T09:40:44Z luni left #scheme 2020-04-11T09:41:31Z lockywolf__ joined #scheme 2020-04-11T09:41:36Z madage quit (Read error: Connection reset by peer) 2020-04-11T09:41:55Z madage joined #scheme 2020-04-11T09:44:32Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-11T09:58:06Z lockywolf_ joined #scheme 2020-04-11T09:59:44Z lockywolf_ quit (Max SendQ exceeded) 2020-04-11T10:00:22Z lockywolf_ joined #scheme 2020-04-11T10:01:00Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-11T10:01:05Z lockywolf_ quit (Remote host closed the connection) 2020-04-11T10:01:33Z lockywolf_ joined #scheme 2020-04-11T10:05:24Z aeth: wasamasa: if you want "easy to implement" while still respecting traditional Lisp/Scheme semantics you can do better than MAL, which last I checked seemed too "modern" (i.e. arbitrarily different) 2020-04-11T10:05:42Z aeth: wasamasa: just drop the hard parts of r5rs/r7rs, particularly call/cc 2020-04-11T10:05:57Z wasamasa: yeah, this is why I occasionally ask about bottom scheme 2020-04-11T10:06:18Z wasamasa: if you could implement call/cc, full TCO and multiple values on top, that would help 2020-04-11T10:06:44Z aeth: numeric tower is an interesting case that should be unspecified in a minimal Scheme because on some platforms it's hard and in some you get it from the platform (e.g. via a library) 2020-04-11T10:07:01Z aeth: (on the other hand, JS is where it's hard) 2020-04-11T10:09:06Z aeth: lockywolf_: in a way, learning a language via compiler warnings/errors is a form of empiricisim 2020-04-11T10:10:11Z aeth: lockywolf_: if FORTRAN is a FORmula TRANslator, then is PASCAL a PASsable CALendar? 2020-04-11T10:10:37Z aeth: (someone probably independently came up with that joke 40-50 years ago) 2020-04-11T10:11:34Z lockywolf_: https://www.marxists.org/archive/lenin/works/1908/mec/ 2020-04-11T10:12:17Z lockywolf_: sicp's ec-evaluator has TCO 2020-04-11T10:12:40Z luni joined #scheme 2020-04-11T10:16:54Z xelxebar quit (Remote host closed the connection) 2020-04-11T10:17:11Z xelxebar joined #scheme 2020-04-11T10:24:28Z lritter quit (Quit: Leaving) 2020-04-11T10:27:48Z luni quit (Quit: Connection closed) 2020-04-11T10:36:01Z lockywolf__ joined #scheme 2020-04-11T10:37:29Z stepnem quit (Read error: Connection reset by peer) 2020-04-11T10:38:34Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-11T10:39:58Z stepnem joined #scheme 2020-04-11T10:49:20Z lavaflow quit (Ping timeout: 265 seconds) 2020-04-11T10:51:57Z klovett_ quit (Remote host closed the connection) 2020-04-11T11:09:45Z lockywolf_ joined #scheme 2020-04-11T11:09:46Z lockywolf__ quit (Read error: Connection reset by peer) 2020-04-11T11:28:46Z ArthurStrong joined #scheme 2020-04-11T11:34:40Z ggole joined #scheme 2020-04-11T11:42:04Z m1dnight_ quit (Quit: WeeChat 2.4) 2020-04-11T11:42:06Z m1dnight1 joined #scheme 2020-04-11T11:46:40Z m1dnight1 quit (Client Quit) 2020-04-11T11:52:06Z m1dnight_ joined #scheme 2020-04-11T12:00:24Z lockywolf__ joined #scheme 2020-04-11T12:00:32Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-11T12:01:51Z lockywolf__ quit (Max SendQ exceeded) 2020-04-11T12:02:22Z lockywolf__ joined #scheme 2020-04-11T12:04:32Z TCZ joined #scheme 2020-04-11T12:11:50Z lockywolf_ joined #scheme 2020-04-11T12:13:54Z lockywolf__ quit (Ping timeout: 240 seconds) 2020-04-11T12:16:58Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-11T12:25:23Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-11T12:33:23Z mtld joined #scheme 2020-04-11T12:34:45Z CyDefect joined #scheme 2020-04-11T12:37:52Z mtld quit (Ping timeout: 256 seconds) 2020-04-11T12:38:04Z TCZ quit (Quit: Leaving) 2020-04-11T12:42:24Z luni joined #scheme 2020-04-11T12:47:04Z Adso_of_Jelq is now known as Duns_Scrotus 2020-04-11T12:47:14Z Duns_Scrotus is now known as CESSMASTER 2020-04-11T12:47:26Z CESSMASTER is now known as XGP15A-II 2020-04-11T12:47:40Z XGP15A-II is now known as Duns_Scrotus 2020-04-11T12:52:22Z Naptra quit (Quit: Leaving) 2020-04-11T13:02:04Z aeth quit (Read error: Connection reset by peer) 2020-04-11T13:03:02Z aeth joined #scheme 2020-04-11T13:03:59Z aeth quit (Changing host) 2020-04-11T13:03:59Z aeth joined #scheme 2020-04-11T13:06:52Z retropikzel quit (Quit: Leaving) 2020-04-11T13:12:20Z kritixilithos joined #scheme 2020-04-11T13:17:05Z retropikzel joined #scheme 2020-04-11T13:34:23Z heredoc joined #scheme 2020-04-11T13:39:29Z civodul joined #scheme 2020-04-11T13:58:43Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-11T14:14:47Z kritixilithos joined #scheme 2020-04-11T14:14:50Z luni quit (Ping timeout: 256 seconds) 2020-04-11T14:18:09Z mtld joined #scheme 2020-04-11T14:26:02Z xi quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) 2020-04-11T14:27:25Z xi joined #scheme 2020-04-11T14:30:43Z mr_machina joined #scheme 2020-04-11T14:36:03Z mtld quit (Quit: WeeChat 2.3) 2020-04-11T14:38:43Z longshi joined #scheme 2020-04-11T14:42:45Z lavaflow joined #scheme 2020-04-11T14:47:04Z CyDefect quit (Ping timeout: 256 seconds) 2020-04-11T14:48:06Z lockywolf joined #scheme 2020-04-11T14:48:19Z lockywolf quit (Remote host closed the connection) 2020-04-11T14:59:27Z CyDefect joined #scheme 2020-04-11T15:14:39Z ArthurStrong quit (Quit: leaving) 2020-04-11T15:16:54Z brendyyn quit (Ping timeout: 240 seconds) 2020-04-11T15:44:35Z SGASAU` joined #scheme 2020-04-11T15:48:02Z SGASAU quit (Ping timeout: 265 seconds) 2020-04-11T15:52:15Z Tirifto joined #scheme 2020-04-11T15:55:28Z drakonis joined #scheme 2020-04-11T15:58:35Z SGASAU` quit (Remote host closed the connection) 2020-04-11T15:58:50Z SGASAU` joined #scheme 2020-04-11T16:10:43Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-11T16:14:00Z even4void joined #scheme 2020-04-11T16:16:54Z daviid quit (Ping timeout: 240 seconds) 2020-04-11T16:18:09Z kritixilithos joined #scheme 2020-04-11T16:27:12Z even4void quit (Quit: My MacBook has gone to sleep. ZZZzzzโ€ฆ) 2020-04-11T16:37:27Z longshi quit (Ping timeout: 260 seconds) 2020-04-11T16:49:43Z longshi joined #scheme 2020-04-11T16:55:26Z luni joined #scheme 2020-04-11T17:45:59Z ggoes quit (Quit: WeeChat 2.3) 2020-04-11T17:46:47Z ggoes joined #scheme 2020-04-11T17:48:01Z srandon111 quit (Quit: leaving) 2020-04-11T18:02:03Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-11T18:09:34Z skapata joined #scheme 2020-04-11T18:16:27Z even4void joined #scheme 2020-04-11T18:17:22Z lritter joined #scheme 2020-04-11T18:20:54Z klovett joined #scheme 2020-04-11T18:20:56Z flower_snark_ joined #scheme 2020-04-11T18:22:07Z skapata is now known as pataska 2020-04-11T18:33:11Z izh_ joined #scheme 2020-04-11T18:33:36Z flower_snark_: Hi folks, new to scheme, but not programming. I'm reading Functional Differential Geometry and ran into a problem installing scmutils. I'm using a mac which the scmutils docs say is supported, but get an error: https://pastebin.com/76EAVxYU Naively, it looks like I just need to recompile for my architecture, but I don't know how to make new band. Are there conventions I should know or docs to read on this point? 2020-04-11T18:38:58Z kritixilithos joined #scheme 2020-04-11T18:39:04Z pilne joined #scheme 2020-04-11T18:54:06Z jcowan: flower_snark_: You are apparently trying to run compiled code that is not meant for the version of MIT Scheme you have. Try deleting all .fasl files. Carrying them about is never a very good idea; the Scheme (and Lisp generally) world runs on source code and (almost) always has. 2020-04-11T18:56:36Z bars0 joined #scheme 2020-04-11T18:57:03Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-11T18:58:13Z marmulak[m] joined #scheme 2020-04-11T18:58:14Z marmulak[m]: ๐Ÿ˜Ž 2020-04-11T19:05:22Z flower_snark_: jcowan: Thanks for the help! By version do you mean release version number or something more build-specific? The installation instructions (http://groups.csail.mit.edu/mac/users/gjs/6946/installation.html) suggest 10.1.10 which is what I have. In addition, I don't see any .fasl files. Only the mechanics.com file and an .sci file for each .scm file. Is there a convention for library entry points or top-level files? 2020-04-11T19:06:02Z jcowan: Your error message says the difference is in architecture, which suggests it is the OS that's wrong 2020-04-11T19:10:32Z jcowan: I'm baffled at this point. The mailing list (sign up at https://lists.gnu.org/mailman/listinfo/mit-scheme-devel ) is your best bet, I think. 2020-04-11T19:10:53Z Tirifto quit (Quit: Leaving.) 2020-04-11T19:11:10Z flower_snark_: Got it, makes sense given that I'm on OS X and I assume Linux is the default for this. I'll ask them, thanks 2020-04-11T19:12:36Z even4void quit (Quit: My MacBook has gone to sleep. ZZZzzzโ€ฆ) 2020-04-11T19:36:55Z kritixilithos joined #scheme 2020-04-11T19:37:36Z retropikzel quit (Quit: Leaving) 2020-04-11T19:37:45Z hugh_marera joined #scheme 2020-04-11T19:59:16Z hugh_marera quit (Read error: Connection reset by peer) 2020-04-11T20:02:23Z dan64- joined #scheme 2020-04-11T20:04:14Z dan64 quit (Ping timeout: 240 seconds) 2020-04-11T20:20:26Z TCZ joined #scheme 2020-04-11T20:25:50Z izh_ quit (Quit: Leaving) 2020-04-11T20:27:30Z kritixilithos quit (Quit: quit) 2020-04-11T20:45:21Z ngz joined #scheme 2020-04-11T20:50:38Z ggole quit (Quit: Leaving) 2020-04-11T20:52:25Z CyDefect quit (Remote host closed the connection) 2020-04-11T20:54:00Z pataska is now known as xkapata 2020-04-11T20:55:13Z drakonis left #scheme 2020-04-11T21:05:30Z bars0 quit (Quit: leaving) 2020-04-11T21:11:18Z dan64 joined #scheme 2020-04-11T21:14:28Z dan64- quit (Ping timeout: 265 seconds) 2020-04-11T21:20:15Z dan64- joined #scheme 2020-04-11T21:21:14Z dan64 quit (Ping timeout: 265 seconds) 2020-04-11T21:25:58Z gravicappa quit (Ping timeout: 258 seconds) 2020-04-11T21:54:32Z TCZ quit (Quit: Leaving) 2020-04-11T21:54:52Z TCZ joined #scheme 2020-04-11T22:17:25Z TCZ quit (Quit: Leaving) 2020-04-11T22:28:55Z seepel joined #scheme 2020-04-11T22:37:00Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-11T22:48:20Z mouloud[m]: How would you go to implement step debugger, that allows well to work like gdb, step over function call, go insinde and be able to tell at all times what are the values of variables? 2020-04-11T22:50:40Z longshi quit (Ping timeout: 256 seconds) 2020-04-11T22:54:45Z klovett_ joined #scheme 2020-04-11T22:55:19Z klovett quit (Ping timeout: 250 seconds) 2020-04-11T23:03:53Z xkapata is now known as skapata 2020-04-11T23:11:39Z f8l quit (Remote host closed the connection) 2020-04-11T23:14:33Z f8l joined #scheme 2020-04-11T23:18:55Z seepel: mouloud[m]: Could you provide more context? I assume you are writing an interpreter/compiler? If interpreter are you writing a tree-walk interpreter, byte code interpreter? If compiler, are you writing the backend yourself or using something like GCC/LLVM/other? 2020-04-11T23:19:06Z stultulo joined #scheme 2020-04-11T23:19:57Z f8l quit (Ping timeout: 265 seconds) 2020-04-11T23:19:57Z stultulo is now known as f8l 2020-04-11T23:22:08Z seepel: I also have a question. How do folks generally decide between a hash-table vs association list? 2020-04-11T23:23:19Z aeth: Some people use alists (or plists) when things are sufficiently short, as a sort of optimization. 2020-04-11T23:23:41Z TCZ joined #scheme 2020-04-11T23:23:54Z aeth: I generally just use hash tables where I would use hash tables in other languages, though, and save things like alists/plists for more special case sorts of things like macros 2020-04-11T23:26:06Z aeth: There is one key exception. If you're going to iterate over them and not look things up randomly, then an alist or plist would make semantic sense no matter how long it is. 2020-04-11T23:27:07Z aeth: Deciding between an alist or a plist is much harder (if your implementation has plists) because they fill essentially the exact same role and are both represented as lists: ((foo . 42) (bar . 53) (baz . 64)) vs. (foo 42 bar 53 baz 64) 2020-04-11T23:27:33Z aeth: I think CLers generally prefer plists and Schemers generally prefer alists. 2020-04-11T23:28:11Z seepel: whew, between the two I would prefer alists, I'm glad I'm a schemer after all... 2020-04-11T23:28:12Z aeth: You could argue that implementations support plists at all is a CLism 2020-04-11T23:28:23Z aeth: s/support/supporting/ 2020-04-11T23:28:38Z aeth: Quite a few implementations add CLisms, though. Especially CLOS-like object systems. 2020-04-11T23:30:03Z zaifir: seepel: alists are often a notational convenience. Their O(n) lookup time is too slow for many applications. 2020-04-11T23:30:52Z aeth: zaifir: When this comes up, people tend to say that they're faster for anything from 3 to 30 or so elements (probably depends on the benchmark). The upper bound of that covers most hash tables I've encountered. 2020-04-11T23:30:55Z zaifir: seepel: Scheme also has mappings, if you don't want to switch to assignment-oriented hash table code. https://srfi.schemers.org/srfi-146/srfi-146.html 2020-04-11T23:31:38Z seepel: Interesting 2020-04-11T23:31:45Z zaifir: aeth: Yeah, and complexity analysis with hashtables gets really ugly, from what little I know of it. 2020-04-11T23:33:19Z SGASAU` quit (Remote host closed the connection) 2020-04-11T23:33:36Z SGASAU` joined #scheme 2020-04-11T23:33:44Z seepel: It's probably not worth explaining what I'm doing in detail, but I'm essentially building an environment for static analysis of a simplified scheme language (Guile's IL). 2020-04-11T23:33:55Z aeth: The distinction to me is largely semantic imo, though. When I encounter an alist or plist this tells me that at least one of several things is true: (1) this is meant to be iterated over in order, (2) this is purely functional (most hash tables mutate), (3) this is syntax (either Lisp/Scheme syntax or a DSL, either in a macro or at runtime) 2020-04-11T23:34:07Z zaifir: aeth: So I wouldn't rely on that. Who knows what the exact behavior of the hash table implementation is. 2020-04-11T23:34:34Z seepel: I _suspect_ that my lookup tables won't get _that_ big. And even when they do, I also suspect that the majority of the work done would be at the front of my environment alist. 2020-04-11T23:34:42Z aeth: I suppose another possibility is (4) this is something that should be replaced by a tree at some later point for better big-O, if used on a large number of elements 2020-04-11T23:35:14Z zaifir: seepel: You could just use a/plists until it gets to slow. It's easy to prove that another structure implements the same operations. 2020-04-11T23:35:16Z aeth: seepel: For looking things up, I often just use a hash-table. Quite a few times, I just use it as a set, where all that matters is if something is present or not. 2020-04-11T23:35:17Z seepel: aeth: I'm working with alists right now mainly for the immutability... 2020-04-11T23:35:19Z zaifir: s/to/too/ 2020-04-11T23:35:26Z ngz quit (Ping timeout: 246 seconds) 2020-04-11T23:35:55Z seepel: And of course all the great convenience functions in srfi 1 2020-04-11T23:36:05Z zaifir: Right, an annoyance with hash tables is you've got to change all your functional code. 2020-04-11T23:36:36Z aeth: zaifir: Maybe we'll see some way around that now that R7RS-large has functional libraries (on the table for voting, at least) 2020-04-11T23:36:54Z aeth: zaifir: see https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/LibraryDeclarationsCowan.md 2020-04-11T23:37:11Z aeth: zaifir: but my current draft for how to interpret that declaration is: https://gitlab.com/mbabich/airship-scheme/-/issues/18 2020-04-11T23:38:07Z zaifir: aeth: Ah, right. 2020-04-11T23:38:39Z aeth: I avoid the use of the term "pure" entirely because someone had issues with it. I think you did? 2020-04-11T23:38:52Z zaifir: aeth: Hah, no. 2020-04-11T23:38:57Z aeth: ah, ok 2020-04-11T23:39:07Z aeth: It's not worth checking logs to see who did 2020-04-11T23:39:11Z zaifir: aeth: Riastradh really takes issue with that term every time it comes up. 2020-04-11T23:39:15Z aeth: ah 2020-04-11T23:39:31Z aeth: Okay, I think I recall you arguing with Riastradh but I guess you were arguing for the use 2020-04-11T23:39:36Z SGASAU` quit (Remote host closed the connection) 2020-04-11T23:39:56Z SGASAU` joined #scheme 2020-04-11T23:40:32Z zaifir: Nah, I was (slightly tongue-in-cheekly) pointing out that tdammers seemed to be calling Scheme *morally* impure for allowing mutation, IIRC, but it turns out I missed context. 2020-04-11T23:40:35Z zaifir: Anyway. 2020-04-11T23:41:19Z aeth: Either way, Scheme is a language where "function" means "pure function" because it has "procedure" for what some languages call "function" (or "subroutine" or "pseudo-function" etc.) 2020-04-11T23:41:36Z aeth: So "pure" isn't necessary in Scheme terminology. 2020-04-11T23:42:38Z zaifir: So code without mutation => 'functional' code, I guess. 2020-04-11T23:44:33Z aeth: zaifir: well, without side effects 2020-04-11T23:45:08Z aeth: zaifir: It enables things like e.g. a compiler to be able to safely ignore a library marked as (functional) with no exports whatsoever. 2020-04-11T23:45:37Z aeth: Since it can't do anything. 2020-04-11T23:46:02Z aeth: At least until the IO monad gets added to R7RS-large 2020-04-11T23:46:41Z zaifir: Right. 2020-04-11T23:47:22Z zaifir: Well, with IO there would have to be some mechanism for running an IO action, like the magic that Haskell's `main' does. 2020-04-11T23:47:50Z aeth: zaifir: Or this language on HN's front page yesterday, "Pointless", which has a magic output variable. https://ptls.dev/examples.html 2020-04-11T23:47:59Z zaifir: So presumably even with an IO monad a (functional) library couldn't do anything. But I haven't seen any Scheme proposals for such a thing. 2020-04-11T23:48:10Z aeth: zaifir: That "Pointless" language might be a better point for comparison because it appears to not be statically typed, like Scheme, but unlike Haskell 2020-04-11T23:48:23Z zaifir: aeth: Interesting, ty. 2020-04-11T23:48:52Z aeth: No numeric tower though. Everything is double. I wonder if it compiles to JS. 2020-04-11T23:51:44Z daviid joined #scheme 2020-04-11T23:52:00Z aeth: zaifir: The easiest thing to do in Scheme to get IO from a (functional) library would be to build a lazy list from the (functional) library for output, and pass a lazy list to the (functional) library as input, which seems to be similar to Pointless, which requires a lazy list for its output variable. 2020-04-11T23:53:10Z aeth: Of course, that's just complicated IO. Simple IO would be to do the IO from a non-(functional) library. e.g. (display (+ x y)) where x and y are inputs into the functional procedure + which then returns its output to be used by the non-functional display for its side effect 2020-04-11T23:53:53Z zaifir: aeth: Sounds like the old `interact' hack of languages like Miranda to model I/O as a List -> List function. 2020-04-11T23:54:19Z zaifir: Or List String -> List String, whatever. 2020-04-11T23:55:32Z zaifir: Hah, Pointless has + overloaded to perform string concatenation. Very JS. 2020-04-11T23:56:25Z aeth: that is a bad idea, especially if + also coerces like JS, although at least JS appears to be consistent in that 1+"hello" and "hello"+1 are both strings 2020-04-11T23:57:17Z aeth: The issue isn't + it's the combination of: (1) dynamically typed, (2) auto-conversion to match the expected type, and (3) overloaded operators/functions/etc. like + 2020-04-11T23:57:51Z aeth: You need all 3 in order to have potentially catastrophic failures. Python doesn't have #2, C++ doesn't have #1, etc. 2020-04-11T23:59:02Z aeth: And if #2 isn't even commutative so 1+"0" is 1 and "0"+1 is "01" then you have real serious issues. 2020-04-11T23:59:30Z zaifir: Yeah, dynamic typing + weak typing = pain. (Sorry for overloading + to work on abstract programming language features.) 2020-04-12T00:00:24Z aeth: dynamic typing + weak typing + overloading 2020-04-12T00:00:42Z aeth: Idk if Lua is weak typed, but it uses .. for string concat 2020-04-12T00:01:11Z aeth: It's actually amazing how many languages have the perfect storm of the combination of 3 features to create an antifeature, though 2020-04-12T00:02:35Z aeth: The real fun part is that in most Lisps, even Common Lisp, + is sufficiently unspecified that you could give it JS-like behavior, it would just be incredibly unexpected. 2020-04-12T00:04:17Z aeth: Mainly because errors are usually not MUST for performance reasons, making (+ "foo" "bar") in the domain of MIGHT/MAY 2020-04-12T00:06:10Z aeth: I'm actually not sure where R7RS-small specifies the error or lack thereof when you try to do that, so I'm not sure if it's a MUST 2020-04-12T00:07:33Z aeth: I think it's covered in 1.3.2 where it says: "it is an error for a procedure to be passed an argument of a type that the procedure is not explicitly specified to handle, even though such domain errors are seldom mentioned in this report. Implementations may signal an error, extend a procedureโ€™s domain of definition to include such arguments, or fail catastrophically" 2020-04-12T00:07:48Z aeth: heh, the PDF ate the ' in "procedure's" 2020-04-12T00:11:30Z aeth: + using z1 ... as its arguments is implicitly specified that it "may" fail if the input isn't a complex number. Or delete /, if it chooses to do so instead. 2020-04-12T00:12:10Z aeth: (contrast with x, which is implicitly just for reals) 2020-04-12T00:15:24Z aeth: Tangentially related, but I love Racket's "contract violation" because it makes you think that you did something (literally, in the real world) illegal. So I guess (+ "foo" "bar") might also get the implementors to sue you for violating the terms of service. 2020-04-12T00:17:49Z zaifir: Hah. 2020-04-12T00:18:26Z zaifir: Litigative typing. 2020-04-12T00:19:47Z zaifir: https://abstrusegoose.com/483 2020-04-12T00:22:26Z seepel: I suppose litigative typing is one way to fund a project? :-D 2020-04-12T00:22:46Z zaifir: What a terrifying idea. 2020-04-12T00:23:03Z aeth: oh no, we just proposed a new feature for the next version of Java 2020-04-12T00:23:44Z zaifir: When your compiler sends a "contract violation" report to the devs's legal department, that gives a new meaning to "smart compiler". 2020-04-12T00:24:01Z aeth: you shouldn't have violated the contract 2020-04-12T00:24:27Z aeth: jcowan: am I interpreting R7RS-small correctly, by the way? 2020-04-12T00:26:01Z aeth: Of course, not having an error there has more uses than just performance. You could e.g. extend + to work on matrices and it would still be legal while not being as nonsensical as + on strings. 2020-04-12T00:28:24Z jcowan: "Weakly typed langauge" basically is meaningless these days. There is nothing particularly "strong" about demanding that all coercions are explicit. 2020-04-12T00:28:45Z jcowan: And few languages (Go is an exception) demand explicit coercions between numbers. 2020-04-12T00:28:57Z aeth: well, I avoided the use of the word "weak" until it was used because it has too many meanings 2020-04-12T00:28:57Z jcowan still reading backscrool 2020-04-12T00:29:45Z jcowan: There is a JS library with an IO monad, although of course nothing prevents you from doing IO outside the monad: the run operation is just eval, or words to that effect 2020-04-12T00:31:05Z zaifir: The terminology may not be so good, but I think the distinction is valid. A language that auto-coerces is a very different beast from one that reports ill-typing. 2020-04-12T00:31:41Z jcowan: aeth: Yes, that's correct. Domain errors are "it is an error"; i.e., no conforming program can rely on the behavior, and an implementation may extend it usefully, signal an error, or crash and burn. 2020-04-12T00:32:26Z jcowan: Fortran used to have no coercion between ints and floats, and it was one of the first restrictions lifted 2020-04-12T00:32:30Z jcowan: just too annoying 2020-04-12T00:33:15Z jcowan: Of course, some people refuse to call a language "strongly typed" if it has any coercions at all, implicit or explicit. 2020-04-12T00:33:59Z jcowan: Java et al. will implicitly coerce up the class tree, demands an explicit coercion to go down it, and refuses to coerce at all between separate branches 2020-04-12T00:34:29Z aeth: thankfully the numeric tower isn't required, so Scheme can still be strongly typed! 2020-04-12T00:35:52Z jcowan: It is in R7RS-large, though 2020-04-12T00:35:56Z aeth: :o 2020-04-12T00:36:20Z aeth: https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/TangerineEdition.md 2020-04-12T00:36:32Z jcowan: That was a concession to small systems without hardward floats or memory to support software floats 2020-04-12T00:36:44Z jcowan: Chicken was fixnum/flonum until version 5 when it switched to a full tower 2020-04-12T00:37:00Z aeth: jcowan: do you think a (functional) library needs a way to do IO other than being called from a library that is not declared (functional)? 2020-04-12T00:38:05Z jcowan: No, modulo string ports. 2020-04-12T00:38:18Z jcowan: They are just a specific lazy data structure, really 2020-04-12T00:38:27Z jcowan: or codata structure 2020-04-12T00:38:51Z aeth: jcowan: Did you backscroll enough to see Pointless, which appears to be Haskell-inspired but not statically typed and thus potentially something close to what functional Scheme subsets could do? https://ptls.dev/ 2020-04-12T00:38:55Z aeth: It was on HN a day ago: https://news.ycombinator.com/item?id=22838255 2020-04-12T00:39:11Z jcowan: saw it, looking now 2020-04-12T00:39:16Z aeth: Of course, the syntax is pretty ugly and there's no numeric tower, just like most non-Lisps 2020-04-12T00:41:16Z aeth: heh, a tiny standard library but it has left-pad as padLeft. I wonder if that was added because of a serious need or as an easter egg 2020-04-12T00:42:36Z TCZ quit (Quit: Leaving) 2020-04-12T00:50:20Z SGASAU` quit (Remote host closed the connection) 2020-04-12T00:50:45Z SGASAU` joined #scheme 2020-04-12T01:11:59Z mdhughes: The assignment to fake variable thing is cute, but, uh, pointless. They could just have some mutate functions marked ! like Scheme or Julia. 2020-04-12T01:14:25Z zmt01 joined #scheme 2020-04-12T01:14:50Z aeth: mdhughes: What it's (probably) doing is something more along the lines of building up a lazy list with contents like (lambda () (display foo)) where display (more properly called display! in this context) is only legal if called from the implicit program loop that reads the output variable 2020-04-12T01:16:05Z aeth: Or I suppose it might be more like building up (lambda () foo) which is then passed into display at the point of that loop, e.g. (display ((car lazy-output-list))) 2020-04-12T01:18:07Z zmt00 quit (Ping timeout: 260 seconds) 2020-04-12T01:18:07Z mdhughes: Right, but it's surprising magic behavior, like BASIC's INKEY$. I hated that in MS BASIC, was much happier with Atari BASIC's `GET #7, C` to read a char (channel #7 was pre-opened to the console, nothing special about it) 2020-04-12T01:19:09Z aeth: well, it's like using a framework (you give up control of your main loop it, as opposed to a normal library) built into the language 2020-04-12T01:19:30Z aeth: the main loop being driven by the generation of the lazy output list, perhaps complicated a bit by input also being taken 2020-04-12T01:22:09Z aeth: it's not the kind of control flow you'd want if you needed to use... actual frameworks or (game loops if a game engine) 2020-04-12T01:22:13Z mdhughes: I lived in Objective-C land with a very complex NSRunLoop for a decade+, but at least that was never "magic", you can trace all the method calls and notifications to see where they come from. 2020-04-12T01:23:01Z mdhughes: With ptls, you'd have to read the language source to see what it's doing. 2020-04-12T01:24:01Z mdhughes: io interface is limited Currently can only read from / write to stdin / stdout 2020-04-12T01:24:04Z mdhughes: And as noted: 2020-04-12T01:24:11Z mdhughes: https://ptls.dev/dev.html 2020-04-12T01:24:23Z aeth: to be fair, part of the appeal of pure functional programming is that magic can happen at the compiler level. (+ (* x y) z) might not use a (*) and a (+) at all. You can kind of see that in some Lisps, specifically for arithmetic, where the generic *, +, etc., can be removed if it knows certain restrictions 2020-04-12T01:24:49Z aeth: it's just that FP is about doing it for the entire program 2020-04-12T01:25:31Z aeth: mdhughes: are you talking about "Tail-call optimization currently leads to poor stack-traces"? Because that's a problem with many Schemes, not just with TCO, also with CPS. 2020-04-12T01:26:17Z aeth: That's one reason why Common Lisp doesn't guarantee TCO and will probably turn it off at (debug 3) even if they breaks Scheme-style functions 2020-04-12T01:26:37Z aeth: s/they breaks/that breaks/ 2020-04-12T01:27:31Z mdhughes: No, I mean you can turn on the debugger, hit a line, then go up the call chain, read all the source (if built debug)/ASM calls. 2020-04-12T01:27:49Z aeth: And as for the limited interface, yes, that's why it's (apparently) a toy language 2020-04-12T01:27:57Z mdhughes: Which you need to do when you don't know why some timer isn't ticking, or whatever. 2020-04-12T01:29:13Z aeth: mdhughes: With sufficient optimization, there doesn't necessarily have to be a call chain at all. If I can statically determine that the answer must be "3", then I can just return 3 as long as there's no side effects before that point. e.g. (define (foo) (complicated-series-of-calls) 3) 2020-04-12T01:29:35Z aeth: or, more complicatedly, (define (foo) (complicated-series-of-calls)) where the final thing returns 3 and ignores the rest 2020-04-12T01:29:51Z mdhughes: Imperatives can do that just as well, that's what optimizing compilers have been doing! 2020-04-12T01:30:10Z Oxyd: You don't normally debug an optimised build, though. 2020-04-12T01:30:22Z aeth: mdhughes: it's much harder, that's why lots of languages let you do things like declare a function as pure 2020-04-12T01:30:36Z zaifir: Reasoning about imperative programs can be really hard. 2020-04-12T01:31:59Z aeth: Oxyd: Yes, but now you're getting into what "optimised" means. In Common Lisp, TCO is an optimization, so (debug 3) will break some code that iterates via tail calls Scheme-style. In Scheme, TCO is a core feature of iteration. 2020-04-12T01:32:06Z zaifir: Lovely theorems like (map f (map g xs)) = (map (compose f g) xs) go right out the window if f, g, or map have side effects. 2020-04-12T01:32:34Z lritter quit (Ping timeout: 265 seconds) 2020-04-12T01:32:40Z Oxyd: Well, Scheme is a properly tail-recursive language, so it doesn't have TCO. 2020-04-12T01:32:51Z aeth: yes, sorry, I almost called it properly tail-recursive 2020-04-12T01:33:11Z lritter joined #scheme 2020-04-12T01:33:20Z amerigo quit (Quit: Connection closed for inactivity) 2020-04-12T01:33:24Z mdhughes: TCO is not an "optimization", it's basic functionality for Scheme. Disabling that is just going to smash the stack on most programs. 2020-04-12T01:33:28Z Oxyd: And since it's properly tail-recursive, tail calls have to execute in constant space, so you don't really have anywhere to store stacktraces. 2020-04-12T01:33:35Z aeth: zaifir: Which is why (functional) in define-library is a feature I'd definitely fight for. The way Scheme works, it has to be done at the module level, not at the per-procedure level. 2020-04-12T01:33:40Z Oxyd: It's literally โ€œtail call optimisationโ€. The optimisation is in the name. 2020-04-12T01:34:16Z aeth: mdhughes: Yes, sorry, I guess I was really unclear. I mean, in many language it's TCO, but in Scheme TC"O" is not "O" at all 2020-04-12T01:34:21Z aeth: Basically, we don't disagree 2020-04-12T01:34:55Z mdhughes: Yeah, it's got the lingering name from languages that couldn't do it well/reliably. 2020-04-12T01:35:23Z mdhughes: You can get away with tail-call recursion in Javascript in most browsers, but some don't, and your program just kills the page/browser/OS. 2020-04-12T01:35:27Z zaifir: The SICP view is that "optimization" is a misnomer, since the processes that tail-calls create are structurally iterations; to implement them as recursions is the Wrong Thing. 2020-04-12T01:36:30Z aeth: zaifir: If my library is (functional) and its entire dependency tree of libraries is (functional) then I can interpret (map f (map g xs)) as (map (compose f g) xs) if I want to, as you said. Although I think that's (compose g f)? Not sure. 2020-04-12T01:37:03Z aeth: Is there a defined compose and which order does it use? 2020-04-12T01:38:03Z zaifir: aeth: Hah, CHICKEN has `compose' with (compose f g h) meaning h โˆ˜ g โˆ˜ f. 2020-04-12T01:38:05Z zaifir: Confusing. 2020-04-12T01:38:49Z aeth: Mathematically I think the order fog is f(g(x)) but once you make it (compose f g) the other order (compose g f) might make more sense since that is the order it's actually being evaluated in, rather than backwards order 2020-04-12T01:39:06Z aeth: And at that point, it's a toss-up as to what the API author felt like doing 2020-04-12T01:39:06Z zaifir: Right. 2020-04-12T01:41:43Z aeth: It looks like in CL, alexandria:compose uses the mathematical order. That is, first it negates and then it adds 1: (funcall (alexandria:compose #'1+ #'-) 1) => 0 2020-04-12T01:42:10Z jcowan: The best post I know of about debugging and tail calls is http://funcall.blogspot.com/2011/03/tail-recursion-and-debugging.html 2020-04-12T01:42:26Z aeth: ((compose 1+ -) 1) will tell if it's -2 or 0, assuming you define a 1+ (or use e.g. inc, if that's defined) 2020-04-12T01:44:07Z zaifir: Right-to-left application seems like the only sane approach for something called 'compose'. 2020-04-12T01:44:48Z jcowan: You could also have compose-left 2020-04-12T01:45:12Z zaifir: Yeah, that's preferably. 2020-04-12T01:45:22Z zaifir: Preferable, even. 2020-04-12T01:45:40Z aeth: zaifir: technically, though, you've turned infix into prefix so all bets are off in terms of application order. It could even be seemingly-random, but that would be very bad. expt is only binary in CL and Scheme, so it avoids this issue (the other operators-to-procedures being left-to-right) 2020-04-12T01:46:23Z luni quit (Read error: Connection reset by peer) 2020-04-12T01:46:41Z luni joined #scheme 2020-04-12T01:46:44Z jcowan: IMO mathematically non-associative operators shouldn't take more than two arguments. 2020-04-12T01:47:27Z aeth: well, yes, e.g. + is associative but traditionally treated as left-to-right on paper 2020-04-12T01:47:57Z aeth: in Scheme, though, all bets are off since the order isn't defined. 2020-04-12T01:47:58Z zaifir: โˆ˜ is, of course, associative. 2020-04-12T01:48:04Z jcowan: In MFTL, there is a fixed (but substantial) number of infix non-alphanumeric operators, as in both languages 2020-04-12T01:48:09Z jcowan: s/both/most 2020-04-12T01:48:41Z jcowan: Overloading is permitted, but each op has defined associativity and commutativity which the compiler is allowed to take advantage of, so if you overload string concat on + your program is broken 2020-04-12T01:49:31Z jcowan: another point is that many of the ops initially have no methods at all. 2020-04-12T01:50:34Z jcowan: what ** means, for example, is completely up to you provided your definition is right associative and non-commutative (I don't mean it's *anti*commutative, just that its commutativity can't be relied on) 2020-04-12T01:52:37Z luni left #scheme 2020-04-12T01:53:02Z jcowan: this keeps the parser simple but doesn't make your code look like Haskell-style line noise 2020-04-12T02:03:54Z xlei quit (Ping timeout: 256 seconds) 2020-04-12T02:05:14Z xlei joined #scheme 2020-04-12T02:11:36Z ahungry joined #scheme 2020-04-12T02:28:36Z brendyyn joined #scheme 2020-04-12T02:29:08Z seepel: mdhughes: Catching up from about an hour ago, I know tail recursion is technically specified in ES2015 but I didn't think any engines actually supported it. Do you know which ones do? 2020-04-12T02:34:16Z seepel: lol, tried to test in firefox and it just crashed my console :-D 2020-04-12T03:04:04Z seepel quit (Ping timeout: 258 seconds) 2020-04-12T03:11:45Z seepel joined #scheme 2020-04-12T03:15:58Z aeth: seepel: But I thought that JS was just Scheme with Java syntax? 2020-04-12T03:16:11Z aeth: :-p 2020-04-12T03:16:59Z h11 quit (Quit: The Lounge - https://thelounge.chat) 2020-04-12T03:17:49Z seepel: aeth: maybe if someone implemented the specified tail recursion it would be a bit closer :-P 2020-04-12T03:18:19Z seepel: Guile _kinda_ has a javascript interpreter /shrug 2020-04-12T03:23:18Z aeth: seepel: everything(*) can be implemented with an s-expression intermediate representation (*) sure, you can find some counter examples, mostly things that can't be implemented at all 2020-04-12T03:25:32Z mdhughes: seepel: Safari is TCO. Chrome but you have to be really careful. Firefox & Edge are not. 2020-04-12T03:25:35Z terpri: seepel, webkit had proper tail calls but i believe the other engines basically refused to implement it 2020-04-12T03:26:07Z aeth: mdhughes: isn't Edge Chromium now? 2020-04-12T03:26:28Z seepel: Oh really? I just did a simple test in Chromium and definitely got a stack overflow. Haven't tried Safari, but I did just fire up my old mac for another reason, maybe I'll give it a try. 2020-04-12T03:29:26Z seepel: But as far as Guile goes, it actually compiles javascript (I think ES3) to Guile's regular bytecode. I find it pretty cool. 2020-04-12T03:32:59Z seepel: I also got a stack overflow in safari (though probably a bit of an old version of safari) 2020-04-12T03:33:52Z seepel: Though I highly doubt my simple test hit the jit compiler in any of these tests, so maybe that's the difference. 2020-04-12T03:36:11Z aeth: seepel: Guile is supposed to be the universal scripting language of GNU, where any other scripting language (Emacs Lisp, Lua, JavaScript, etc.) should merely compile to Guile. 2020-04-12T03:36:33Z aeth: It has... not been successful at those goals, although it has had a bit of a recent revival. Racket is certainly much more successful at being a compilation target. 2020-04-12T03:38:43Z ArneBab_ quit (Ping timeout: 252 seconds) 2020-04-12T03:38:51Z ArneBab joined #scheme 2020-04-12T03:38:51Z ArneBab quit (Changing host) 2020-04-12T03:38:51Z ArneBab joined #scheme 2020-04-12T03:40:22Z seepel: Probably a lot to unpack in those two statements. 2020-04-12T03:43:37Z seepel: I just read a lot, so nothing behind my statements except for what I've tried to learn on my own. But in terms of the guile language modules at least, I think Guile's goal would be to make different languages play well together. 2020-04-12T03:44:12Z seepel: Whereas, in Racket I think I've mostly seen languages that stand alone, but do indeed use Racket as a compilation target. 2020-04-12T03:45:11Z seepel: In other words, if you compile a javascript function in Guile, you can call that from scheme. It's at least less obvious to me whether the same would be true for a language using Racket as a compilation target. 2020-04-12T03:46:10Z seepel: Of course, the flipside I totally believe to be true, that using Racket for a compilation target is probably much easier to specify your own semantics, vs with Guile it seems that your language would have to stay relatively close to scheme. 2020-04-12T03:51:22Z aeth: seepel: it doesn't matter, just compile Racket to Guile :-) 2020-04-12T03:51:50Z seepel: aeth: Ha! _just_ 2020-04-12T03:52:20Z seepel: Why not _just_ compile Racket to Chez then? 2020-04-12T03:52:33Z aeth: seepel: I mean, Racket-on-Another-Scheme should be doable in 2 years with any R6RS because Racket-on-Chez did the hard part 2020-04-12T03:52:47Z aeth: Less than 2 years if you could actually get paid to do it, but that's unlikely. 2020-04-12T03:54:09Z aeth: seepel: The caveat being that you almost certainly need commit access to patch the Scheme in question 2020-04-12T03:54:14Z seepel: I have no idea about the Racket-on-Chez architecture. I guess I assumed that it would have to use the Chez compiler technology, but does it mostly de-sugar racket into mostly pure R6RS? 2020-04-12T03:54:47Z aeth: there's a list of what it expects 2020-04-12T03:56:13Z aeth: You should, in principle be able to lie and pretend to be Chez no matter what, of course. It's just a matter of how hard that is. 2020-04-12T03:56:47Z aeth: Varying from "any R6RS can do it out of the box" (unlikely) to "you basically have to reimplement Chez Scheme and all of its quirks" (I'm guessing that this is also unlikely) 2020-04-12T03:58:24Z seepel: Just went to go find more details and one of the first hits was an HN post where a black banner notified me that John Conway has passed away :( 2020-04-12T04:01:54Z aeth: https://github.com/racket/racket/blob/master/racket/src/cs/rumble.sls shows all the stuff in Rumble, which is Chez + stuff Racket needs 2020-04-12T04:02:04Z aeth: seepel: that's from #racket the other day 2020-04-12T04:02:33Z aeth: seepel: some of the stuff are low-level to the point of being potentially problematic, like the GC section 2020-04-12T04:03:20Z aeth: A lot of those are probably possible to fake without actually implementing identical semantics, like most if not all of the unsafe-foo parts. Those would just hurt performance to fake. 2020-04-12T04:04:21Z aeth: the most problematic part might be the exposed Chez CFFI stuff, which might not match your Scheme's CFFI API 2020-04-12T04:06:41Z aeth: seepel: but it definitely looks possible, especially if you can find a way around the GC and CFFI stuff. 2020-04-12T04:07:21Z mr_machina quit (Remote host closed the connection) 2020-04-12T04:07:42Z aeth: Separate those from the rest and Racket might be... somewhat portable. 2020-04-12T04:10:03Z aeth: Maybe the goal of R7RS-large should be to provide enough of a language to bootstrap Racket? That would certainly bring in quite a few libraries. 2020-04-12T04:35:44Z seepel: This all super fascinating to me. I'm in the end more interested in R7RS-small in particular because it (+ srfis) seems to specify enough that it is useful as a source language that you can implement it to explore compiler internals. 2020-04-12T04:37:39Z aeth: seepel: R7RS-large is mostly SRFIs. https://gitlab.com/mbabich/airship-scheme/-/blob/master/SRFI.md#r7rs-large 2020-04-12T04:37:58Z seepel: From my environment question from ealier I'm going through the exercise of implementing stacked borrows https://plv.mpi-sws.org/rustbelt/stacked-borrows/paper.pdf in scheme. It's great because I can ask Guile to compile R7RS to it's IL and then pretty starightforwadly implement the checker ontop of that. 2020-04-12T04:39:21Z seepel: aeth: Which is why I'm more on board with a compliant scheme vs Racket. If I build R7RS-small to figure out what I'm doing, extending it with srfi's as I need them is a nice incremental approach. 2020-04-12T04:40:03Z seepel: My impression of Racket is that it deviates enough that it would be difficult to accomplish my goals ontop of it in quite the same way. Of course I could always be mistaken. 2020-04-12T04:41:37Z seepel: and often am mistaken! 2020-04-12T04:47:11Z aeth: I mean, it's a very different approach 2020-04-12T04:47:43Z aeth: it's not a tiny language 2020-04-12T04:51:44Z ahungry quit (Remote host closed the connection) 2020-04-12T04:55:12Z seepel: Much smaller than the alternatives, I get to jump right into the details rather than lexer/parser/semantics. Bonus points that I like the language! 2020-04-12T05:01:43Z klovett_ quit (Remote host closed the connection) 2020-04-12T05:03:56Z seepel: I guess I was looking for small enough, useful enough, and specified enough. R7RS-small seems to check the boxes in a better way than other languages I've investigated 2020-04-12T05:04:53Z aeth: seepel: I mean, Racket is very different from R7RS-small and is not a tiny language. 2020-04-12T05:05:08Z aeth: I guess you could also say that R7RS-small isn't small enough 2020-04-12T05:05:37Z seepel: Ohhh, sorry, I totally misunderstood. I thought your comments were referring to R7RS. 2020-04-12T05:05:39Z aeth: you could always use SRFI 172 if you want smaller... https://srfi.schemers.org/srfi-172/ 2020-04-12T05:05:42Z aeth: maybe there are others 2020-04-12T05:05:53Z klovett joined #scheme 2020-04-12T05:07:28Z aeth: oh, hmm, it doesn't have define because of the need to be an immutable environment 2020-04-12T05:07:46Z aeth: that's fine, no need for define when you have letrec* 2020-04-12T05:08:48Z seepel: Right on both accounts! SRFI 172 is definitely on my radar. 2020-04-12T05:10:54Z aeth: you could probably write a new SRFI that's also a subset, but with a different intent, which is to just be minimal rather than minimal and sandboxable. A SRFI 172 superset? 2020-04-12T05:11:04Z DKordic: seepel: Have You seen http://nanopass.org/ ? Use the smallest Dialect You need for Your analysis. 2020-04-12T05:11:47Z seepel: I'm also very interested in supporting records and modules. Originally I was going to just go make up my own lisp dialect when I came upon R7RS scheme and figured it was close enough to what I wanted _and_ specified (meaning I wouldn't have to make anything up). 2020-04-12T05:11:57Z DKordic: I meant to say create the smallest Dialect and reduce it to some other. 2020-04-12T05:14:00Z seepel: DKordic: Ah yeah! I've gone through the nano pass framework work many a time! I'm totally on board with that approach! So far I've been mostly been grabbing procedures from Guile's match library (ice-9 match) to work in a simisar way. 2020-04-12T05:21:40Z klovett quit (Ping timeout: 265 seconds) 2020-04-12T05:24:50Z lritter quit (Ping timeout: 256 seconds) 2020-04-12T05:26:12Z klovett joined #scheme 2020-04-12T05:30:22Z klovett quit (Remote host closed the connection) 2020-04-12T05:31:01Z klovett joined #scheme 2020-04-12T05:35:17Z klovett quit (Ping timeout: 250 seconds) 2020-04-12T05:35:53Z klovett joined #scheme 2020-04-12T05:38:33Z aeth: I think the most exciting thing about SRFI 172 isn't SRFI 172 itself, but the prospect of subsets-as-SRFIs 2020-04-12T05:44:47Z theruran joined #scheme 2020-04-12T05:47:29Z gravicappa joined #scheme 2020-04-12T05:49:14Z seepel: Hmmm, I hadn't really considered that. Looking at it after you saying so does seem to make it seem obvious! 2020-04-12T05:50:15Z seepel: That _is_ cool! 2020-04-12T05:52:48Z aeth: everything is already implemented, it's just a matter of choosing a coherent set 2020-04-12T05:53:54Z aeth: seepel: and actually SRFI 172 isn't the first, r7rs.pdf (i.e. r7rs-small) contains (scheme r5rs) 2020-04-12T05:59:38Z seepel: aeth: After you comment I actually did read through SRFI 172 again, and then thought to myself. "Well that means that R7RS must already do this right?" Sure enough I found that section, consider my mind blown! 2020-04-12T06:01:54Z aeth: seepel: SRFI 172 itself is tiny. This is the reference implementation: https://github.com/scheme-requests-for-implementation/srfi-172 2020-04-12T06:02:51Z klovett_ joined #scheme 2020-04-12T06:03:22Z seepel: Yeah, I totally hadn't connected all the dots until now. 2020-04-12T06:03:23Z klovett quit (Ping timeout: 260 seconds) 2020-04-12T06:06:54Z klovett_ quit (Ping timeout: 240 seconds) 2020-04-12T06:07:07Z seepel: You know last weekend I was asking about .sld vs .scm and this puts a little more context around that question. 2020-04-12T06:07:30Z klovett joined #scheme 2020-04-12T06:11:25Z seepel: This is great, I'm glad I aksed my annoying questions, you've given me a lot to think about. Thank you. 2020-04-12T06:11:34Z klovett quit (Ping timeout: 240 seconds) 2020-04-12T06:12:13Z klovett joined #scheme 2020-04-12T06:21:13Z klovett quit (Ping timeout: 264 seconds) 2020-04-12T06:25:17Z seepel quit (Ping timeout: 265 seconds) 2020-04-12T06:40:06Z klovett joined #scheme 2020-04-12T06:44:24Z klovett quit (Ping timeout: 256 seconds) 2020-04-12T06:45:01Z klovett joined #scheme 2020-04-12T06:49:02Z even4void joined #scheme 2020-04-12T06:49:25Z klovett quit (Ping timeout: 264 seconds) 2020-04-12T06:53:48Z klovett joined #scheme 2020-04-12T06:58:03Z klovett quit (Ping timeout: 250 seconds) 2020-04-12T06:58:43Z klovett joined #scheme 2020-04-12T07:10:54Z even4void quit (Quit: My MacBook has gone to sleep. ZZZzzzโ€ฆ) 2020-04-12T07:11:42Z klovett quit (Ping timeout: 258 seconds) 2020-04-12T07:12:39Z klovett joined #scheme 2020-04-12T07:21:49Z klovett quit (Ping timeout: 264 seconds) 2020-04-12T07:41:16Z mouloud[m]: seepel: context: I have no other requirements, I am working on a game to learn programming. To repeat it here, I need to step-debug a scheme or scheme-like program like gdb (step over, step in, inspect variables) 2020-04-12T07:42:48Z mouloud[m]: I mean the game is meant to learn programming. I know programming, and read few things about nanopass framework. 2020-04-12T07:45:17Z klovett joined #scheme 2020-04-12T07:49:39Z klovett quit (Ping timeout: 258 seconds) 2020-04-12T07:54:38Z klovett joined #scheme 2020-04-12T07:58:41Z klovett quit (Remote host closed the connection) 2020-04-12T07:58:57Z klovett joined #scheme 2020-04-12T08:04:26Z wasamasa: you don't need a debugger to learn programming and writing one is well out of the scope of making a game 2020-04-12T08:04:37Z wasamasa: there's a good amount of people that just live-code their way into one 2020-04-12T08:05:21Z wasamasa: now, if the game itself is about some language with a debugger, that's different because you have full control over the pieces 2020-04-12T08:05:40Z mouloud[m]: the game I am writing is about learning to program, I was under the impression that step-debugger was a popular feature 2020-04-12T08:06:15Z mouloud[m]: yes, the game is about some language 2020-04-12T08:06:27Z mouloud[m]: I have full control over the pieces 2020-04-12T08:06:34Z wasamasa: and what is the language? 2020-04-12T08:06:59Z wasamasa: how is it executed, by interpretation? 2020-04-12T08:07:14Z wasamasa: compilation to some other format? 2020-04-12T08:07:25Z revtintin joined #scheme 2020-04-12T08:08:08Z wasamasa: the answers to these decide how hard it is to provide a debugger 2020-04-12T08:08:43Z wasamasa: in the case of interpreting machine code/assembly it's as easy as extending your interpreter to pause execution and signal its current state for visualization 2020-04-12T08:09:03Z mouloud[m]: I did not decide yet whether it is compiled or interpreted, the language is something like bottom scheme. 2020-04-12T08:09:27Z wasamasa: if it's compiled, things get harder because you have less control over the execution of that compiled thing 2020-04-12T08:09:33Z wasamasa: and have to map back to the sources 2020-04-12T08:10:09Z wasamasa: if it's compiled to machine code, you need to use the native debug facilities, like INT3 on intel 2020-04-12T08:10:36Z wasamasa: a higher-level language makes it harder to decide what exactly a step is 2020-04-12T08:10:58Z wasamasa: for example it might as well be impossible to place a breakpoint on any place you want 2020-04-12T08:11:13Z wasamasa: like for instance inside a let binding list 2020-04-12T08:12:03Z mouloud[m]: are you familiar with things like https://codecombat.com/ 2020-04-12T08:12:23Z wasamasa: these things involve a good deal of experience with PLT to pull off 2020-04-12T08:12:39Z wasamasa: the skill is to make it look easy 2020-04-12T08:14:39Z wasamasa: I remember reading a blog post where they revealed they built both compilers and interpreters to provide a maximum level of comfort for people playing their games 2020-04-12T08:16:15Z TCZ joined #scheme 2020-04-12T08:16:34Z mouloud[m]: maybe my game idea is too ambitious 2020-04-12T08:17:42Z wasamasa: maybe 2020-04-12T08:18:13Z revtintin quit (Ping timeout: 264 seconds) 2020-04-12T08:18:19Z wasamasa: I can definitely recommend trying to build emulators for machine code and adding a debugger on top 2020-04-12T08:19:02Z skapata quit (Remote host closed the connection) 2020-04-12T08:19:05Z mouloud[m]: That might be a good idea, but the language I want to debug is not machine code, but scheme or some sort of scheme. 2020-04-12T08:19:39Z wasamasa: divide and conquer 2020-04-12T08:20:31Z mouloud[m]: wasamasa: thanks 2020-04-12T08:22:16Z SGASAU` quit (Remote host closed the connection) 2020-04-12T08:22:30Z SGASAU` joined #scheme 2020-04-12T08:26:24Z revtintin joined #scheme 2020-04-12T08:29:36Z wasamasa: now, you might want to look at how things like edebug/cider/portable scheme debuggers work 2020-04-12T08:30:04Z wasamasa: the idea there is to instrument the scheme code so that executing it notifies the debugger 2020-04-12T08:30:17Z wasamasa: the problem is that such an instrumentation is not free of side effects 2020-04-12T08:30:40Z wasamasa: for example backtraces contain the instrumented code and bugged code may run correctly inside the debugger 2020-04-12T08:34:49Z stepnem quit (Ping timeout: 265 seconds) 2020-04-12T08:36:06Z stepnem joined #scheme 2020-04-12T08:39:26Z revtintin quit (Ping timeout: 256 seconds) 2020-04-12T08:40:58Z retropikzel joined #scheme 2020-04-12T08:56:20Z even4void joined #scheme 2020-04-12T09:02:00Z amerigo joined #scheme 2020-04-12T09:05:34Z revtintin joined #scheme 2020-04-12T09:06:27Z even4void quit (Quit: My MacBook has gone to sleep. ZZZzzzโ€ฆ) 2020-04-12T09:07:53Z mdhughes: mouloud[m]: I'd probably make a little VM and have the game language compile into that, it's much easier to manage than a real compiler. 2020-04-12T09:09:12Z mdhughes: And you can just leave "comments" in your VM for the source line, so the user doesn't have to read the VM instructions. 2020-04-12T09:11:32Z mdhughes: The old Pascal p-code system is super easy to build, it should literally take a day to make a runtime, and the "compiler" for a Scheme-like is just following the parsed sexprs and pushing things onto a stack. 2020-04-12T09:33:16Z revtintin quit (Ping timeout: 256 seconds) 2020-04-12T09:39:11Z revtintin joined #scheme 2020-04-12T09:45:01Z SGASAU` quit (Remote host closed the connection) 2020-04-12T09:45:34Z revtintin quit (Ping timeout: 256 seconds) 2020-04-12T09:45:48Z SGASAU` joined #scheme 2020-04-12T09:53:57Z luni joined #scheme 2020-04-12T10:01:14Z revtintin joined #scheme 2020-04-12T10:08:35Z SGASAU` quit (Ping timeout: 265 seconds) 2020-04-12T10:30:36Z jcowan: Of course metacircular interpreters for Scheme are easy to find and you can add debugging, which seals off the language-with-debugger from the implementation language, while still leveraging its data structures and procedures to the extent you want them. 2020-04-12T10:35:05Z TCZ quit (Quit: Leaving) 2020-04-12T10:41:56Z ngz joined #scheme 2020-04-12T10:56:18Z SGASAU joined #scheme 2020-04-12T11:01:06Z CyDefect joined #scheme 2020-04-12T11:01:19Z andreh_ quit (Quit: Connection closed for inactivity) 2020-04-12T11:15:18Z SGASAU quit (Remote host closed the connection) 2020-04-12T11:15:39Z SGASAU joined #scheme 2020-04-12T11:23:08Z valjda joined #scheme 2020-04-12T11:28:43Z SGASAU quit (Remote host closed the connection) 2020-04-12T11:29:08Z SGASAU joined #scheme 2020-04-12T11:32:39Z SGASAU quit (Remote host closed the connection) 2020-04-12T11:34:29Z theruran quit (Quit: Connection closed for inactivity) 2020-04-12T11:34:36Z SGASAU joined #scheme 2020-04-12T11:36:37Z SGASAU quit (Remote host closed the connection) 2020-04-12T11:37:00Z SGASAU joined #scheme 2020-04-12T11:52:36Z retropikzel quit (Quit: Leaving) 2020-04-12T11:57:30Z SGASAU quit (Remote host closed the connection) 2020-04-12T11:58:28Z SGASAU joined #scheme 2020-04-12T12:08:59Z tohoyn joined #scheme 2020-04-12T12:12:27Z longshi joined #scheme 2020-04-12T12:16:42Z tohoyn quit (Quit: Lรคhdรถssรค) 2020-04-12T12:21:22Z TCZ joined #scheme 2020-04-12T12:22:25Z revtintin quit (Ping timeout: 264 seconds) 2020-04-12T12:34:21Z revtintin joined #scheme 2020-04-12T12:40:43Z TCZ quit (Quit: Leaving) 2020-04-12T12:59:42Z ggole joined #scheme 2020-04-12T13:01:56Z civodul joined #scheme 2020-04-12T13:08:27Z revtintin quit (Ping timeout: 256 seconds) 2020-04-12T13:12:15Z pinoaffe1 quit (Quit: killed) 2020-04-12T13:14:15Z pinoaffe joined #scheme 2020-04-12T13:18:55Z revtintin joined #scheme 2020-04-12T13:24:30Z kritixilithos joined #scheme 2020-04-12T13:25:04Z revtintin quit (Ping timeout: 258 seconds) 2020-04-12T13:33:00Z revtintin joined #scheme 2020-04-12T13:40:01Z pinoaffe quit (Quit: killed) 2020-04-12T13:41:37Z daviid quit (Ping timeout: 264 seconds) 2020-04-12T13:43:51Z longshi quit (Ping timeout: 258 seconds) 2020-04-12T13:45:13Z pinoaffe joined #scheme 2020-04-12T13:54:16Z brendyyn quit (Ping timeout: 256 seconds) 2020-04-12T13:57:06Z longshi joined #scheme 2020-04-12T14:16:31Z m1dnight_ quit (Quit: WeeChat 2.4) 2020-04-12T14:17:30Z revtintin quit (Ping timeout: 256 seconds) 2020-04-12T14:17:46Z m1dnight_ joined #scheme 2020-04-12T14:18:52Z m1dnight_ quit (Client Quit) 2020-04-12T14:19:24Z m1dnight_ joined #scheme 2020-04-12T14:19:39Z m1dnight_ quit (Client Quit) 2020-04-12T14:21:51Z m1dnight_ joined #scheme 2020-04-12T14:22:25Z lavaflow quit (Ping timeout: 264 seconds) 2020-04-12T14:47:03Z amerigo quit (Quit: Connection closed for inactivity) 2020-04-12T15:19:41Z lavaflow joined #scheme 2020-04-12T15:36:23Z razzy joined #scheme 2020-04-12T16:02:03Z tryte quit (Ping timeout: 240 seconds) 2020-04-12T16:03:21Z tryte joined #scheme 2020-04-12T16:19:03Z mr_machina joined #scheme 2020-04-12T16:25:41Z razzy left #scheme 2020-04-12T16:28:43Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-12T16:39:54Z X-Scale quit (Ping timeout: 240 seconds) 2020-04-12T16:41:19Z X-Scale` joined #scheme 2020-04-12T16:42:09Z X-Scale` is now known as X-Scale 2020-04-12T16:43:22Z longshi quit (Ping timeout: 256 seconds) 2020-04-12T16:45:03Z luni quit (Ping timeout: 260 seconds) 2020-04-12T16:45:14Z valjda quit (Ping timeout: 240 seconds) 2020-04-12T16:47:49Z valjda joined #scheme 2020-04-12T16:47:51Z valjda quit (Client Quit) 2020-04-12T16:52:40Z valjda joined #scheme 2020-04-12T16:55:21Z kritixilithos joined #scheme 2020-04-12T17:20:21Z hugh_marera joined #scheme 2020-04-12T17:26:58Z TCZ joined #scheme 2020-04-12T17:27:03Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-12T17:32:17Z luni joined #scheme 2020-04-12T17:40:46Z xuxx joined #scheme 2020-04-12T17:40:48Z xuxx: hi 2020-04-12T17:41:06Z xuxx: how do I compile scheme from cli ? (I'm using drracket actually) 2020-04-12T17:43:41Z wasamasa: racket has several tools, such as raco 2020-04-12T17:46:48Z xuxx: raco make myfile ? 2020-04-12T17:50:42Z wasamasa: it also has copious documentation on how they're used :> 2020-04-12T17:55:59Z xuxx: ty ! 2020-04-12T18:00:49Z seepel joined #scheme 2020-04-12T18:03:29Z seepel: mouloud[m]: I can't recommend this resource enough. If you have experience with programming it is a very straight forward introduction to building an interpreter. 2020-04-12T18:03:33Z seepel: https://craftinginterpreters.com/ 2020-04-12T18:04:03Z drakonis joined #scheme 2020-04-12T18:04:46Z seepel: I don't think the author covers debuggers directly, but if you follow the first section of the book which shows how to build a tree walk interpreter it probably wouldn't be too bad to insert the additional code for a debugger. 2020-04-12T18:15:51Z longshi joined #scheme 2020-04-12T18:22:27Z klovett_ joined #scheme 2020-04-12T18:24:34Z klovett quit (Ping timeout: 240 seconds) 2020-04-12T18:25:13Z seepel quit (Ping timeout: 258 seconds) 2020-04-12T18:27:22Z amerigo joined #scheme 2020-04-12T18:28:29Z SGASAU quit (Remote host closed the connection) 2020-04-12T18:28:42Z SGASAU joined #scheme 2020-04-12T18:30:32Z TCZ quit (Quit: Leaving) 2020-04-12T18:33:20Z seepel joined #scheme 2020-04-12T18:48:34Z kritixilithos joined #scheme 2020-04-12T18:57:23Z seepel quit (Ping timeout: 250 seconds) 2020-04-12T19:04:43Z seepel joined #scheme 2020-04-12T19:07:30Z astronavt joined #scheme 2020-04-12T19:20:56Z lritter joined #scheme 2020-04-12T19:24:42Z hugh_marera quit (Ping timeout: 256 seconds) 2020-04-12T19:30:49Z TCZ joined #scheme 2020-04-12T19:36:40Z skapata joined #scheme 2020-04-12T20:01:30Z klovett joined #scheme 2020-04-12T20:02:06Z klovett_ quit (Ping timeout: 256 seconds) 2020-04-12T20:17:11Z TCZ quit (Quit: Leaving) 2020-04-12T20:17:32Z TCZ joined #scheme 2020-04-12T20:21:53Z kritixilithos quit (Quit: quit) 2020-04-12T20:30:52Z TCZ quit (Quit: Leaving) 2020-04-12T20:35:10Z TCZ joined #scheme 2020-04-12T21:02:26Z CyDefect quit (Remote host closed the connection) 2020-04-12T21:03:30Z TCZ quit (Quit: Leaving) 2020-04-12T21:03:50Z TCZ joined #scheme 2020-04-12T21:08:07Z nulquen joined #scheme 2020-04-12T21:10:44Z xuxx: I do not really get the differences between '(a) and (list a) 2020-04-12T21:10:49Z xuxx: is it the same things ? 2020-04-12T21:12:43Z torbo joined #scheme 2020-04-12T21:13:03Z pinoaffe: xuxx: it evaluates to the same thing, but in terms of code it's not quite the same thing 2020-04-12T21:13:23Z pinoaffe: similar to how you can replace 5 by '5 in a lot of places 2020-04-12T21:14:04Z xuxx: pinoaffe: but 5 is an int and '5 isn't a list ? 2020-04-12T21:14:54Z pinoaffe: with (list a) you call a function that generates a list out of the value of the variable a 2020-04-12T21:15:35Z gravicappa quit (Ping timeout: 265 seconds) 2020-04-12T21:15:58Z pinoaffe: '(a) is syntactic sugar for (quote (a)), you're "quoting" a literal list containing the symbol a 2020-04-12T21:19:28Z xuxx: pinoaffe: but does the quoting create the list or its the (a) ? 2020-04-12T21:22:25Z pinoaffe: xuxx: it's the (a) 2020-04-12T21:22:53Z Oxyd: You need to differentiate between reading and evaluating. Reading takes characters and turns them into Scheme objects. You can then take those Scheme objects and evaluate them according to the rules of the language. (quote (a)) is a Scheme list of two elements, the symbol quote, and a list of one element, the symbol a. Evaluating this list results in the second element, the list containing a. 2020-04-12T21:24:08Z Oxyd: `(quote anything)` evaluates to simply `anything`. 2020-04-12T21:28:01Z ggole quit (Quit: Leaving) 2020-04-12T21:29:09Z xuxx: Oxyd: hum, so ' delete the impact of quote ? 2020-04-12T21:29:23Z xuxx: so the quote is just a char ? 2020-04-12T21:29:42Z Oxyd: ' is a reader shortcut for quote. 'anything reads as (quote anything). 2020-04-12T21:30:28Z xuxx: oh in your explanation, ` isnt ' 2020-04-12T21:30:30Z xuxx: my bad 2020-04-12T21:31:23Z xuxx: And another question : (define (intOr v1 v2) ((or (not (eq? v1 0)) (not (eq? v2 0))))) why I could return a boolean with that ? 2020-04-12T21:31:29Z xuxx: couldn't* 2020-04-12T21:32:06Z Oxyd: You can't call a boolean. 2020-04-12T21:32:21Z Oxyd: (Did you typo that extra pair of parentheses?) 2020-04-12T21:32:44Z SGASAU quit (Remote host closed the connection) 2020-04-12T21:33:02Z xuxx: Oxyd: extra pair ? 2020-04-12T21:33:31Z xuxx: uh 2020-04-12T21:33:38Z Oxyd: Why are you trying to call the result of (or โ€ฆ) ? 2020-04-12T21:33:43Z SGASAU joined #scheme 2020-04-12T21:34:36Z xuxx: (define (intOr v1 v2) (or (not (eq? v1 0)) (not (eq? v2 0)))) 2020-04-12T21:34:45Z xuxx: I failed, I mean that 2020-04-12T21:34:51Z Oxyd: Yeah, that sounds more reasonable. 2020-04-12T21:35:00Z xuxx: sorry 2020-04-12T21:35:54Z xuxx: So I can't call a boolean 2020-04-12T21:36:03Z xuxx: but here isn't the or returning a boolean ? 2020-04-12T21:36:06Z SGASAU` joined #scheme 2020-04-12T21:36:16Z Oxyd: It is. 2020-04-12T21:40:08Z SGASAU quit (Ping timeout: 256 seconds) 2020-04-12T21:44:17Z TCZ quit (Quit: Leaving) 2020-04-12T22:02:42Z jcowan: I have actually found a use for exact (affine) infinity: as identity elements for min and max 2020-04-12T22:05:46Z germ13 joined #scheme 2020-04-12T22:06:01Z xuxx: So in scheme, boolean and int are different, if I pass an int in an if statement it fails 2020-04-12T22:06:12Z xuxx: that's my deduction but is that right ? 2020-04-12T22:09:00Z aeth: xuxx: For the most part '(a b c) i.e. (quote (a b c)) is the same as (list 'a 'b 'c) as if the distributive law applied to quoting. There is one distinction and that that's '(a b c) is literal and thus needs to be treated as immutable, even if it's not enforced. In Racket, all lists are immutable, though, and so (list 'a 'b 'c) really just is '(a b c) 2020-04-12T22:09:43Z aeth: xuxx: Everything that's not false is true, so (if 1 #t #f) => #t and (if 0 #t #f) => #t 2020-04-12T22:10:31Z aeth: contrast with if numbers were boolean (and this is NOT true) then (if 1 #t #f) => 1 and (if 0 #t #f) => 0 2020-04-12T22:11:55Z xuxx: aeth: ty ! 2020-04-12T22:12:06Z aeth: xuxx: if you actually want the boolean #t you can just do (and (whatever?) #t) e.g. (and (member 42 (list 1 2 3 42 4)) #t) => #t instead of (42 4) or '(42 4) depending on how the implementation prints it (Racket prints it with the quote) 2020-04-12T22:12:12Z xuxx: is there a way to backtrack a function to check what's wrong ? 2020-04-12T22:15:07Z DKordic: xuxx: SICP will answer that question perfectly! Briefly: the question is how would you best describe your solution of the problem. 2020-04-12T22:21:42Z X-Scale quit (Quit: HydraIRC -> http://www.hydrairc.com <- Organize your IRC) 2020-04-12T22:29:40Z pinoaffe: jcowan: yeah, they're used for that in some branches of mathematics, too 2020-04-12T22:30:24Z pinoaffe: also as the minimum, maximum, infimum or supremum of the empty set 2020-04-12T22:31:04Z jcowan nods 2020-04-12T22:32:50Z stultulo joined #scheme 2020-04-12T22:33:34Z f8l quit (Ping timeout: 256 seconds) 2020-04-12T22:33:34Z stultulo is now known as f8l 2020-04-12T22:46:36Z X-Scale joined #scheme 2020-04-12T23:00:36Z longshi quit (Ping timeout: 256 seconds) 2020-04-12T23:03:19Z daviid joined #scheme 2020-04-12T23:11:56Z valjda quit (Quit: WeeChat 2.8) 2020-04-12T23:11:57Z xuxx: what happen if we give a recursion to a let "variable" 2020-04-12T23:12:11Z xuxx: is the recursion makes before or when we call it 2020-04-12T23:32:15Z zaifir: xuxx: Scheme has strict evaluation. So in order to evaluate the body of (let ((x (foo))) ...), (foo) has to be evaluated. 2020-04-12T23:34:05Z zaifir: xuxx: That is, (foo) must be evaluated before the body. 2020-04-12T23:48:38Z ngz quit (Ping timeout: 246 seconds) 2020-04-12T23:57:59Z germ13 quit (Ping timeout: 265 seconds) 2020-04-13T00:10:41Z germ13 joined #scheme 2020-04-13T00:12:54Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-13T00:23:33Z daviid` joined #scheme 2020-04-13T00:24:01Z Zenton quit (Ping timeout: 258 seconds) 2020-04-13T00:24:58Z daviid quit (Ping timeout: 256 seconds) 2020-04-13T00:25:59Z Zenton joined #scheme 2020-04-13T00:26:17Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-13T00:26:41Z SGASAU joined #scheme 2020-04-13T00:31:51Z daviid` quit (Quit: ERC (IRC client for Emacs 26.1)) 2020-04-13T00:33:11Z SGASAU quit (Remote host closed the connection) 2020-04-13T00:33:22Z SGASAU joined #scheme 2020-04-13T00:47:04Z daviid joined #scheme 2020-04-13T00:48:12Z tryte quit (Quit: _) 2020-04-13T00:48:30Z tryte joined #scheme 2020-04-13T01:04:16Z ahungry joined #scheme 2020-04-13T01:30:56Z lritter quit (Ping timeout: 256 seconds) 2020-04-13T01:31:22Z lritter joined #scheme 2020-04-13T01:33:18Z gioyik joined #scheme 2020-04-13T01:51:13Z gioyik quit (Ping timeout: 264 seconds) 2020-04-13T01:53:37Z skapata quit (Ping timeout: 272 seconds) 2020-04-13T02:05:12Z skapata joined #scheme 2020-04-13T02:06:39Z gioyik joined #scheme 2020-04-13T02:06:45Z luni quit (Ping timeout: 258 seconds) 2020-04-13T02:08:17Z lockywolf joined #scheme 2020-04-13T02:13:19Z gioyik quit (Ping timeout: 265 seconds) 2020-04-13T02:15:54Z SGASAU quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-13T02:16:12Z SGASAU joined #scheme 2020-04-13T02:38:10Z brendyyn joined #scheme 2020-04-13T02:47:48Z amerigo quit (Quit: Connection closed for inactivity) 2020-04-13T02:52:07Z SGASAU quit (Remote host closed the connection) 2020-04-13T02:53:04Z SGASAU joined #scheme 2020-04-13T03:00:59Z travv0 joined #scheme 2020-04-13T03:08:24Z whiteline quit (Remote host closed the connection) 2020-04-13T03:08:49Z whiteline joined #scheme 2020-04-13T03:27:23Z gioyik joined #scheme 2020-04-13T03:30:54Z xuxx quit (Ping timeout: 256 seconds) 2020-04-13T03:52:54Z gioyik quit (Ping timeout: 240 seconds) 2020-04-13T03:56:56Z aeth: jcowan: for-each and foo-for-each can't do anything. 2020-04-13T03:57:09Z aeth: within the functional sandbox, they are no-ops 2020-04-13T03:59:49Z gioyik joined #scheme 2020-04-13T04:02:57Z aeth: (assuming its unspecified return value is constant) 2020-04-13T04:18:03Z mr_machina quit (Remote host closed the connection) 2020-04-13T04:38:10Z Riastradh joined #scheme 2020-04-13T04:47:16Z retropikzel joined #scheme 2020-04-13T05:09:22Z dmiles quit (Read error: Connection reset by peer) 2020-04-13T05:13:28Z dmiles joined #scheme 2020-04-13T05:13:38Z ahungry quit (Remote host closed the connection) 2020-04-13T05:25:43Z dmiles quit (Read error: Connection reset by peer) 2020-04-13T05:29:54Z dmiles joined #scheme 2020-04-13T05:37:43Z torbo quit (Remote host closed the connection) 2020-04-13T05:38:27Z gravicappa joined #scheme 2020-04-13T05:44:22Z daviid` joined #scheme 2020-04-13T05:46:15Z daviid quit (Ping timeout: 260 seconds) 2020-04-13T05:47:05Z daviid`` joined #scheme 2020-04-13T05:49:10Z daviid` quit (Ping timeout: 256 seconds) 2020-04-13T06:06:06Z wraithoftheropes joined #scheme 2020-04-13T06:07:06Z daviid`` quit (Ping timeout: 258 seconds) 2020-04-13T06:12:54Z nly quit (Ping timeout: 256 seconds) 2020-04-13T06:17:49Z nly joined #scheme 2020-04-13T06:22:10Z nly` joined #scheme 2020-04-13T06:23:14Z nly quit (Ping timeout: 240 seconds) 2020-04-13T06:23:25Z klovett_ joined #scheme 2020-04-13T06:25:05Z klovett quit (Ping timeout: 250 seconds) 2020-04-13T06:29:11Z wraithoftheropes left #scheme 2020-04-13T06:31:54Z nly` quit (Ping timeout: 240 seconds) 2020-04-13T06:38:33Z lritter quit (Quit: Leaving) 2020-04-13T06:40:57Z drakonis quit (Quit: WeeChat 2.8) 2020-04-13T06:58:54Z daviid joined #scheme 2020-04-13T07:25:42Z retropikzel quit (Read error: Connection reset by peer) 2020-04-13T08:02:53Z amerigo joined #scheme 2020-04-13T08:24:19Z gioyik quit (Quit: WeeChat 2.8) 2020-04-13T08:30:19Z germ13 quit (Ping timeout: 265 seconds) 2020-04-13T08:41:31Z retropikzel joined #scheme 2020-04-13T09:11:21Z stultulo joined #scheme 2020-04-13T09:11:38Z f8l quit (Ping timeout: 256 seconds) 2020-04-13T09:11:50Z stultulo is now known as f8l 2020-04-13T09:20:53Z skapata quit (Quit: ฤœis!) 2020-04-13T09:33:21Z whiteline quit (Remote host closed the connection) 2020-04-13T09:33:50Z whiteline joined #scheme 2020-04-13T09:48:12Z daviid` joined #scheme 2020-04-13T09:50:04Z daviid quit (Ping timeout: 265 seconds) 2020-04-13T09:58:26Z lavaflow quit (Ping timeout: 256 seconds) 2020-04-13T09:58:59Z civodul joined #scheme 2020-04-13T09:59:55Z daviid`` joined #scheme 2020-04-13T10:01:50Z daviid` quit (Ping timeout: 256 seconds) 2020-04-13T10:06:31Z daviid`` quit (Ping timeout: 250 seconds) 2020-04-13T10:09:52Z luni joined #scheme 2020-04-13T10:11:02Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-13T10:12:35Z daviid joined #scheme 2020-04-13T10:13:40Z Zenton quit (Read error: Connection reset by peer) 2020-04-13T10:14:09Z Zenton joined #scheme 2020-04-13T10:24:25Z daviid` joined #scheme 2020-04-13T10:26:19Z daviid quit (Ping timeout: 265 seconds) 2020-04-13T10:30:42Z CyDefect joined #scheme 2020-04-13T10:39:15Z daviid` quit (Quit: ERC (IRC client for Emacs 26.1)) 2020-04-13T10:40:45Z daviid joined #scheme 2020-04-13T10:54:44Z SGASAU quit (Remote host closed the connection) 2020-04-13T10:55:25Z SGASAU joined #scheme 2020-04-13T11:08:45Z xuxx joined #scheme 2020-04-13T11:56:32Z terpri quit (Ping timeout: 260 seconds) 2020-04-13T12:09:17Z flower_snark_ quit (Quit: Connection closed for inactivity) 2020-04-13T12:30:28Z SGASAU` joined #scheme 2020-04-13T12:31:34Z SGASAU` quit (Remote host closed the connection) 2020-04-13T12:33:45Z SGASAU` joined #scheme 2020-04-13T12:34:24Z SGASAU quit (Ping timeout: 265 seconds) 2020-04-13T12:37:52Z SGASAU joined #scheme 2020-04-13T12:38:47Z SGASAU` quit (Ping timeout: 260 seconds) 2020-04-13T12:41:18Z lockywolf joined #scheme 2020-04-13T12:50:22Z TCZ joined #scheme 2020-04-13T13:07:43Z xuxx quit (Ping timeout: 260 seconds) 2020-04-13T13:08:05Z xuxx joined #scheme 2020-04-13T13:17:11Z jcowan: aeth: Not so, because the functional argument can be passed in from outside the sandboxed library. 2020-04-13T13:18:41Z nly` joined #scheme 2020-04-13T13:30:55Z longshi joined #scheme 2020-04-13T13:32:55Z daviid quit (Ping timeout: 260 seconds) 2020-04-13T13:43:54Z skapata joined #scheme 2020-04-13T13:48:34Z luni quit (Ping timeout: 256 seconds) 2020-04-13T13:51:58Z raingloom joined #scheme 2020-04-13T13:57:26Z amerigo quit (Quit: Connection closed for inactivity) 2020-04-13T14:01:15Z joast quit (Quit: Leaving.) 2020-04-13T14:01:43Z daviid joined #scheme 2020-04-13T14:10:02Z joast joined #scheme 2020-04-13T14:17:58Z xuxx: I know you guys already explained me but I feel I still do not get it 2020-04-13T14:18:12Z xuxx: '(a) equivalent to (list 'a) 2020-04-13T14:20:28Z lucasb joined #scheme 2020-04-13T14:23:01Z mdhughes: xuxx: Yes. 2020-04-13T14:23:16Z xuxx: But is ' a function ? 2020-04-13T14:23:20Z brendyyn quit (Ping timeout: 265 seconds) 2020-04-13T14:23:36Z ahungry joined #scheme 2020-04-13T14:23:42Z gwatt: no, it's special syntax 2020-04-13T14:23:45Z mdhughes: '(a) is just shorthand for (quote a), quote's a special command, not a function, but similar. 2020-04-13T14:23:59Z xuxx: but why it's a list 2020-04-13T14:24:03Z xuxx: at the end 2020-04-13T14:24:28Z gwatt: because '(a) is equivalent to (quote (a)) 2020-04-13T14:25:23Z xuxx: but how can (a) be a list without (list a) ? 2020-04-13T14:26:02Z mdhughes: There's many ways to make a list, (list) is just one. 2020-04-13T14:26:58Z retropikzel quit (Quit: Leaving) 2020-04-13T14:26:58Z mr_machina joined #scheme 2020-04-13T14:27:03Z raingloom quit (Ping timeout: 260 seconds) 2020-04-13T14:28:01Z mdhughes: (cons 'a '()) would also work, it makes (a) 2020-04-13T14:28:41Z mdhughes: Because a list is just a pair or series of pairs that ends in nil, which is '() 2020-04-13T14:29:10Z xuxx: is (+ 1 2) a list ? 2020-04-13T14:30:11Z mdhughes: Sure. Any series of values in parens are. 2020-04-13T14:30:33Z xuxx: ok 2020-04-13T14:30:47Z xuxx: so '(+ 1 2) just block the evaluation of the list ? 2020-04-13T14:32:53Z klovett_ quit (Remote host closed the connection) 2020-04-13T14:34:15Z mdhughes: Effectively, yeah. And to run it you (eval '(+ 1 2)) 2020-04-13T14:34:38Z mdhughes: (eval's not "good practice", but it's there for building expressions at runtime) 2020-04-13T14:35:33Z xuxx: But the things that makes me crazy it's I read that ' is here to insert literal constant. So when I do '(), () is a literal not a list no ? 2020-04-13T14:36:03Z longshi quit (Ping timeout: 250 seconds) 2020-04-13T14:36:26Z xuxx: Maybe i'm lost on how scheme works to understand something 2020-04-13T14:36:27Z mdhughes: It's still a list, just not evaluated. 2020-04-13T14:36:33Z klovett joined #scheme 2020-04-13T14:37:54Z xuxx: So scheme do : reading then evaluating ? why in the case of (+ 1 2) it evaluates instantly ? 2020-04-13T14:38:53Z mdhughes: Because it's not quoted. The interactive program is called a REPL: Read Eval Print Loop, because that's almost literally the commands it executes in order. 2020-04-13T14:38:54Z xuxx: oh because there is no ' 2020-04-13T14:39:55Z mdhughes: (let loop () (print (eval (read))) (loop)) ;; no error handling here 2020-04-13T14:39:58Z xuxx: (eval '(+ 1 2)) gives a result so why in the Eval part there is not a result ? 2020-04-13T14:40:49Z klovett quit (Ping timeout: 250 seconds) 2020-04-13T14:41:25Z klovett joined #scheme 2020-04-13T14:42:03Z xuxx: for example : + and (eval +) gives the same result so logic but '(+ 1 2) and (eval '(+ 1 2)) no. But in the REPL there is the Eval part or it's not like that ? 2020-04-13T14:42:43Z xavierm02 joined #scheme 2020-04-13T14:43:50Z xuxx: oh the quote dodge the eval part sry 2020-04-13T14:43:51Z mdhughes: Look at my simple REPL: (+ 1 2) is read (it's just a list at this point), then eval (+ procedure is applied to the arguments of the list), then the result printed. 2020-04-13T14:43:51Z xuxx: XD 2020-04-13T14:44:39Z xuxx: i'm ok with that 2020-04-13T14:45:22Z xuxx: if you can do the same with '(+ 1 2) to be sure that i'm understanding please ^^ 2020-04-13T14:48:14Z klovett quit (Ping timeout: 256 seconds) 2020-04-13T14:48:22Z klovett_ joined #scheme 2020-04-13T14:49:59Z mdhughes: Sure, '(+ 1 2) is converted by read into (quote (+ 1 2)), and evaling quote gives the list (+ 1 2). 2020-04-13T14:50:37Z mdhughes: You'd have to eval it again to make it apply + 2020-04-13T14:52:59Z TCZ quit (Quit: Leaving) 2020-04-13T14:54:28Z xuxx: ah 2020-04-13T14:54:33Z xuxx: the eval here is on quote 2020-04-13T14:54:35Z xuxx: ok 2020-04-13T14:54:37Z xuxx: thanks !! 2020-04-13T14:55:11Z mdhughes: No problem. It's a little confusing having the syntax & I/O format & main data structure be the same thing. 2020-04-13T15:01:35Z klovett_ quit (Ping timeout: 260 seconds) 2020-04-13T15:02:16Z klovett joined #scheme 2020-04-13T15:06:49Z klovett quit (Ping timeout: 250 seconds) 2020-04-13T15:07:35Z klovett joined #scheme 2020-04-13T15:12:25Z kritixilithos joined #scheme 2020-04-13T15:18:00Z xavierm02: Hi. I'm having trouble using macroexpand. It expands one macro but then it gets stuck on a let* instead of continuing to evaluate. https://paste.debian.net/1140107/ 2020-04-13T15:18:16Z klovett quit (Ping timeout: 256 seconds) 2020-04-13T15:18:30Z pjb` joined #scheme 2020-04-13T15:24:33Z nly` is now known as nly 2020-04-13T15:24:43Z nly quit (Changing host) 2020-04-13T15:24:43Z nly joined #scheme 2020-04-13T15:26:22Z foof: Riastradh: thanks, will fix 2020-04-13T15:26:32Z foof: also yes, match.scm is just syntax-rules 2020-04-13T15:28:20Z klovett joined #scheme 2020-04-13T15:28:30Z klovett quit (Remote host closed the connection) 2020-04-13T15:28:44Z klovett joined #scheme 2020-04-13T15:29:07Z foof: zaifir: define-library is in the meta environment 2020-04-13T15:29:23Z foof: there are convenience utilities for accessing this from (chibi repl) 2020-04-13T15:30:17Z foof: @meta (define-library ...) should work 2020-04-13T15:40:39Z zig joined #scheme 2020-04-13T16:11:35Z lavaflow joined #scheme 2020-04-13T16:22:30Z pjb` quit (Quit: rename) 2020-04-13T16:23:34Z pjb joined #scheme 2020-04-13T16:24:24Z lockywolf_ joined #scheme 2020-04-13T16:25:12Z lockywolf_ quit (Remote host closed the connection) 2020-04-13T16:25:37Z lockywolf_ joined #scheme 2020-04-13T16:26:50Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-13T16:29:23Z xkapastel joined #scheme 2020-04-13T16:31:19Z jcowan: foof: good to see you here 2020-04-13T16:36:13Z lockywolf__ joined #scheme 2020-04-13T16:38:14Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-13T16:43:40Z seepel quit (Ping timeout: 256 seconds) 2020-04-13T16:45:32Z gravicappa quit (Ping timeout: 256 seconds) 2020-04-13T16:45:59Z gravicappa joined #scheme 2020-04-13T16:47:20Z lockywolf_ joined #scheme 2020-04-13T16:48:10Z seepel joined #scheme 2020-04-13T16:49:54Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-13T16:53:51Z hugh_marera joined #scheme 2020-04-13T17:02:42Z luni joined #scheme 2020-04-13T17:05:43Z seepel quit (Ping timeout: 260 seconds) 2020-04-13T17:15:04Z terpri joined #scheme 2020-04-13T17:28:43Z gioyik joined #scheme 2020-04-13T17:42:19Z seepel joined #scheme 2020-04-13T17:44:20Z ArthurStrong joined #scheme 2020-04-13T17:50:44Z heisenberg-25 joined #scheme 2020-04-13T17:51:44Z raingloom joined #scheme 2020-04-13T18:06:45Z zaifir: foof: Awesome. Thanks very much for clarifying. 2020-04-13T18:11:14Z seepel quit (Ping timeout: 240 seconds) 2020-04-13T18:14:28Z seepel joined #scheme 2020-04-13T18:15:26Z xuxx quit (Ping timeout: 258 seconds) 2020-04-13T18:22:39Z klovett_ joined #scheme 2020-04-13T18:25:02Z klovett quit (Ping timeout: 256 seconds) 2020-04-13T18:26:55Z klovett_ is now known as klovett 2020-04-13T18:31:47Z aeth: I was reviewing the comments in the top r/scheme articles of all time and this one was... a bit unfortunate. https://old.reddit.com/r/scheme/comments/1qnwjq/r7rs_ratified/ceibjk9/ 2020-04-13T18:33:00Z wasamasa: but scheme doesn't take them by storm 2020-04-13T18:33:13Z aeth: right, only #9 2020-04-13T18:33:36Z aeth: (okay, probably just a normal pathogen, but still) 2020-04-13T18:33:49Z zaifir: Holy hell. 2020-04-13T18:34:58Z gioyik quit (Ping timeout: 265 seconds) 2020-04-13T18:35:35Z seepel: whoa 2020-04-13T18:54:22Z gioyik joined #scheme 2020-04-13T18:58:23Z TCZ joined #scheme 2020-04-13T19:14:27Z TCZ quit (Quit: Leaving) 2020-04-13T19:17:23Z 7YUAAD074 is now known as ober 2020-04-13T19:19:26Z erkin: Ouch. 2020-04-13T19:23:19Z erkin: A fractured FFI is the reason I'm suffering right now. 2020-04-13T19:23:42Z erkin: A few helpful people suggested implementation-specific C header to Scheme converters to me but I don't think they'd work for me. 2020-04-13T19:24:56Z erkin: I picked up R6RS-PFFI, hoping it'd be cross-implementation enough for the time being but it's a bit lacking and it's really tedious to convert C headers to Scheme by hand. 2020-04-13T19:25:23Z kritixilithos quit (Quit: quit) 2020-04-13T19:26:49Z erkin: There's SWIG for CHICKEN, Guile and Racket. In addition, Thunderchez has ffi-utils, Guile has ffi-help, CHICKEN has bind. None of them quite works for me. 2020-04-13T19:29:32Z erkin: Is there really no effort for a unified CFFI right now? 2020-04-13T19:29:44Z erkin: If there's an ongoing project or an SRFI idea, I'd gladly help. 2020-04-13T19:30:39Z erkin: (I was hoping something like that would make it to R7RS Large.) 2020-04-13T19:30:54Z aeth: how can it? 2020-04-13T19:31:15Z erkin: Which one exactly? 2020-04-13T19:31:20Z aeth: Any Scheme that compiles to another language that is not itself C or C++ doesn't have control over this part in particular. 2020-04-13T19:31:43Z erkin: Naturally, it'd be an optional appendix. Like, "if you provide a C FFI, do it this way." 2020-04-13T19:32:02Z aeth: Well, the other thing is, those other languages (almost) all have a C FFI 2020-04-13T19:32:13Z aeth: So you can expose the host's CFFI 2020-04-13T19:32:27Z erkin: They all have most things the standards ask for, except in inconsistent and irregular ways. 2020-04-13T19:32:29Z aeth: whether you can expose it in a way that matches the desired Scheme C FFI is a different story 2020-04-13T19:32:48Z erkin: Just like a library/module system. 2020-04-13T19:33:09Z aeth: the other unportable thing is anything that the GC exposes 2020-04-13T19:33:48Z erkin: I'm willing to take at least a modicum of consistent, regular and stable API I can build upon. 2020-04-13T19:33:58Z erkin: It doesn't need to be very comprehensive. 2020-04-13T19:34:04Z aeth: (Scheme->JS etc. will probably get nothing exposed from the GC) 2020-04-13T19:35:20Z aeth: erkin: there's always a chance that R7RS-large will make portable code sufficiently easy that something like CL's CFFI happens. Not standard, but a de facto standard over implementation-specific functionality. https://github.com/cffi/cffi/ 2020-04-13T19:35:42Z erkin: Well, I'll be counting on that chance then. 2020-04-13T19:36:00Z erkin: R6RS-PFFI works that way, by the way. 2020-04-13T19:36:10Z aeth: apparently not well enough? 2020-04-13T19:36:30Z erkin: compare https://github.com/ktakashi/r6rs-pffi/tree/master/src/pffi vs https://github.com/cffi/cffi/tree/master/src 2020-04-13T19:36:34Z aeth: either way, CL's a very close language to Scheme and some people do some really elaborate things in CFFI (or similar) and so it works out well for them 2020-04-13T19:36:36Z erkin: Well, nobody uses it. 2020-04-13T19:37:00Z erkin: Also most tools are older and oriented towards individual implementations. 2020-04-13T19:37:14Z aeth: well, yes, because "no one" writes portable Scheme 2020-04-13T19:37:22Z erkin: Except for idiots like me. 2020-04-13T19:37:26Z erkin: ;-P 2020-04-13T19:37:35Z aeth: writing portable Scheme is how I ended up with CL 2020-04-13T19:37:40Z aeth: I couldn't wait for R7RS-large 2020-04-13T19:37:43Z erkin: Unlike Common Lispers, most Schemers don't even seem to consider Scheme a single language. 2020-04-13T19:37:44Z aeth: and it's been like 8 years now 2020-04-13T19:38:13Z erkin: I still have a lot of hopes for R7RS Large and I really don't want to be disappointed. 2020-04-13T19:38:22Z erkin: hope* 2020-04-13T19:38:28Z aeth: I'm still trying to think how to sneak matrices in 2020-04-13T19:39:05Z erkin: I don't think I could leave Scheme altogether though. I'd probably retreat to Racket. 2020-04-13T19:39:15Z aeth: this needs to replace the traditional Fibonacci hello world in Scheme... https://en.wikipedia.org/wiki/Fibonacci_number#Matrix_form 2020-04-13T19:39:22Z erkin: CL has quite a few things that bother me. 2020-04-13T19:39:55Z aeth: well, every language does 2020-04-13T19:40:10Z erkin: I mean, Scheme has the fewest nits for me, if that makes sense. 2020-04-13T19:40:11Z aeth: in particular, I do a lot of game stuff and quite a bit of it is in single-float, but most Schemes (even Chez iirc?) only have one flonum, a double-float 2020-04-13T19:40:36Z erkin: Yeah, and Racket is removing single float with the switch to Chez base. 2020-04-13T19:40:44Z aeth: lots of needless boxing just to turn it back into a single float for the GPU 2020-04-13T19:41:02Z erkin: Actually 2020-04-13T19:41:06Z aeth: although in theory I could be smart with how I store and convert them to use double floats in intermediate places a lot 2020-04-13T19:41:12Z erkin: I might not be able to retreat to Racket after all, judging by the Rhombus project. 2020-04-13T19:42:07Z aeth: what issues do you have with Rhombus? 2020-04-13T19:42:26Z erkin: Anyway, I think the main difference between CL's CFFI and R6RS's PFFI is that Common Lispers are willing to go through effort to keep the language unified. Most Schemers don't care at all. 2020-04-13T19:42:36Z aeth: and, yes, that's a major cultural difference 2020-04-13T19:42:45Z aeth: Common Lispers love portability. 2020-04-13T19:42:58Z erkin: aeth: If I wanted a non-Lisp, there're better languages to choose from. 2020-04-13T19:43:03Z aeth: they'll even write a portability library for things that are only in 1-2 implementations in hopes that others follow, like here: http://portability.cl/ 2020-04-13T19:43:07Z seepel: Looking at srfi-43, it seems like there isn't any way to destructively shorten a vector. Is that correct? I was looking for a procedure that would essentially be vector-pop! 2020-04-13T19:43:32Z erkin: I mean, sure, I'd definitely take Rhombus over, say, Python or Ruby. 2020-04-13T19:43:39Z erkin: aeth: Yeah, I really appreciate that honestly. 2020-04-13T19:43:50Z aeth: imagine if Racket programmers wrote a portability library over a Racket-specific feature that only Racket currently has in hopes that other Schemes implement it too 2020-04-13T19:43:52Z erkin: It's also why I really wish all Scheme implementations adopted `cond-expand'. 2020-04-13T19:43:54Z aeth: because that's trivial-with-current-source-form 2020-04-13T19:44:12Z wasamasa: seepel: they're fixed-size, no? 2020-04-13T19:44:45Z seepel: wasamasa: Maybe? Are they? 2020-04-13T19:44:59Z zaifir: There are different levels of Scheme portability. I find that sticking to standard Scheme + SRFIs + commonly-implemented POSIX stuff makes it reasonable to port programs between Schemes. 2020-04-13T19:45:03Z wasamasa: it depends on whether we're talking about vanilla vectors or some bespoke data structure 2020-04-13T19:45:09Z wasamasa: vanilla vectors are fixed size, yes 2020-04-13T19:45:20Z wasamasa: so destructively shortening them doesn't make sense 2020-04-13T19:45:23Z erkin: zaifir: For most things, yes, but when things like CFFI are concerned, it all breaks down. 2020-04-13T19:45:30Z seepel: wasamasa: Ok, I missed that point, thanks! 2020-04-13T19:45:37Z aeth: zaifir: SRFIs don't offer enough to be an interesting language. Well, they certainly didn't when I tried. People (mostly jcowan) have written quite a bit for the process of R7RS-large 2020-04-13T19:45:47Z zaifir: erkin: Indeed. 2020-04-13T19:46:01Z zaifir: aeth: It depends what you need, of course. 2020-04-13T19:46:05Z erkin: Would there be interest in a research group for an SRFI for CFFI? 2020-04-13T19:46:19Z jcowan: SWIG on Chicken broke a long time ago. 2020-04-13T19:46:19Z erkin: The problem is that I'm not a C hacker and I don't think I'm qualified to have any say in this. 2020-04-13T19:46:21Z zaifir: aeth: I've been impressed with how often there's a SRFI for what I'm looking for. 2020-04-13T19:46:25Z erkin: But I'd love to help to the fullest extent. 2020-04-13T19:46:40Z aeth: zaifir: SRFI 110 is the SRFI everyone is always looking for 2020-04-13T19:46:53Z erkin: aeth: :-( 2020-04-13T19:47:12Z TCZ joined #scheme 2020-04-13T19:47:15Z aeth: If there was an Internet style rating system that would be one of the lowest rated, even though it's not poorly specified :-p 2020-04-13T19:47:17Z zaifir: aeth: Does any Scheme implement it? 2020-04-13T19:47:31Z wasamasa: imagine caniuse, but for srfis 2020-04-13T19:47:41Z erkin: wasamasa: I want that actually. 2020-04-13T19:47:57Z wasamasa: it's probably super depressing 2020-04-13T19:48:05Z wasamasa: kind of like a website comparing emacs starterkits 2020-04-13T19:48:09Z erkin: Hahah 2020-04-13T19:48:14Z wasamasa: "Yes, they sound great, but nobody on #emacs can help you" 2020-04-13T19:48:16Z erkin: Is there one? 2020-04-13T19:48:19Z aeth: wasamasa: it would be nice to be able to see status colors etc 2020-04-13T19:48:27Z jcowan: The reason I declared a C FFI off limits for R7RS-large is not just that it's a conversational rathole, but because there are basically two ways to do it: write glue in C or write glue in Scheme, and they are fundamentally incompatible. 2020-04-13T19:48:36Z civodul quit (Read error: Connection reset by peer) 2020-04-13T19:48:45Z wasamasa: erkin: it's something I've considered doing as a joke 2020-04-13T19:48:56Z zaifir: FFI is always going to be gross. 2020-04-13T19:49:04Z erkin: jcowan: What do you think is the best approximate solution to this problem? 2020-04-13T19:49:16Z aeth: jcowan: You thought that there were two ways to do it. 2020-04-13T19:49:29Z aeth: jcowan: Then Airship Scheme came along and suggested a third possibility: write glue code in a third language. 2020-04-13T19:49:36Z aeth: That's how it would currently have to be done! 2020-04-13T19:50:32Z aeth: jcowan: Imo, the SRFIs for your two approaches should exist, even if R7RS-large shouldn't vote on them 2020-04-13T19:50:35Z jcowan: In some cases the C interface is clean but simpleminded, and you have to write code in Scheme for marshalling and unmarshalling. In other cases, you basically write C the same way that the implementer did, typically according to strict conventions that the Scheme uses, and then bridge from that to your actual C code. 2020-04-13T19:51:27Z jcowan: These are general problems, but for C/C++ it's especially bad because interfaces in C are just fragments of arbitrary C. 2020-04-13T19:51:37Z jcowan: aeth: That's been done before too: CORBA. 2020-04-13T19:51:43Z erkin shivers 2020-04-13T19:51:46Z jcowan: All these things are so fugly as to be intolerable. 2020-04-13T19:52:19Z zaifir: It's such a difficult problem in general. 2020-04-13T19:52:28Z aeth: How about having a network API but no CFFI so you can just CFFI over localhost like a good microservice should? 2020-04-13T19:52:44Z wasamasa: rudybot: C as a service 2020-04-13T19:52:46Z rudybot: wasamasa: also it has a suggestion for loading emacs as a system service, which is very nice as you can use emacsclient -c -n to create a new graphical frame almost instantly (if you followed the directions. 2020-04-13T19:52:46Z erkin: It is, but I think there's a problem when other languages have it (and people seldom complain about them) but we don't. 2020-04-13T19:53:01Z zaifir: Yeah, that's a tempting idea. 2020-04-13T19:53:12Z wasamasa: aeth: r2 gave up on FFI and instead gives you a dozen ways to do IPC instead, using a textual interface 2020-04-13T19:53:46Z erkin: I think the only solution we have right now is encouraging people to use portability libraries like R6RS-PFFI, maybe porting it to R7RS to depend on `cond-expand' instead. 2020-04-13T19:53:57Z erkin: It's what CL seems to be doing. 2020-04-13T19:54:02Z aeth: wasamasa: I've actually done that before 2020-04-13T19:54:07Z aeth: wasamasa: it's surprisingly nice 2020-04-13T19:54:19Z aeth: text is a good interface if you think like Unix 2020-04-13T19:54:19Z wasamasa: yeah, once you get used to it 2020-04-13T19:54:32Z aeth: Specifically, in chess, you're expected to use UCI 2020-04-13T19:54:41Z wasamasa: they also provide a way to obtain json from every command where regular output is not nice enough 2020-04-13T19:54:43Z aeth: https://en.wikipedia.org/wiki/Universal_Chess_Interface 2020-04-13T19:54:57Z aeth: well, line-by-line is specifically when it's nice. JSON wouldn't be 2020-04-13T19:54:57Z wasamasa: they measured and found that C FFI is more overhead than this 2020-04-13T19:55:24Z aeth: I suspect it depends on the C FFI and the use case. I'm not sure stringifying floats for OpenGL buffers would be a good idea. 2020-04-13T19:55:27Z jcowan: X used a binary protocol because earlier experiments with text protocols were too damn slow, but the fact that it used TCP made remote X trivial. 2020-04-13T19:55:29Z wasamasa: not to mention extra churn because the project is everything but stable 2020-04-13T19:56:00Z zaifir: aeth: Text protocols are good. FFI sucks. The problem, of course, is when you need the speed of a common data structures. 2020-04-13T19:56:07Z zaifir: s/ a// 2020-04-13T19:56:46Z aeth: that's fine, there are like 3 C->CL compilers and now there's going to be a new Scheme->CL compiler, so just find a way to have the two talk :-p 2020-04-13T19:57:50Z wasamasa: I went with the JSON TCP socket interface in favor of FFI for talking to gpsd 2020-04-13T19:58:03Z wasamasa: because figuring out the former was way easier than the latter 2020-04-13T19:58:07Z aeth: I don't like JSON in Lisps 2020-04-13T19:58:16Z aeth: JSON maps cleanly to the JS, Python, Lua, etc., sort of thinking 2020-04-13T19:58:23Z aeth: I certainly don't know how people use JSON in C++ or Java 2020-04-13T19:58:41Z wasamasa: as it turned out ESR recognized that JSON is far easier to get right than an extensible selfmade text protocol 2020-04-13T19:58:47Z wasamasa: let alone a selfmade binary protocol 2020-04-13T19:59:28Z aeth: wasamasa: I guess that's why we have https://en.wikipedia.org/wiki/UBJSON and https://en.wikipedia.org/wiki/BSON 2020-04-13T19:59:39Z jcowan: Three? I only know Vacietis, unless you have a Lisp Machine 2020-04-13T20:00:11Z aeth: jcowan: I thought there were two, and the Lisp Machine one 2020-04-13T20:00:19Z jcowan: I always bring it up when someone asks about the safest C compiler. 2020-04-13T20:00:26Z aeth: and okay, the latter is technically Lisp Machine Lisp (LML) not CL 2020-04-13T20:00:29Z CyDefect quit (Quit: n8) 2020-04-13T20:01:07Z aeth: the safest C compiler is whatever one is written in Rust ;-) 2020-04-13T20:01:20Z jcowan: Zeta-C, that was its name. But no, I don't know of a third. 2020-04-13T20:01:53Z jcowan: aeth: You could have a very safe assembler written in Python 2020-04-13T20:06:20Z lritter joined #scheme 2020-04-13T20:06:21Z xuxx joined #scheme 2020-04-13T20:06:25Z xuxx: hoy 2020-04-13T20:08:48Z valjda joined #scheme 2020-04-13T20:08:56Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-13T20:10:54Z civodul joined #scheme 2020-04-13T20:12:19Z daviid quit (Ping timeout: 250 seconds) 2020-04-13T20:16:40Z theseb joined #scheme 2020-04-13T20:27:09Z theseb: Does EVERY expression need to return something? I tried "(if false 3)" and didn't see it return anything? 2020-04-13T20:30:30Z elderK joined #scheme 2020-04-13T20:30:32Z elderK quit (Changing host) 2020-04-13T20:30:32Z elderK joined #scheme 2020-04-13T20:31:39Z pjb: theseb: in r5rs it's actually unspecified whether (if #f 3) returns something or anything. 2020-04-13T20:31:58Z pjb: theseb: https://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html#%_sec_4.1.5 2020-04-13T20:32:12Z pjb: theseb: therefore, don't do that! 2020-04-13T20:32:33Z pjb: I mean, don't expect any result. (begin (if #f 3) 'result) -> result 2020-04-13T20:32:54Z TCZ quit (Quit: Leaving) 2020-04-13T20:33:13Z pjb: which means that if the test and consequent have no side effect, the if form is dead code, so don't write it. 2020-04-13T20:33:18Z wasamasa: it's a natural consequence of how lisp doesn't have the concept of statements 2020-04-13T20:33:30Z pjb: (begin (if #f (display 'foo)) 'result) is ok. 2020-04-13T20:33:31Z wasamasa: wrap that code into (write ...) and see what happens 2020-04-13T20:33:54Z wasamasa: the standard typically says that the result of that expression is undefined 2020-04-13T20:34:08Z pjb: wasamasa: well, if you try to use the value of a form that returns no value in scheme, you get an error, so you cannot say that scheme doesn't have statements. 2020-04-13T20:35:02Z TCZ joined #scheme 2020-04-13T20:35:03Z wasamasa: not necessarily 2020-04-13T20:35:09Z wasamasa: it's up to the implementation 2020-04-13T20:35:14Z wasamasa: IIRC racket throws an error 2020-04-13T20:35:23Z pjb: Right. And mit-scheme doesn't. 2020-04-13T20:35:27Z wasamasa: there's code that uses that (if #f 3) form to obtain the undefined value 2020-04-13T20:35:42Z pjb: multiple values in MIT Scheme seem to be implemented as closures. 2020-04-13T20:40:59Z SGASAU quit (Remote host closed the connection) 2020-04-13T20:41:41Z SGASAU joined #scheme 2020-04-13T20:42:18Z heisenberg-25 quit (Quit: Textual IRC Client: www.textualapp.com) 2020-04-13T20:44:23Z seepel quit (Ping timeout: 250 seconds) 2020-04-13T20:47:03Z theseb: pjb: i guess one way my question could have been solved by language designers is just by NOT allowing the else-clause to be omitted 2020-04-13T20:47:16Z wasamasa: that would be inconvenient 2020-04-13T20:47:45Z wasamasa: and force the design to a language with a focus on safety 2020-04-13T20:49:31Z Riastradh: It would have been a slightly simpler language design that way, yes. Of course, then programs using `if' only for its effect and only in one branch would have to have a dummy value written in the other branch. 2020-04-13T20:49:33Z zaifir: theseb: If your 'if' expression has no alternate and the test is false, then the result is unspecified. This makes sense; it's a value of some sort, and demons won't fly out of your nose. 2020-04-13T20:49:54Z drakonis1 joined #scheme 2020-04-13T20:50:33Z travv0: doesn't racket error if you omit the else clause? 2020-04-13T20:52:02Z wasamasa: might be a funny way to do obfuscation, using the return value of forms that are typically not used that way 2020-04-13T20:53:00Z zaifir: IIRC (if #f #t) is the canonical way to get a Scheme's "unspecified" value. 2020-04-13T20:57:36Z ArthurStrong left #scheme 2020-04-13T20:58:38Z pjb: theseb: definitely. Notably, in CL there's WHEN and UNLESS which are advised instead of IF without else form. 2020-04-13T20:59:12Z zaifir: pjb: And in Scheme. 2020-04-13T21:00:55Z zaifir: (At least in R7) 2020-04-13T21:01:18Z SGASAU quit (Remote host closed the connection) 2020-04-13T21:04:37Z seepel joined #scheme 2020-04-13T21:05:54Z zaifir: (Of course, `when' and `unless' are probably macros expanding to one-armed ifs.) 2020-04-13T21:07:01Z hidetora joined #scheme 2020-04-13T21:08:18Z ahungry quit (Ping timeout: 256 seconds) 2020-04-13T21:08:23Z xuxx: is there a way to have the position in a map function ? 2020-04-13T21:08:34Z pjb: Yes. 2020-04-13T21:08:35Z xuxx: I would like to compare an element with the rest of the list 2020-04-13T21:08:47Z xuxx: pjb: How ? 2020-04-13T21:09:02Z zaifir: xuxx: With the whole list or the remainder? 2020-04-13T21:09:07Z pjb: (map (let ((pos -1)) (lambda (x) (set! pos (+ 1 pos)) (list pos x))) '(a b c)) -> ((0 a) (1 b) (2 c)) 2020-04-13T21:09:24Z xuxx: zaifir: remainder means the list from the position ? 2020-04-13T21:09:35Z pjb: xuxx: if you want to compare the element with the rest of the list, don't use mapcar, use maplist. 2020-04-13T21:09:56Z zaifir: pjb: What's `maplist'? 2020-04-13T21:10:17Z xuxx: zaifir: with the remainder yes 2020-04-13T21:10:29Z zaifir: xuxx: Do you want to compare each element i with the i+1th, i+2th etc. elements, or with the entire list? 2020-04-13T21:10:35Z zaifir: xuxx: Then you want fold. 2020-04-13T21:10:42Z xuxx: okey i'm checking ty 2020-04-13T21:10:50Z zaifir: (probably) 2020-04-13T21:11:08Z pjb: xuxx: (define (maplist fn list) (if (null? list) '() (cons (fn list) (maplist fn (cdr list))))) 2020-04-13T21:11:27Z pjb: (maplist (lambda (x) x) '(1 2 3)) -> ((1 2 3) (2 3) (3)) 2020-04-13T21:12:03Z pjb: (maplist (lambda (x) (member (car x) (cdr x))) '(1 2 3 2)) -> (#f (2) #f #f) 2020-04-13T21:13:35Z zaifir: SRFI 1 has pair-fold, which can be used similarly. 2020-04-13T21:13:58Z xuxx: so it's necessary to construct other list ? 2020-04-13T21:14:17Z zaifir: xuxx: Can you give us an example of what are you trying to do? 2020-04-13T21:14:52Z hidetora quit (Quit: leaving) 2020-04-13T21:15:22Z hidetora joined #scheme 2020-04-13T21:17:06Z xuxx: So I would like to use a function for each element that return a bool. The function needs the elements and the remainder of the list. If the bool is true I would like to remove this element 2020-04-13T21:17:17Z xuxx: Maybe it's not a map function that I should use 2020-04-13T21:19:20Z zaifir: xuxx: So the direct version looks something like (if (p x rest) ( rest) (cons x ( rest))), where x is the car and rest is the cdr? 2020-04-13T21:19:49Z aeth: zaifir: "unspecified" doesn't mean an unspecified value, that's just the pedantic thing that most Schemes seem to choose to do 2020-04-13T21:19:54Z aeth: zaifir: I return #f for unspecified 2020-04-13T21:20:20Z aeth: Maybe I'll have a pedantic compiler flag and say (if pedantic # #f) 2020-04-13T21:20:40Z aeth: but I really don't like how Scheme breaks ideological purity here by making some expressions useless 2020-04-13T21:20:48Z theseb quit (Quit: Leaving) 2020-04-13T21:20:53Z hidetora: xuxx: I don't understand what you want 2020-04-13T21:20:54Z aeth: Oh, I could also say (if (not pedantic) #f) 2020-04-13T21:21:34Z zaifir: xuxx: This can be written as a right fold pretty easily. The folded function would be (lambda (x rest) (if (p x rest) (cons x rest) rest)). But I'm not sure if that's exactly what you want. 2020-04-13T21:21:57Z xuxx: Maybe I have a better example 2020-04-13T21:22:22Z xuxx: (1 5 6 5 8) and I would like to remove occurences to have : (1 5 6 8) 2020-04-13T21:23:16Z pjb: then you want mapcon! 2020-04-13T21:23:36Z zaifir: xuxx: See the right-fold example above. For this, p = memv. 2020-04-13T21:23:55Z zaifir: pjb: Can you provide Scheme suggestions, please? 2020-04-13T21:24:27Z aeth: I'm guessing that suggestion would be (1) use airship scheme, (2) (import (cl map)) :-p 2020-04-13T21:24:28Z zaifir: Oops, I had the arms of the if swapped. (if (memv x rest) rest (cons x rest)) 2020-04-13T21:25:50Z xuxx: zaifir: oh ok I think I understand your function 2020-04-13T21:28:07Z zaifir: xuxx: Right fold is the "fundamental list recursion operator". Any time you see the pattern (if (null? lis) b (f (car lis) ( (cdr lis)))), you've got a fold. 2020-04-13T21:28:32Z zaifir: It just remains to solve for f (the folded function) and b (the base value). 2020-04-13T21:31:10Z pjb: xuxx: https://termbin.com/59sis 2020-04-13T21:32:47Z pjb: Note that it keeps the last occurence. 2020-04-13T21:38:27Z grobe0ba quit (Quit: ZNC 1.7.4 - https://znc.in) 2020-04-13T21:38:40Z grobe0ba joined #scheme 2020-04-13T21:40:02Z teardown quit (Ping timeout: 256 seconds) 2020-04-13T21:40:03Z zaifir: pjb: There are easy ways to do this in Scheme without a mini CL portability library! 2020-04-13T21:41:19Z Riastradh: pjb: FYI, your set! approach does not work reliably. 2020-04-13T21:42:01Z teardown joined #scheme 2020-04-13T21:42:06Z pjb: Riastradh: do you have any statistics on the number of bugs in CL programs vs scheme programs? 2020-04-13T21:42:13Z gravicappa quit (Ping timeout: 264 seconds) 2020-04-13T21:42:25Z xuxx: pjb: i'm trying to understand your code 2020-04-13T21:43:37Z Riastradh: (map (let ((pos -1)) (lambda (x) (set! pos (+ 1 pos)) (list pos x))) '(a b c)) 2020-04-13T21:43:37Z Riastradh: ;Value: ((2 a) (1 b) (0 c)) 2020-04-13T21:43:41Z Riastradh: pjb: nope 2020-04-13T21:44:25Z pjb: sorry. I meant: (mapcar (let ((pos -1)) (lambda (x) (set! pos (+ 1 pos)) (list pos x))) '(a b c)) with https://termbin.com/59sis 2020-04-13T21:44:54Z pjb: scheme is really useless. What's the point of processing the elements of the list in undefined order? 2020-04-13T21:44:56Z Riastradh: Still doesn't work reliably. 2020-04-13T21:45:35Z pjb: ok, add the begin forms in the pasted code. It really start to feel like brainfuckโ€ฆ 2020-04-13T21:46:08Z Riastradh: How do you mean to use begin? 2020-04-13T21:47:22Z zaifir: Use `for-each', or better yet, don't use a counter--just (zip xs (iota (length xs))) 2020-04-13T21:48:24Z pjb: xuxx: correction: https://termbin.com/g40d 2020-04-13T21:48:39Z pjb: Riastradh: well, begin or let. Force the order of evaluation. 2020-04-13T21:49:09Z Riastradh: Yes, that will work. 2020-04-13T21:49:14Z pjb: zaifir: the counter can be used to stop the processing, without building the iota list. xs could also be circularโ€ฆ 2020-04-13T21:49:55Z zaifir: pjb: True. 2020-04-13T21:51:28Z zaifir: pjb: Streams are a good option if you're worried about a long list. 2020-04-13T22:00:03Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-13T22:03:16Z joast quit (Ping timeout: 256 seconds) 2020-04-13T22:03:58Z hugh_marera quit (Quit: hugh_marera) 2020-04-13T22:29:15Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-13T22:32:12Z X-Scale` joined #scheme 2020-04-13T22:34:42Z X-Scale quit (Ping timeout: 265 seconds) 2020-04-13T22:34:43Z X-Scale` is now known as X-Scale 2020-04-13T22:39:50Z xuxx: where can I past some code ? 2020-04-13T22:40:17Z xuxx: mb 2020-04-13T22:40:57Z xuxx: https://paste.debian.net/1140176/ for exemple here in the let, is the recursion makes in the let ? 2020-04-13T22:41:16Z xuxx: or when we call the identifier it makes the recursion ? 2020-04-13T22:46:59Z wasamasa: these identifiers are the exact opposite of lispy 2020-04-13T22:47:54Z wasamasa: it's not tail recursion in any case 2020-04-13T22:48:04Z daviid joined #scheme 2020-04-13T22:50:16Z xuxx: lispy ? 2020-04-13T22:51:22Z Riastradh: xuxx: Convention in Lisp is to use kebab-case, not camelCase. 2020-04-13T22:52:25Z xuxx: I didn't know that 2020-04-13T22:53:04Z xuxx: Is my question on this code understandable ? 2020-04-13T22:53:05Z elderK quit (Quit: WeeChat 2.8) 2020-04-13T22:54:30Z wasamasa: it's about self-referentiality 2020-04-13T22:54:41Z wasamasa: be it inside a function definition or a data structure 2020-04-13T22:56:50Z xuxx: so the recursion is instant in the let part 2020-04-13T22:57:18Z xuxx: it do the recursion until EI gets a value ? 2020-04-13T22:57:30Z xuxx: then do the body ? 2020-04-13T22:59:42Z TCZ quit (Quit: Leaving) 2020-04-13T23:00:12Z wasamasa: I can recommend doing some tracing to figure out what exactly happens 2020-04-13T23:01:48Z xuxx: wasamasa: with a pen or with a tool ? 2020-04-13T23:02:02Z wasamasa: if you have the time, do both 2020-04-13T23:02:11Z xuxx: wasamasa: but i'm stuck with a pen 2020-04-13T23:02:17Z lockywolf_ quit (Read error: Connection reset by peer) 2020-04-13T23:02:31Z xuxx: I don't know if the recursion starts when EI is define in the let 2020-04-13T23:02:57Z lockywolf joined #scheme 2020-04-13T23:03:06Z xuxx: wasamasa: so if you know a tool that can help me 2020-04-13T23:03:15Z wasamasa: display, newline 2020-04-13T23:03:24Z wasamasa: scheme has all the procedures you need for that 2020-04-13T23:03:47Z wasamasa: print something at the start and end of the procedure 2020-04-13T23:04:09Z wasamasa: if you're feeling fancy, try to visualize the call depth 2020-04-13T23:10:19Z valjda quit (Quit: WeeChat 2.8) 2020-04-13T23:11:20Z germ13 joined #scheme 2020-04-13T23:16:29Z hidetora quit (Quit: leaving) 2020-04-13T23:18:49Z pjb: xuxx: I like termbin.com; you can use it with a script: #!/bin/bash \n nc termbin.com 9999 | tr -d '\000' 2020-04-13T23:18:49Z pjb: 2020-04-13T23:18:49Z pjb: 2020-04-13T23:18:49Z pjb: 2020-04-13T23:18:49Z germ13 quit (Ping timeout: 264 seconds) 2020-04-13T23:20:39Z joast joined #scheme 2020-04-13T23:27:11Z lockywolf_ joined #scheme 2020-04-13T23:28:18Z lockywolf quit (Read error: Connection reset by peer) 2020-04-13T23:29:01Z seepel: xuxx: Which scheme implementation are you using? 2020-04-13T23:34:54Z seepel: I ask because most implementations have some sort of trace functionality in their debugger that will print all calls to a given procedure, namely the parameters passed to the procedure, and the return value. 2020-04-13T23:38:06Z germ13 joined #scheme 2020-04-13T23:55:08Z zaifir: "The most effective debugging tool is still careful thought, coupled with judiciously placed print statements." --Kernighan 2020-04-13T23:55:32Z zaifir: Unless you're writing Haskell, in which case it's careful thought and the Writer monad. 2020-04-13T23:56:15Z seepel: I'll take my breakpoints any day. 2020-04-13T23:59:15Z aeth: anyone remember the acid3 test? Apparently Firefox is only 97/100 these days. http://acid3.acidtests.org/ 2020-04-13T23:59:21Z aeth: Scheme needs one of those... 2020-04-13T23:59:54Z gabot quit (Ping timeout: 240 seconds) 2020-04-14T00:04:41Z seepel: I get 97/100 on Chromium as well. 2020-04-14T00:04:50Z SGASAU joined #scheme 2020-04-14T00:06:24Z gabot joined #scheme 2020-04-14T00:06:54Z seepel: The second and third boxes are gray, in the reference image they are orange and yellow respectively. 2020-04-14T00:07:50Z seepel: But to you're point, a scheme test suite would be pretty cool. This is the closest I've personally come across: https://github.com/ecraven/r7rs-benchmarks 2020-04-14T00:12:04Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-14T00:12:32Z aeth: seepel: yeah, but I don't mean tests like the chibi tests (which afaik are the tests everyone uses) or benchmarks like those 2020-04-14T00:12:43Z aeth: I mean just going through r7rs.pdf and turning that into a n/100 score 2020-04-14T00:13:02Z aeth: weight it so the optional things are the last 10 points, so a conforming implementation might be 90/100 2020-04-14T00:13:51Z aeth: (that's also why you would probably need filled-in-or-not boxes, although Unicode boxes are probably better than actual visual boxes) 2020-04-14T00:15:41Z TCZ joined #scheme 2020-04-14T00:17:18Z gioyik quit (Ping timeout: 258 seconds) 2020-04-14T00:18:03Z seepel: aeth: That makes sense. 2020-04-14T00:18:05Z aeth: seepel: these are the chibi r7rs tests: https://github.com/ashinn/chibi-scheme/blob/master/tests/r7rs-tests.scm 2020-04-14T00:18:29Z aeth: Fortunately, it doesn't test undefined behavior so it's mostly portable 2020-04-14T00:18:55Z aeth: you need to port (chibi test) that's all 2020-04-14T00:19:19Z aeth: oh, and if you can see the messed up syntax highlighting by the end... you can see that Github's Scheme parser fails the test :-p 2020-04-14T00:19:48Z aeth: I think it fails at the line (test-write-syntax "|\"|" '|\"|) 2020-04-14T00:20:04Z aeth: not surprising, things like that usually fail at obscure string stuff 2020-04-14T00:25:11Z aeth: (chibi test) has one chibi dependency, (chibi term ansi) 2020-04-14T00:32:08Z raingloom quit (Read error: Connection reset by peer) 2020-04-14T00:32:19Z raingloom joined #scheme 2020-04-14T00:35:55Z ahungry joined #scheme 2020-04-14T00:36:59Z raingloom quit (Ping timeout: 260 seconds) 2020-04-14T00:38:13Z TCZ quit (Quit: Leaving) 2020-04-14T00:44:33Z skapata quit (Remote host closed the connection) 2020-04-14T00:45:16Z jcowan: aeth: That's just for coloring the output 2020-04-14T00:45:26Z jcowan: it's not functionally necessary 2020-04-14T00:47:20Z jcowan: BTW, in R6RS when and unless return the last expression in the body if the test succeeds, and an unspecified result if it fails. But for R7RS the argument was that there's no point in having a construct that returns a defined value in some circumstances and an unspecified value in other circumstances. 2020-04-14T00:52:37Z aeth: okay, so apparently not all unspecified are #f 2020-04-14T00:52:47Z aeth: since when is defined in terms of begin which is specified 2020-04-14T00:52:56Z aeth: but doesn't have to be, but will be 2020-04-14T00:53:05Z seepel: aeth: thanks for pointing me to the chibi tests! This looks like it might come in handy for me. 2020-04-14T00:53:22Z aeth: seepel: you're welcome 2020-04-14T00:53:33Z seepel: And as for github's syntax highlighting, this happens all the time for me at work with typescript. I think it actually might be a file size thing. 2020-04-14T00:53:56Z aeth: seepel: no, it specifically breaks around a ", which is a common thing I've noticed around "s and 's 2020-04-14T00:54:10Z aeth: Actually, I think the '|\"| is what it can't parse 2020-04-14T00:54:34Z aeth: So technically, it's \" in a | that breaks it, not something in a " 2020-04-14T00:54:39Z seepel: Hmm, that wouldn't surprise me either :-) 2020-04-14T00:56:50Z aeth: Gitlab highlights Scheme better (but considerably differently from Common Lisp, which is odd), but you need to tell it to recognize .sld by having an emacs modeline at the top (to be fair, emacs itself needs that modeline unless you configure it) 2020-04-14T00:57:04Z X-Scale` joined #scheme 2020-04-14T00:57:06Z aeth: idk if it breaks in the same way in that file, though. 2020-04-14T00:57:25Z lockywolf joined #scheme 2020-04-14T00:58:56Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-14T00:58:57Z X-Scale` is now known as X-Scale 2020-04-14T01:00:08Z jcowan: The last I heard, Emacs wasn't all that clever about |(foo| either. 2020-04-14T01:01:39Z aeth: jcowan: nope, it's handled correctly, both vanilla and paredit 2020-04-14T01:02:10Z jcowan: Ah, good 2020-04-14T01:02:15Z aeth: at least in scheme and common-lisp, not vanilla *scratch* 2020-04-14T01:02:22Z aeth: Scheme even highlights it like a string 2020-04-14T01:02:52Z aeth: Emacs also gets to the bottom of r7rs-test.scm correctly, although it could've broke and unbroke 2020-04-14T01:03:13Z aeth: My guess is that people patch the thing that they actually use to write Scheme 2020-04-14T01:03:23Z aeth: Maybe it had issues when r7rs was new 2020-04-14T01:05:43Z jcowan: The R6RS Rationale says: 2020-04-14T01:05:46Z jcowan: Among existing implementations of Scheme, a popular choice for extending the set of characters that can occur in symbols is the vertical-bar syntax of Common Lisp. The vertical-bar syntax of Common Lisp carries the risk of confusing the syntax of identifiers with that of consecutive lexemes, and also does not allow representing arbitrary characters using only ASCII. Consequently, it was not adopted for R6RS. 2020-04-14T01:06:30Z jcowan: so R6RS has only character escapes and R7RS allows escapes only within vertical bars. 2020-04-14T01:08:13Z gioyik joined #scheme 2020-04-14T01:28:14Z lritter quit (Ping timeout: 240 seconds) 2020-04-14T01:29:10Z lritter joined #scheme 2020-04-14T01:41:26Z seepel quit (Ping timeout: 256 seconds) 2020-04-14T02:12:52Z seepel joined #scheme 2020-04-14T02:13:25Z lavaflow quit (Ping timeout: 264 seconds) 2020-04-14T02:21:22Z lavaflow joined #scheme 2020-04-14T02:22:49Z seepel quit (Ping timeout: 250 seconds) 2020-04-14T02:32:24Z mr_machina quit (Remote host closed the connection) 2020-04-14T03:00:50Z terpri quit (Remote host closed the connection) 2020-04-14T03:01:23Z terpri joined #scheme 2020-04-14T03:16:48Z luni quit (Ping timeout: 256 seconds) 2020-04-14T03:27:59Z brendyyn joined #scheme 2020-04-14T03:30:26Z torbo joined #scheme 2020-04-14T03:30:28Z torbo quit (Remote host closed the connection) 2020-04-14T03:47:33Z torbo joined #scheme 2020-04-14T03:59:20Z retropikzel joined #scheme 2020-04-14T04:06:47Z lockywolf_ joined #scheme 2020-04-14T04:09:16Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-14T04:13:14Z germ13 quit (Ping timeout: 256 seconds) 2020-04-14T04:13:29Z germ13 joined #scheme 2020-04-14T04:43:05Z ccl-logbot joined #scheme 2020-04-14T04:43:05Z 2020-04-14T04:43:05Z names: ccl-logbot pjb scal_ lpsmith_ abordado_ germ13 lockywolf_ retropikzel torbo brendyyn terpri lavaflow lritter gioyik X-Scale ahungry gabot SGASAU joast daviid teardown grobe0ba drakonis1 xuxx zig xavierm02 nly Zenton whiteline f8l dmiles Riastradh travv0 tryte nulquen astronavt m1dnight_ pinoaffe stepnem ArneBab xlei zmt01 dan64- marmulak[m] pilne ggoes xi heredoc aeth xelxebar madage cantstanya hive-mind evdubs acarrico kjak kilimanjaro sz0 abbe DGASAU` 2020-04-14T04:43:05Z names: eagleflo siraben keep-learning[m] amnesic[m] mouloud[m] rudybot cky vyzo Yardanico averell nullus malaclyps ski casaca shymega nckx poga drot eMBee balkamos deesix Duns_Scrotus kopiyka mdhughes z0d manualcrank ravndal notzmv jackhill Oddity greaser|q nikita` cemerick epony cmatei sudden snits ft Lysandros ecraven ByronJohnson fadein titanbiscuit mjsir911 zaifir conjunctive ozzloy r1b zerous pounce emacsomancer copec akkad gnomon nerdypepper dsp cibs jboy 2020-04-14T04:43:05Z names: DKordic Gnuxie[m] Ericson2314 dieggsy mbakke weinholt tessier yosafbridge tdammers ohama aoh erkin belmarca aos stux|work mario-goulart edgar-rft foof mats gf3_ Kooda jxy Oxyd tumdum mroh cpape bandali bsima rotty nchambers wasamasa rubic88 fiddlerwoaroof stux16777216Away emma SirDayBat rbarraud dozzie pflanze gwatt ober cross fgudin timwis nevermind ullbeking DeeEff__ evhan lbtjp Blkt Urfin r3x5 dpk Ekho clog amoe LeoNerd duncanm bashbjorn friscosam ec 2020-04-14T04:43:05Z names: kwmiebach englishm moon-child nisstyre fizzie davl sp1ff hugo yumh uplime lloda stephe fowlduck samth jyc_ physpi jcowan bchar d_run rann terrorjack___ delucks wigust- kbtr_ ineiros DerGuteMoritz 2020-04-14T04:45:46Z klovett joined #scheme 2020-04-14T04:50:04Z klovett quit (Ping timeout: 256 seconds) 2020-04-14T04:50:31Z klovett joined #scheme 2020-04-14T04:55:59Z lockywolf_ quit (Ping timeout: 258 seconds) 2020-04-14T05:00:14Z drakonis1 quit (Quit: WeeChat 2.8) 2020-04-14T05:00:42Z torbo quit (Remote host closed the connection) 2020-04-14T05:01:19Z lockywolf joined #scheme 2020-04-14T05:01:34Z xuxx quit (Ping timeout: 240 seconds) 2020-04-14T05:05:56Z klovett quit (Ping timeout: 256 seconds) 2020-04-14T05:09:10Z ahungry quit (Remote host closed the connection) 2020-04-14T05:15:49Z keep_learning_M joined #scheme 2020-04-14T05:16:41Z klovett joined #scheme 2020-04-14T05:17:26Z keep_learning joined #scheme 2020-04-14T05:18:00Z keep_learning_M quit (Client Quit) 2020-04-14T05:18:00Z keep_learning quit (Remote host closed the connection) 2020-04-14T05:18:08Z gravicappa joined #scheme 2020-04-14T05:18:22Z keep_learning joined #scheme 2020-04-14T05:37:06Z klovett quit (Ping timeout: 256 seconds) 2020-04-14T05:37:57Z klovett joined #scheme 2020-04-14T05:42:22Z klovett quit (Ping timeout: 258 seconds) 2020-04-14T05:46:43Z klovett joined #scheme 2020-04-14T05:49:38Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-14T05:50:08Z gioyik quit (Ping timeout: 256 seconds) 2020-04-14T05:50:55Z ober quit (Remote host closed the connection) 2020-04-14T05:55:16Z gioyik joined #scheme 2020-04-14T05:58:35Z klovett quit (Remote host closed the connection) 2020-04-14T05:58:51Z klovett joined #scheme 2020-04-14T06:01:40Z jobol joined #scheme 2020-04-14T06:18:28Z theruran joined #scheme 2020-04-14T06:22:59Z klovett_ joined #scheme 2020-04-14T06:23:42Z Naptra joined #scheme 2020-04-14T06:24:34Z klovett quit (Ping timeout: 240 seconds) 2020-04-14T06:32:37Z johnmac joined #scheme 2020-04-14T06:33:52Z johnmac quit (Client Quit) 2020-04-14T07:11:58Z ggole joined #scheme 2020-04-14T07:22:37Z mdhughes quit (Ping timeout: 260 seconds) 2020-04-14T07:24:01Z _apg joined #scheme 2020-04-14T07:26:31Z mdhughes joined #scheme 2020-04-14T07:27:19Z moon-child quit (Quit: ZNC 1.7.4 - https://znc.in) 2020-04-14T07:28:19Z civodul joined #scheme 2020-04-14T07:34:24Z moon-child joined #scheme 2020-04-14T07:45:32Z CyDefect joined #scheme 2020-04-14T07:54:48Z CyDefect quit (Ping timeout: 256 seconds) 2020-04-14T07:55:28Z CyDefect joined #scheme 2020-04-14T07:59:11Z lockywolf joined #scheme 2020-04-14T08:00:44Z raingloom joined #scheme 2020-04-14T08:01:55Z longshi joined #scheme 2020-04-14T08:05:31Z lockywolf_ joined #scheme 2020-04-14T08:08:15Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-14T08:08:43Z germ13 quit (Ping timeout: 260 seconds) 2020-04-14T08:09:55Z ngz joined #scheme 2020-04-14T08:15:25Z kritixilithos joined #scheme 2020-04-14T08:24:39Z gioyik quit (Quit: WeeChat 2.8) 2020-04-14T08:26:23Z raingloom quit (Ping timeout: 250 seconds) 2020-04-14T08:28:25Z redeemed joined #scheme 2020-04-14T08:35:32Z lockywolf__ joined #scheme 2020-04-14T08:38:07Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-14T08:39:11Z Ericson2314 quit (Quit: killed) 2020-04-14T08:39:11Z siraben quit (Quit: killed) 2020-04-14T08:39:11Z Gnuxie[m] quit (Quit: killed) 2020-04-14T08:39:13Z mbakke quit (Quit: killed) 2020-04-14T08:39:23Z xavierm02 quit (Quit: killed) 2020-04-14T08:39:33Z amnesic[m] quit (Quit: killed) 2020-04-14T08:39:33Z keep-learning[m] quit (Quit: killed) 2020-04-14T08:39:36Z marmulak[m] quit (Quit: killed) 2020-04-14T08:39:36Z mouloud[m] quit (Quit: killed) 2020-04-14T08:39:36Z dieggsy quit (Quit: killed) 2020-04-14T08:41:10Z raingloom joined #scheme 2020-04-14T08:41:37Z nckx quit (Ping timeout: 264 seconds) 2020-04-14T08:42:10Z nckx joined #scheme 2020-04-14T08:49:05Z Gnuxie[m] joined #scheme 2020-04-14T08:58:07Z mbakke joined #scheme 2020-04-14T08:58:07Z Ericson2314 joined #scheme 2020-04-14T08:58:07Z dieggsy joined #scheme 2020-04-14T08:58:07Z amnesic[m] joined #scheme 2020-04-14T08:58:07Z mouloud[m] joined #scheme 2020-04-14T08:58:07Z keep-learning[m] joined #scheme 2020-04-14T08:58:07Z marmulak[m] joined #scheme 2020-04-14T08:58:07Z siraben joined #scheme 2020-04-14T08:58:14Z xavierm02 joined #scheme 2020-04-14T09:11:34Z xuxx joined #scheme 2020-04-14T09:14:08Z zig quit (Quit: WeeChat 1.9.1) 2020-04-14T09:27:39Z theruran quit (Quit: Connection closed for inactivity) 2020-04-14T09:28:51Z germ13 joined #scheme 2020-04-14T09:53:15Z lockywolf__ quit (Ping timeout: 260 seconds) 2020-04-14T10:13:47Z stux|work quit (Ping timeout: 260 seconds) 2020-04-14T10:14:15Z stux|work joined #scheme 2020-04-14T10:27:11Z lritter quit (Ping timeout: 258 seconds) 2020-04-14T10:35:34Z daviid quit (Ping timeout: 240 seconds) 2020-04-14T10:37:32Z epony quit (Ping timeout: 258 seconds) 2020-04-14T10:45:05Z ngz quit (Remote host closed the connection) 2020-04-14T10:48:07Z kritixilithos quit (Remote host closed the connection) 2020-04-14T10:48:44Z kritixilithos joined #scheme 2020-04-14T11:00:17Z nikita` left #scheme 2020-04-14T11:06:20Z raingloom quit (Remote host closed the connection) 2020-04-14T11:06:45Z raingloom joined #scheme 2020-04-14T11:21:28Z foof: jcowan: sorry I'm not around more, life is busy 2020-04-14T11:25:31Z sarna joined #scheme 2020-04-14T11:25:37Z lockywolf joined #scheme 2020-04-14T11:26:15Z sarna: hey, why are strings in scheme mutable? almost all the new languages have immutable strings and OCaml switched from mutable to immutable long ago 2020-04-14T11:26:34Z sarna: are there any unique advantages for scheme arising from mutable strings? 2020-04-14T11:28:30Z ecraven: scheme is definitely not a "new language" 2020-04-14T11:29:29Z sarna: yeah, but is r7rs that old? it has mutable strings :) 2020-04-14T11:30:03Z epony joined #scheme 2020-04-14T11:30:15Z sarna: OCaml, Java, C#, Python, ... arenโ€™t new either 2020-04-14T11:30:38Z ecraven: well, for some applications, of course mutable strings are nice 2020-04-14T11:30:45Z sarna: depending on how you define โ€œnewโ€ anyway. a better word would be โ€œmodernโ€ I think 2020-04-14T11:31:22Z sarna: yeah, but from what Iโ€™ve seen immutable strings are simply better in the majority of applications 2020-04-14T11:31:36Z sarna: you can share duplicates and whatnot 2020-04-14T11:32:35Z epony quit (Remote host closed the connection) 2020-04-14T11:34:15Z longshi: sarna: some implementations have immutable-strings available, but not default. for example chez 2020-04-14T11:34:41Z sarna: longshi: yeah, racketโ€™s literals are immutable too, but other strings are not 2020-04-14T11:34:46Z longshi: you have a function string->immutable-string ready to use 2020-04-14T11:34:50Z sarna: I wondered why, and it seems like scheme heritage 2020-04-14T11:37:11Z longshi: Well, introducing a immutable strings as a default is a big breaking change, that's a pretty solid reason not to do that. Other than that, i don't know. I don't remember rnrs well enough to know if there is some rationale for mutable strings elucidated there 2020-04-14T11:38:01Z sarna: well, OCaml folks managed to do it :) 2020-04-14T11:38:05Z sarna: understandable though 2020-04-14T11:45:29Z mdhughes: It's useful for making string-buffers to build strings in, except you have to reallocate to resize. But without that, you're stuck using vector or u8vector. 2020-04-14T11:46:25Z mdhughes: And where other langs use string keys for things, Scheme uses symbols, which are immutable and interned. 2020-04-14T11:49:32Z sarna: oh yeah, symbols. thatโ€™s a good point 2020-04-14T11:50:14Z jcowan: THe rationale for mutable string is simply backward compatibility 2020-04-14T11:50:15Z f8l quit (Remote host closed the connection) 2020-04-14T11:51:34Z f8l joined #scheme 2020-04-14T11:57:18Z johnmac joined #scheme 2020-04-14T12:03:54Z jcowan: The history is actually kind of odd: in R2RS (1985), the first report to mention strings, it says that in some implementations they are mutable, in others immutable. R3RS (late '86 or early '87) says the same. 2020-04-14T12:07:59Z jcowan: Only in R4RS (published in 1991 but based on discussions in 1988) do strings definitely become mutable. THis is the same timeframe as Perl and Python. 2020-04-14T12:08:24Z jcowan: CL has always had mutable strings, because strings are just a special case of arrays. 2020-04-14T12:15:37Z sarna: I think Perl has mutable strings too 2020-04-14T12:17:49Z lockywolf_ joined #scheme 2020-04-14T12:17:49Z pilne quit (Read error: Connection reset by peer) 2020-04-14T12:19:24Z pilne joined #scheme 2020-04-14T12:20:38Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-14T12:27:24Z xuxx: I'm doing scheme using racket, is this https://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref.pdf a documentation that is good for that ? I'm lost with racket, mit, gnu .. 2020-04-14T12:30:31Z wasamasa: no, that's the mit-scheme documentation, not the racket one 2020-04-14T12:30:36Z longshi: no, racket is a pretty different beast than r5rs- or r6rs-compatible scheme 2020-04-14T12:30:52Z wasamasa: https://docs.racket-lang.org/ 2020-04-14T12:31:09Z longshi: https://docs.racket-lang.org/reference/ 2020-04-14T12:31:22Z longshi: wasamasa beat me to it :P 2020-04-14T12:34:16Z xuxx: is that the right pages https://docs.racket-lang.org/guide/index.html for beginner ? 2020-04-14T12:35:51Z longshi: that's good, but you can start with https://docs.racket-lang.org/quick/index.html if you want an overview 2020-04-14T12:36:06Z longshi: xuxx:do you have some experience with coding? 2020-04-14T12:37:17Z xuxx: longshi: yes 2020-04-14T12:46:15Z pilne quit (Read error: Connection reset by peer) 2020-04-14T12:46:28Z xkapastel joined #scheme 2020-04-14T12:49:43Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-14T12:50:00Z longshi: Then the guide will probably better for you 2020-04-14T12:50:37Z pilne joined #scheme 2020-04-14T12:51:11Z longshi: Although, full disclosure, i don't really use racket much, hence i don't frequent its documentation site that often -- i skimmed. 2020-04-14T12:52:45Z nly left #scheme 2020-04-14T13:05:31Z webshinra joined #scheme 2020-04-14T13:05:54Z xuxx quit (Ping timeout: 256 seconds) 2020-04-14T13:14:08Z xuxx joined #scheme 2020-04-14T13:16:39Z johnmac: how would i count just parenthesis of a list in scheme 2020-04-14T13:19:21Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-14T13:20:28Z wasamasa: the depth? 2020-04-14T13:21:26Z johnmac: No like, if you had `(()) as a list it would return 4 parenthesis 2020-04-14T13:21:38Z johnmac: maybe depth not familiar with the term 2020-04-14T13:21:55Z johnmac: would return "4" if you gave it `(()) as input 2020-04-14T13:22:17Z wasamasa: and what would the result of '("()") be? 2020-04-14T13:22:38Z johnmac: I believe it would still be 4 2020-04-14T13:22:58Z wasamasa: then there's no reason to use list processing here 2020-04-14T13:23:24Z kritixilithos joined #scheme 2020-04-14T13:23:28Z wasamasa: read it in as a string, iterate over each char and increment for every parenthesis char encountered 2020-04-14T13:42:58Z xuxx quit (Quit: Lost terminal) 2020-04-14T13:45:54Z mouloud[m]: What is the best SDL bindings for Chez? 2020-04-14T13:46:30Z wasamasa: do you even have the luxury of multiple to choose from? 2020-04-14T13:57:39Z rain joined #scheme 2020-04-14T14:00:35Z raingloom quit (Ping timeout: 260 seconds) 2020-04-14T14:01:08Z johnmac quit (Quit: Connection closed) 2020-04-14T14:02:52Z wasamasa: wow, it indeed appears you do have a choice besides using thunderchez: https://github.com/steven741/chez-sdl 2020-04-14T14:04:07Z raingloom joined #scheme 2020-04-14T14:04:47Z rain quit (Ping timeout: 260 seconds) 2020-04-14T14:05:48Z wasamasa: you could even try sdl2 from snowfort via akku, except no docs 2020-04-14T14:06:03Z wasamasa: doing lisp stuff is always an adventure, embrace it 2020-04-14T14:06:08Z daviid joined #scheme 2020-04-14T14:26:57Z longshi left #scheme 2020-04-14T14:30:17Z mdhughes: mouloud[m]: I'm using thunderchez. And having some real complexities with some of the APIs, but it does "just work" and has all of the APIs mapped. 2020-04-14T14:32:13Z acarrico quit (Quit: Leaving.) 2020-04-14T14:37:17Z lisper29 joined #scheme 2020-04-14T14:42:32Z teardown quit (Read error: Connection reset by peer) 2020-04-14T14:47:23Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-14T14:58:19Z lockywolf__ joined #scheme 2020-04-14T15:00:26Z brendyyn quit (Ping timeout: 256 seconds) 2020-04-14T15:00:53Z lockywolf_ quit (Ping timeout: 258 seconds) 2020-04-14T15:05:15Z Riastradh: sarna: Why are strings in Scheme mutable? Hysterical raisins. It was a mistake of early design and nobody has gone to the trouble of fixing it -- which is a lot of trouble because it's not like you can just change one compiler and be done with it. 2020-04-14T15:05:24Z lockywolf_ joined #scheme 2020-04-14T15:07:39Z lockywolf__ quit (Ping timeout: 250 seconds) 2020-04-14T15:16:44Z pilne quit (Read error: Connection reset by peer) 2020-04-14T15:22:00Z pilne joined #scheme 2020-04-14T15:25:15Z Naptra quit (Remote host closed the connection) 2020-04-14T15:29:02Z pilne quit (Read error: Connection reset by peer) 2020-04-14T15:33:04Z pilne joined #scheme 2020-04-14T15:34:20Z retropikzel quit (Quit: Leaving) 2020-04-14T15:35:12Z pilne quit (Read error: Connection reset by peer) 2020-04-14T15:39:05Z pilne joined #scheme 2020-04-14T15:44:07Z marmulak[m]: everything should be both mutable and immutable, you decide 2020-04-14T15:46:34Z kritixilithos joined #scheme 2020-04-14T15:51:03Z kritixilithos quit (Ping timeout: 240 seconds) 2020-04-14T15:56:12Z kritixilithos joined #scheme 2020-04-14T15:59:52Z pilne quit (Read error: Connection reset by peer) 2020-04-14T16:02:01Z epony joined #scheme 2020-04-14T16:03:47Z mouloud[m]: I guess I have some reading to do 2020-04-14T16:03:57Z zaifir: Fortunately, we have (scheme text) now. 2020-04-14T16:04:57Z pilne joined #scheme 2020-04-14T16:12:52Z kritixilithos quit (Remote host closed the connection) 2020-04-14T16:13:50Z kritixilithos joined #scheme 2020-04-14T16:19:29Z redeemed quit (Ping timeout: 265 seconds) 2020-04-14T16:21:38Z raingloom quit (Ping timeout: 256 seconds) 2020-04-14T16:27:10Z jcowan: Riastradh: String mutability wasn't actually required until R4RS; before that, conforming Schemes could provide either. 2020-04-14T16:28:14Z kritixilithos quit (Remote host closed the connection) 2020-04-14T16:28:54Z kritixilithos joined #scheme 2020-04-14T16:29:21Z raingloom joined #scheme 2020-04-14T16:35:37Z raingloom quit (Ping timeout: 250 seconds) 2020-04-14T16:36:14Z Yardanico quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) 2020-04-14T16:36:46Z Yardanico joined #scheme 2020-04-14T16:42:29Z kopiyka quit (Remote host closed the connection) 2020-04-14T16:42:57Z kopiyka joined #scheme 2020-04-14T16:46:02Z jobol quit (Quit: Leaving) 2020-04-14T16:52:38Z ahungry joined #scheme 2020-04-14T16:55:28Z drakonis1 joined #scheme 2020-04-14T16:56:01Z zaifir: jcowan: Wow. What changed that the editors of R4 thought that was important to provide? 2020-04-14T16:57:50Z jcowan: Maclisp didn't have strings, only symbols, so they were by definition immutable. I would guess that by 1989-91, there were no Schemes left standing that made all strings immutable. 2020-04-14T16:58:21Z jcowan: string-set! had been part of the language since R2RS (1985), it just wasn't guaranteed to work. 2020-04-14T16:58:32Z mdhughes: I feel like Weinersmith is shitposting about Scheme here: https://www.smbc-comics.com/comic/punctuation 2020-04-14T16:58:51Z zaifir: jcowan: Interesting, thanks. 2020-04-14T17:00:12Z jcowan: R2RS is really the first document that can be called a Scheme standard. R0RS and R1RS were truly reports and referred only to the Sussman/Steele implementation. In particular, no procedures were defined in R1RS. 2020-04-14T17:04:53Z jcowan: Well, a few: procedure? was one, and enclose (which took an S-expression representing a procedure and an alist representing a lexical environment and returned a procedure), exit, and the old Scheme multiprocessing features {create,start,stop}!process. 2020-04-14T17:06:30Z drakonis1 is now known as drakonis 2020-04-14T17:26:28Z luni joined #scheme 2020-04-14T17:27:44Z pilne quit (Read error: Connection reset by peer) 2020-04-14T17:29:06Z drakonis quit (Quit: WeeChat 2.8) 2020-04-14T17:30:39Z seepel joined #scheme 2020-04-14T17:31:50Z pilne joined #scheme 2020-04-14T17:32:55Z drakonis joined #scheme 2020-04-14T17:36:26Z izh_ joined #scheme 2020-04-14T17:49:02Z skapata joined #scheme 2020-04-14T18:00:04Z lisper29 left #scheme 2020-04-14T18:06:23Z raingloom joined #scheme 2020-04-14T18:19:52Z seepel: Hi Scheme! Today I am thinking about types. I'm particularly intrigued by Henry Baker's Nimble Type Inferencer (http://home.pipeline.com/~hbaker1/TInference.html). Does anyone know if there has been any continuations of this type of work that I should look into? 2020-04-14T18:22:26Z klovett joined #scheme 2020-04-14T18:23:14Z ggole quit (Quit: Leaving) 2020-04-14T18:24:23Z klovett_ quit (Ping timeout: 250 seconds) 2020-04-14T18:28:38Z seepel: Or of course, by extension the Kaplan-Ullman type inferencer. 2020-04-14T18:31:10Z valjda joined #scheme 2020-04-14T18:46:54Z Riastradh quit (Ping timeout: 265 seconds) 2020-04-14T18:55:28Z kritixilithos quit (Quit: quit) 2020-04-14T18:56:58Z DKordic: seepel: You can ask in #ProgLangDesign as well. 2020-04-14T18:59:01Z germ13 quit (Read error: Connection reset by peer) 2020-04-14T18:59:26Z seepel: DKordic: Good tip, I'll venture over there! If anyone here has read either paper and has a little time I would still love to hear any opinions. I've come to trust the judgement of folks that hang around in #scheme :) 2020-04-14T18:59:28Z germ13 joined #scheme 2020-04-14T19:00:58Z mouloud[m]: seepel: you have not still read mine X') 2020-04-14T19:01:23Z klovett quit 2020-04-14T19:02:23Z seepel: mouloud[m]: I missed that entirely! 2020-04-14T19:03:05Z klovett joined #scheme 2020-04-14T19:03:42Z mouloud[m]: seepel: what are you up to? I do not know either. 2020-04-14T19:06:46Z seepel: Basically I'd like to build a more modern version of PreScheme (https://thintz.com/resources/prescheme-documentation) from Scheme48 (https://en.wikipedia.org/wiki/Scheme_48). 2020-04-14T19:08:52Z seepel: Rather than the semantics being close to C as they are in PreScheme, I'd like mine to be closer to Scheme proper. So I'm working on two pieces, type inferencing, and memory management. 2020-04-14T19:10:18Z seepel: I've built a prototype of the memory management side using Stacked Borrows (https://github.com/rust-lang/unsafe-code-guidelines/blob/master/wip/stacked-borrows.md). But I've so far had to restrict myself to constants, and lexical bindings only because I don't have any type information, so it's time to dig into the type inferencer. 2020-04-14T19:10:51Z seepel: I know that SBCL has done wonders with an algorithm that is also based on Kaplan-Ullman, so I'm trying to track down similar resources to help my journey. 2020-04-14T19:12:53Z mouloud[m]: how do you declare types in your scheme? 2020-04-14T19:13:58Z valjda quit (Quit: WeeChat 2.8) 2020-04-14T19:14:23Z valjda joined #scheme 2020-04-14T19:15:29Z seepel: Haven't decided yet, I was also going to ask for opinions on that. It seems there are two camps, CL seems to allow declarations that can be essentially placed in the same places that Scheme allows a nested define. And Racket/Chicken seem to place the type declaration as a sibling to the definition. 2020-04-14T19:17:01Z redeemed joined #scheme 2020-04-14T19:17:13Z mouloud[m]: there is another way, that would lead to code that can be run with a regular scheme, using `assume` https://srfi.schemers.org/srfi-145/ 2020-04-14T19:17:25Z mouloud[m]: a sort of assert. 2020-04-14T19:18:00Z mouloud[m]: if you (assume (my-type? obj)) at the very beginning of procedure body, and at the end you have the type information in a scheme compatible way 2020-04-14T19:18:18Z mouloud[m]: but I never implemented it, and it is not the point of SRFI-145. 2020-04-14T19:19:15Z mouloud[m]: or it is, I do not remember the details of srfi-145. 2020-04-14T19:20:25Z seepel: Oh, I hadn't dug into that srfi, thanks for pointing me to it! 2020-04-14T19:21:23Z mouloud[m]: The thing is that it would require, IUCC, a partial evalution of the whole program, to be able to tell what predicates (`foo?`) will predict 2020-04-14T19:21:40Z Riastradh joined #scheme 2020-04-14T19:21:45Z mouloud[m]: s/`foo?`/`my-type?`/ 2020-04-14T19:23:18Z seepel: I think I see that two. In Henry Baker's work I believe that the type inferencer doesn't even attempt to check most specification predicates (satisifies in CL). 2020-04-14T19:32:03Z luni quit (Quit: Leaving) 2020-04-14T19:32:19Z luni joined #scheme 2020-04-14T19:35:23Z mouloud[m]: mdhughes: sure thing, SDL2 API is big. 2020-04-14T19:36:58Z mouloud[m]: I will pick https://github.com/steven741/chez-sdl/ at least there is not `.ss` in it. 2020-04-14T19:37:23Z seepel quit (Read error: Connection reset by peer) 2020-04-14T19:37:41Z seepel joined #scheme 2020-04-14T19:39:51Z wraithoftheropes joined #scheme 2020-04-14T19:46:34Z wasamasa: mouloud[m]: why not thunderchez? 2020-04-14T19:47:37Z jcowan: why not thunderchicken?' 2020-04-14T19:49:16Z theruran joined #scheme 2020-04-14T19:51:01Z germ13 quit (Read error: Connection reset by peer) 2020-04-14T19:51:26Z germ13 joined #scheme 2020-04-14T20:00:23Z CyDefect quit (Ping timeout: 260 seconds) 2020-04-14T20:03:46Z CyDefect joined #scheme 2020-04-14T20:06:16Z CyDefect quit (Client Quit) 2020-04-14T20:09:01Z germ13 quit (Read error: Connection reset by peer) 2020-04-14T20:09:25Z germ13 joined #scheme 2020-04-14T20:17:02Z sz0 quit (Ping timeout: 246 seconds) 2020-04-14T20:17:52Z sz0 joined #scheme 2020-04-14T20:20:18Z sz0 quit (Max SendQ exceeded) 2020-04-14T20:20:53Z sz0 joined #scheme 2020-04-14T20:21:56Z aeth: jcowan: Is there an R7RS large for actually-useful numerical type predicates? That is: exact-integer? fixnum? bignum? etc. 2020-04-14T20:22:30Z aeth: flonum? is probably equivalent to inexact? although I guess it's an inexact? that has no imaginary component 2020-04-14T20:23:01Z aeth: short-, single-, double-, and long- can exist for -flonum? although most Schemes just have double-flonum 2020-04-14T20:23:22Z aeth: I'm not sure what the complex type (as in the actual thing, not the numerical concept of complex?) would be called 2020-04-14T20:26:26Z aeth: oh exact-integer? is included, the rest aren't. 2020-04-14T20:29:01Z valjda quit (Ping timeout: 264 seconds) 2020-04-14T20:30:46Z valjda joined #scheme 2020-04-14T20:44:49Z ngz joined #scheme 2020-04-14T20:50:34Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-14T20:51:22Z ahungry quit (Remote host closed the connection) 2020-04-14T20:53:36Z izh_ quit (Quit: Leaving) 2020-04-14T20:57:53Z wraithoftheropes left #scheme 2020-04-14T20:59:00Z aeth: Ah, I see, fixnum? and flonum? are in SRFI 143 and SRFI 144 in the Tangerine edition. I don't think there's a bignum? which is just (and (exact-integer? x) (not (fixnum? x))) 2020-04-14T21:03:30Z jcowan: note that two flonums can't be =, so if you have single and double floats, the double floats are the flonums 2020-04-14T21:03:39Z jcowan: (modulo NaN, of course) 2020-04-14T21:04:13Z aeth: jcowan: oh, interesting distinction then 2020-04-14T21:04:25Z aeth: so single-flonum? wouldn't be a "subtype" of flonum? in that case 2020-04-14T21:04:49Z aeth: they're just subtypes of inexact? I guess 2020-04-14T21:05:04Z aeth: well, specifically the inexact? without imaginary components 2020-04-14T21:05:27Z jcowan: I think if you have single-floats you'd want single-float?. 2020-04-14T21:05:39Z Riastradh: `two flonums can't be ='? 2020-04-14T21:06:30Z jcowan: no, that's wrong 2020-04-14T21:06:41Z Riastradh: `modulo NaN', hmm, I wonder what the field of computable numbers modulo the ideal generated by NaN looks like. 2020-04-14T21:06:54Z jcowan: the constraint is that all flonums must have the same range and precision 2020-04-14T21:07:02Z weinholt: (= (flmod 1.0 +nan.0) (flmod 1.0 +nan.0)) => #f 2020-04-14T21:07:06Z weinholt: it checks out 2020-04-14T21:09:44Z Riastradh: Speaking of which, here's a beautiful demonstration of a novel floating-point-based computing architecture built entirely out of NaN-gates: https://www.youtube.com/watch?v=5TFDG-y-EHs 2020-04-14T21:09:51Z Riastradh: (not NAND-gates; NaN-gates) 2020-04-14T21:10:44Z aeth: speaking of nan 2020-04-14T21:10:49Z aeth: obviously double float gets the nan/inf 2020-04-14T21:11:22Z lavaflow quit (Read error: Connection reset by peer) 2020-04-14T21:11:31Z aeth: but how do you represent the single float nan/inf? 2020-04-14T21:11:37Z gwatt: Riastradh: I don't know anything about NaN gates, but I kind of want that desktop environment 2020-04-14T21:11:38Z lavaflow joined #scheme 2020-04-14T21:11:44Z jcowan: NOthing is prescribed, but I would write +inf.0f 2020-04-14T21:11:57Z lavaflow quit (Client Quit) 2020-04-14T21:12:39Z jcowan: no, +inf.0f0 rather 2020-04-14T21:12:43Z aeth: jcowan: in common lisp there is no "f" suffix so 1f is the variable 1F and 1f0 is how you specify a single float 2020-04-14T21:12:56Z aeth: and since the priviliged float is configurable (and often set to double for convenience) you have to manually f0 or d0 everything 2020-04-14T21:13:08Z Riastradh: gwatt: I know, isn't the whole thing great? 2020-04-14T21:13:10Z aeth: *read-default-float-format* defaults to single-float 2020-04-14T21:13:21Z aeth: but it's a global so you never know which one you're going to get 2020-04-14T21:13:23Z Riastradh: aeth: what do you mean `the' 2020-04-14T21:13:45Z aeth: Riastradh: the float that gets the undecorated 1.0 is configurable in CL 2020-04-14T21:13:55Z Riastradh: (in `the single float nan/inf') 2020-04-14T21:13:59Z aeth: as opposed to 1.0f0 or 1.0d0 (or 1.0s0 or 1.0l0, if shorts or longs are included) 2020-04-14T21:14:08Z aeth: Riastradh: the symbol 2020-04-14T21:14:26Z aeth: Riastradh: you just pick a random NaN that sounds nice. inf obviously has two, +/- 2020-04-14T21:14:29Z jcowan: Someone wrote demo code that was the same in CL as in Scheme except that the numerical precision of the CL version was float32 and of the Scheme version float64. It ended with "It would be evil to use this to prove the superiority of Scheme over CL," or words to that effect. 2020-04-14T21:15:50Z aeth: Riastradh: I don't think there's a canonical NaN to use when reading in a NaN symbol. It doesn't really make sense to have one 2020-04-14T21:16:19Z xuxx joined #scheme 2020-04-14T21:16:22Z Riastradh: (flo:nan-payload +nan.123) 2020-04-14T21:16:23Z Riastradh: ;Value: 123 2020-04-14T21:16:23Z Riastradh: (flo:nan-quiet? +snan.123) 2020-04-14T21:16:23Z Riastradh: ;Value: #f 2020-04-14T21:16:52Z aeth: nan-playoad isn't in SRFI-144 2020-04-14T21:16:57Z aeth: *nan-payload 2020-04-14T21:17:06Z Riastradh: Not my fault! 2020-04-14T21:18:45Z Riastradh: (flo:sign-negative? -snan.456) 2020-04-14T21:18:45Z Riastradh: ;Value: #t 2020-04-14T21:20:24Z aeth: Riastradh: what language is that? 2020-04-14T21:20:48Z Riastradh: MIT Scheme 2020-04-14T21:22:34Z aeth: ah 2020-04-14T21:22:40Z seepel: aeth: as far as the canonical NaN, in dynamic type systems that use NaN boxing there usually (if not always) is a canonical NaN right? 2020-04-14T21:23:01Z Riastradh: If I were doing it signalling NaNs would just be boxed themselves, not canonicalized. 2020-04-14T21:23:11Z redeemed quit (Quit: q) 2020-04-14T21:23:14Z seepel: Sorry to be pedantic, but otherwise my mind will be blown :) 2020-04-14T21:23:43Z aeth: seepel: I think "most" use tagged boxing, which then boxes doubles unless they can infer enough (or they're declared in some way) 2020-04-14T21:23:55Z aeth: rather than storing things in doubles 2020-04-14T21:24:14Z Riastradh: aeth: I think seepel was specifically asking about NaN-boxing. 2020-04-14T21:24:32Z aeth: I'm guessing there has to be at least one NaN that's still a NaN 2020-04-14T21:25:19Z Riastradh: Well, usually you'll represent quiet NaNs by quiet NaNs, and non-fp values by signalling NaNs, so that attempting to do arithmetic on non-fp values traps. 2020-04-14T21:25:58Z Riastradh: So the only fp values that don't represent themselves are the signalling NaNs, which you can represent by a signalling NaN storing a pointer into the heap. 2020-04-14T21:26:00Z seepel: Ahhh, that does sound familiar. 2020-04-14T21:26:29Z jcowan: There are two ways to nanbox on 64-bit machines 2020-04-14T21:26:35Z Riastradh: Requiring extra memory for each signalling NaN you want to represent isn't that much of a burden; doing anything with signalling NaNs is costly anyway. 2020-04-14T21:26:40Z jcowan: one that favors doubles, one that favors pointers 2020-04-14T21:28:05Z Riastradh: jcowan: The difference between nanboxing and nunboxing is immterial for the purposes of seepel's question. 2020-04-14T21:28:26Z seepel: Well I'm glad I asked! :) So to recap, it's not that there is a canonical NaN, it's that there are two classes of NaN? 2020-04-14T21:28:28Z Riastradh: Either way you need to carve out _some_ space of fp representations for non-fp values. 2020-04-14T21:28:54Z Riastradh: seepel: There are 2^53 - 2 NaNs in binary64 arithmetic. 2020-04-14T21:29:07Z jcowan: seepel: Yes, and by default only the quiet NaNs are generated 2020-04-14T21:29:35Z jcowan: (which is half the space) 2020-04-14T21:29:39Z Riastradh: Right, and the other half are useful for representing non-fp values because arithmetic on them raises the invalid-operation exception. 2020-04-14T21:30:07Z Riastradh: Which on many machines (pretty much everything modern except arm64, I think) can be arranged to cause a trap. 2020-04-14T21:30:44Z Riastradh: So generally you choose from those 2^52 - 1 to represent pointers. 2020-04-14T21:30:52Z Riastradh: (and, perhaps, fixnums, and other non-fp values) 2020-04-14T21:31:05Z seepel: This is great, thanks! I learn something new here everyday! 2020-04-14T21:31:14Z jcowan: since pointers to user space are (except on Solaris) no larger than 2^47 - 1. 2020-04-14T21:32:10Z lavaflow joined #scheme 2020-04-14T21:34:26Z seepel: That part I did remember. If memory serves, in particular on Solaris it is mmap that may return large pointers. 2020-04-14T21:39:35Z jcowan: yes, in all other OSes I know of, negative addresses are reserved for the kernel 2020-04-14T21:46:20Z gravicappa quit (Ping timeout: 256 seconds) 2020-04-14T21:52:37Z valjda quit (Quit: WeeChat 2.8) 2020-04-14T21:54:28Z Yardanico_ joined #scheme 2020-04-14T21:55:52Z Yardanico quit (Read error: Connection reset by peer) 2020-04-14T21:58:02Z seepel: Fun stuff 2020-04-14T22:07:49Z lritter joined #scheme 2020-04-14T22:25:41Z xkapastel joined #scheme 2020-04-14T22:27:09Z klovett_ joined #scheme 2020-04-14T22:29:14Z klovett quit (Ping timeout: 240 seconds) 2020-04-14T22:50:44Z luni quit (Quit: Connection closed) 2020-04-14T22:58:50Z Yardanico_ quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) 2020-04-14T22:59:23Z Yardanico joined #scheme 2020-04-14T23:32:13Z keep_learning joined #scheme 2020-04-14T23:33:49Z torbo joined #scheme 2020-04-14T23:35:27Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-14T23:40:25Z germ13 quit (Ping timeout: 264 seconds) 2020-04-14T23:41:53Z anticrisis joined #scheme 2020-04-14T23:51:14Z TCZ joined #scheme 2020-04-14T23:54:38Z Yardanico quit (Read error: Connection reset by peer) 2020-04-14T23:58:36Z f8l quit (Remote host closed the connection) 2020-04-14T23:59:50Z f8l joined #scheme 2020-04-14T23:59:51Z Yardanico joined #scheme 2020-04-14T23:59:54Z teardown joined #scheme 2020-04-15T00:08:01Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-15T00:23:51Z f8l quit (Remote host closed the connection) 2020-04-15T00:25:06Z f8l joined #scheme 2020-04-15T00:34:23Z SGASAU quit (Remote host closed the connection) 2020-04-15T00:36:55Z SGASAU joined #scheme 2020-04-15T00:42:15Z seepel quit (Ping timeout: 260 seconds) 2020-04-15T00:58:52Z lockywolf joined #scheme 2020-04-15T00:59:00Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-15T00:59:48Z [X-Scale] joined #scheme 2020-04-15T00:59:58Z [X-Scale] is now known as X-Scale 2020-04-15T01:07:47Z ngz quit (Ping timeout: 272 seconds) 2020-04-15T01:13:41Z lockywolf_ joined #scheme 2020-04-15T01:15:48Z ahungry joined #scheme 2020-04-15T01:16:28Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-15T01:26:37Z lritter quit (Ping timeout: 265 seconds) 2020-04-15T01:27:03Z madage quit (Ping timeout: 240 seconds) 2020-04-15T01:27:06Z lritter joined #scheme 2020-04-15T01:27:06Z fradet joined #scheme 2020-04-15T01:27:49Z madage joined #scheme 2020-04-15T01:28:58Z TCZ quit (Quit: Leaving) 2020-04-15T02:17:13Z lockywolf__ joined #scheme 2020-04-15T02:19:52Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-15T02:20:34Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-15T02:35:36Z ahungry quit (Remote host closed the connection) 2020-04-15T02:42:41Z lockywolf_ joined #scheme 2020-04-15T02:45:04Z lockywolf__ quit (Ping timeout: 258 seconds) 2020-04-15T02:54:03Z brendyyn joined #scheme 2020-04-15T02:56:23Z cantstanya quit (Ping timeout: 240 seconds) 2020-04-15T02:59:29Z cantstanya joined #scheme 2020-04-15T03:01:48Z lockywolf__ joined #scheme 2020-04-15T03:04:14Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-15T03:09:54Z raingloom quit (Ping timeout: 256 seconds) 2020-04-15T03:12:06Z ahungry joined #scheme 2020-04-15T03:54:49Z drakonis quit (Quit: WeeChat 2.8) 2020-04-15T04:11:01Z retropikzel joined #scheme 2020-04-15T04:37:36Z seepel joined #scheme 2020-04-15T04:44:18Z seepel quit (Ping timeout: 265 seconds) 2020-04-15T05:07:36Z skapata quit (Remote host closed the connection) 2020-04-15T05:32:54Z xuxx quit (Ping timeout: 240 seconds) 2020-04-15T05:42:21Z ahungry quit (Remote host closed the connection) 2020-04-15T05:56:01Z gravicappa joined #scheme 2020-04-15T06:00:37Z klovett_ quit (Remote host closed the connection) 2020-04-15T06:02:49Z ober joined #scheme 2020-04-15T06:03:15Z Naptra joined #scheme 2020-04-15T06:04:16Z klovett joined #scheme 2020-04-15T06:08:35Z klovett quit (Remote host closed the connection) 2020-04-15T06:13:55Z klovett joined #scheme 2020-04-15T06:17:23Z torbo quit (Remote host closed the connection) 2020-04-15T06:21:32Z jobol joined #scheme 2020-04-15T06:22:54Z klovett quit (Ping timeout: 265 seconds) 2020-04-15T06:36:01Z CyDefect joined #scheme 2020-04-15T06:42:10Z klovett joined #scheme 2020-04-15T06:54:17Z revtintin joined #scheme 2020-04-15T06:56:05Z ggole joined #scheme 2020-04-15T07:03:56Z revtintin quit (Ping timeout: 256 seconds) 2020-04-15T07:23:30Z revtintin joined #scheme 2020-04-15T07:24:26Z mouloud[m]: mdhughes: I read there is also GLFW that could be a replacement for SDL? What do you think about it? 2020-04-15T07:25:48Z mdhughes: I don't like doing GL (I can, but it's annoying), and can't on Mac post-Catalina, and it doesn't handle audio at all. 2020-04-15T07:27:05Z mdhughes: It supports Vulkan, too, but now you have two dependenciesโ€ฆ 2020-04-15T07:28:04Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T07:28:39Z klovett joined #scheme 2020-04-15T07:33:13Z klovett quit (Ping timeout: 264 seconds) 2020-04-15T07:35:34Z mouloud[m]: I am starting to understand why browser exists. 2020-04-15T07:36:14Z mouloud[m]: I already tried to learn the ways of OpenGL, it is very big. 2020-04-15T07:36:52Z mdhughes: There is https://www.raylib.com but I haven't played with it yet. 2020-04-15T07:37:20Z mdhughes: And yeah, I wrote my 7DRL game in Javascript, and it was super easy. But I've written larger programs in it, and the performance becomes a real problem. 2020-04-15T07:37:57Z klovett joined #scheme 2020-04-15T07:38:05Z mdhughes: Current release at http://mysticdungeon.club/portal/ 2020-04-15T07:41:58Z anticrisis quit (Read error: Connection reset by peer) 2020-04-15T07:49:43Z xuxx joined #scheme 2020-04-15T07:51:21Z klovett quit (Ping timeout: 265 seconds) 2020-04-15T07:51:54Z klovett joined #scheme 2020-04-15T07:56:27Z klovett quit (Ping timeout: 250 seconds) 2020-04-15T07:58:04Z amoe quit (Quit: leaving) 2020-04-15T07:58:24Z amoe joined #scheme 2020-04-15T08:01:07Z mouloud[m]: both links are neat, thanks for sharing 2020-04-15T08:01:12Z klovett joined #scheme 2020-04-15T08:05:28Z mouloud[m]: What I wanted / want is to access the monitors as a set of arrays of rgba pixels. There is indeed http://docs.gl/gl2/glDrawPixels but to get there requires lot of efforts 2020-04-15T08:05:59Z SGASAU quit (Remote host closed the connection) 2020-04-15T08:06:24Z mouloud[m]: I looked into freebsd too, to see how to implement https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/TerminalsCowan.md without relying on terminal escape sequence, but I had no luck on that side too. 2020-04-15T08:06:54Z SGASAU joined #scheme 2020-04-15T08:09:54Z mouloud[m]: that would be not portable anyway. 2020-04-15T08:10:12Z klovett quit (Ping timeout: 265 seconds) 2020-04-15T08:10:48Z klovett joined #scheme 2020-04-15T08:11:46Z wraithoftheropes joined #scheme 2020-04-15T08:12:26Z civodul joined #scheme 2020-04-15T08:14:39Z revtintin quit (Ping timeout: 250 seconds) 2020-04-15T08:15:20Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T08:18:28Z aeth: OpenGL is actually really small if you use modern, shader-using OpenGL. Well, most of the complexity/API moved into the shaders. 2020-04-15T08:18:50Z aeth: It's a bit weird because it's an API where you ignore 90% of it not because you might need it later but because it's really old. 2020-04-15T08:19:06Z wasamasa: you have something explaining it that way? 2020-04-15T08:19:13Z wasamasa: might be my fault for trying v2.1 2020-04-15T08:19:29Z wasamasa: because ancient thinkpad 2020-04-15T08:19:33Z klovett joined #scheme 2020-04-15T08:19:46Z wasamasa: my current one should be better because it theoretically supports vulkan 2020-04-15T08:24:45Z ecraven: aeth: if you add in all of the shader language, it isn't that simple or small any longer, is it, though? 2020-04-15T08:28:08Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T08:29:03Z klovett joined #scheme 2020-04-15T08:30:51Z aeth: wasamasa: 3.2 is the start of modern OpenGL, although usually people use 3.3 if they want 3.x because "in theory" any computer that supports 3.2 should support 3.3 (but there's always someone on IRC with a weird setup where that isn't true) 2020-04-15T08:31:10Z wasamasa: ok, good to know 2020-04-15T08:31:14Z aeth: but it certainly isn't explained well... 2020-04-15T08:31:16Z wasamasa: let me test what this machine supports 2020-04-15T08:32:23Z aeth: ecraven: the shader language is actually kind of a simple language... a lot of the complexity is from pretending that it's anything like C, so compiling to GLSL removes some of that. e.g. the shaders all have a fake main() and they have a linker etc. for no good reason. Shaders are more like functions that can have helper functions imo. 2020-04-15T08:32:56Z wasamasa: huh, it seems my example program already used 3.2 core 2020-04-15T08:33:07Z aeth: wasamasa: that's modern OpenGL then 2020-04-15T08:33:21Z wasamasa: I suspect the test program wasn't written in a modern way at all 2020-04-15T08:33:31Z aeth: I think in theory you can just enable the rest from there through extensions, just like you can enable R7RS-large from R7RS-small through SRFIs 2020-04-15T08:33:36Z wasamasa: so the x220 supports it, maybe the x200 doesn't 2020-04-15T08:34:20Z aeth: I don't think anyone really knows a 100% correct way to use OpenGL 3.x though 2020-04-15T08:34:25Z aeth: At least, they're not explaining it well 2020-04-15T08:34:42Z wasamasa: https://github.com/wasamasa/oiio/blob/master/examples/gl-test.scm 2020-04-15T08:34:46Z aeth: The basic concept is really simple, you just have buffers of numbers that you send to the GPU, to compute on the GPU instead 2020-04-15T08:35:33Z aeth: wasamasa: almost, not quite 2020-04-15T08:35:54Z mdhughes: You can't really do a framebuffer for modern monitors, too much data to move out of RAM to GPU every frame. 2020-04-15T08:36:25Z wasamasa: and then there's this thing I've ported: https://github.com/wasamasa/gl-life/blob/master/gl-life.scm 2020-04-15T08:37:55Z wasamasa: where the logic is too convoluted (no pun intended) for me to understand 2020-04-15T08:38:24Z aeth: wasamasa: (1) GLU is deprecated since 3.1, (2) it's been a while but you need to be doing a thing that gives you location with the in variables 2020-04-15T08:38:30Z aeth: (in the shaders) 2020-04-15T08:39:20Z wasamasa: oh, that's from a different library 2020-04-15T08:39:29Z wasamasa: https://www.upyum.com/cgit.cgi/gl-utils/ 2020-04-15T08:39:53Z wasamasa: it's not actually glu 2020-04-15T08:39:55Z aeth: ah 2020-04-15T08:40:02Z aeth: I was wondering how it interoperated, anyway 2020-04-15T08:40:09Z aeth: with the whole core thing 2020-04-15T08:40:21Z ecraven: don't people use glfw these days? 2020-04-15T08:40:30Z ecraven: with epoxy, or something like it? 2020-04-15T08:41:00Z aeth: mdhughes: is the framebuffer thing a reply to my comment? No, I wasn't talking about framebuffers, I was talking about Buffer Objects. https://www.khronos.org/opengl/wiki/Buffer_Object 2020-04-15T08:41:25Z wasamasa: ecraven: this demo does use epoxy and glfw 2020-04-15T08:41:31Z aeth: Generally, you're transferring huge meshes/textures/etc. at the start (or, I guess, streaming it constantly or sending it in level loads if you're doing something AAA-scale) 2020-04-15T08:41:40Z aeth: But per-frame you're just saying "oh, hey, x moved" 2020-04-15T08:41:47Z wasamasa: yeah, that makes sense 2020-04-15T08:41:49Z revtintin joined #scheme 2020-04-15T08:42:10Z mdhughes: No, mouloud[m]'s "monitors as a set of arrays of rgba pixels", you just can't do that generally. 2020-04-15T08:42:13Z wasamasa: I kept thinking that updating geometry at every frame makes no sense at all 2020-04-15T08:42:17Z ecraven: I'm using epoxy and glfw for the chez opengl stuff I do, works very well 2020-04-15T08:42:18Z aeth: mdhughes: ah, OK, yes, absolutely 2020-04-15T08:42:34Z wasamasa: instead you should be making the shader smarter and send coordinates or something 2020-04-15T08:42:50Z aeth: old school CPU-bound 2D rendering doesn't scale well to 4k in multiple ways 2020-04-15T08:43:00Z wasamasa: but that would require actually understanding what I'm doing :D 2020-04-15T08:43:03Z mdhughes: You can redo geometry every frame, but you need to upload textures as early as possible, and reuse those when you can. 2020-04-15T08:43:21Z aeth: mdhughes: yeah 2020-04-15T08:44:34Z aeth: and for 2D you probably just want textured quads, not a true fake-screen... although I guess if you want to be a purist and only move a scaled up pixel in distances (so you never go between fake pixels) things can get tricky. 2020-04-15T08:45:11Z aeth: I guess the shader would probably round or something. 2020-04-15T08:46:01Z aeth: ecraven: SDL is overwhelmingly popular and in obscure languages (or, I guess, obscure Schemes) that might be all you can get. GLFW seems to be #2. 2020-04-15T08:48:01Z aeth: In theory all you need to do is wrap OpenGL or Vulkan and you can just directly do what SDL or GLFW does for the rest with direct FFI over Windows/macOS/Linux. In practice, I don't think anyone has done that, although I could be wrong. 2020-04-15T08:48:36Z aeth: Testing three backends sounds annoying... and by the time you're done Apple will remove OpenGL anyway. 2020-04-15T08:49:46Z mdhughes: The problem is Vulkan & OpenGL only give you graphics output. You still need input devices, which are an insane mess, and audio, which is even worse. SDL covers all of those. 2020-04-15T08:50:18Z aeth: Yes. Some game engines use SDL on Linux to avoid the extra work iirc. 2020-04-15T08:51:44Z aeth: Of course, SDL in particular probably gives you too much, especially if you're not writing C. 2020-04-15T08:51:56Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T08:52:06Z aeth: e.g. SDL has threads and a legacy 2D API 2020-04-15T08:52:47Z wasamasa: what would a modern one look like? 2020-04-15T08:53:00Z aeth: A modern SDL? 2020-04-15T08:53:06Z wasamasa: a modern 2D API 2020-04-15T08:53:23Z wasamasa: you're thinking of cairo, shaders or something else? 2020-04-15T08:53:28Z aeth: A modern 2D API is basically just a 3D API. 2020-04-15T08:53:47Z aeth: You want to be as close to 3D as possible so you can do things like lighting. 2020-04-15T08:53:53Z aeth: Some modern 2D games look really nice 2020-04-15T08:54:10Z wasamasa: just never tilt the camera :D 2020-04-15T08:54:37Z aeth: Well, I mean, yes. Modern 2D is just a 3D camera in a 3D scene that never tilts and is probably using a non-perspective matrix. :p 2020-04-15T08:54:48Z wasamasa: oh right, that too 2020-04-15T08:54:53Z wasamasa: no perspective distortion ever 2020-04-15T08:54:53Z mdhughes: Meh, computer screens are 2D, so our APIs should be, too. 2020-04-15T08:55:04Z wasamasa: maybe I should take some demos apart 2020-04-15T08:55:08Z wasamasa: see what they do 2020-04-15T08:55:09Z aeth: If done poorly, your 2D objects go between pixels, if done correctly, it looks like an old screen scaled up, but either way you get to bring in things from the 3D world like using multiple textures for lighting/etc. effects 2020-04-15T08:56:24Z aeth: unfortunately "sprite (lightning)" is a Wikipedia article so... it's a bit hard to find cool lighting effects for sprites :-p 2020-04-15T08:56:41Z aeth: here's one: http://www.snakehillgames.com/spritelamp/ 2020-04-15T08:57:02Z klovett joined #scheme 2020-04-15T08:57:11Z aeth: I mean, at that point it's basically 3D graphics but with either y or z removed. 2020-04-15T08:57:59Z wasamasa: ah, so that's why they simulate that effect on oldschool consoles 2020-04-15T08:58:02Z aeth: The brick wall effect is probably essentially the exact same effect you'd get looking at a brick wall in a 3D game from the right angle... 2020-04-15T08:58:48Z aeth: https://snakehillgames.files.wordpress.com/2013/10/stonewall_twoprofiles.gif 2020-04-15T08:59:18Z aeth: Just add some / /s, etc., around the square and you have a 3d game 2020-04-15T09:01:35Z klovett quit (Ping timeout: 260 seconds) 2020-04-15T09:06:06Z klovett joined #scheme 2020-04-15T09:07:43Z mdhughes quit 2020-04-15T09:10:38Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T09:15:39Z klovett joined #scheme 2020-04-15T09:16:05Z aoh quit (Ping timeout: 258 seconds) 2020-04-15T09:16:13Z aoh joined #scheme 2020-04-15T09:16:27Z DerGuteMoritz quit (Ping timeout: 258 seconds) 2020-04-15T09:16:47Z DerGuteMoritz joined #scheme 2020-04-15T09:18:07Z tdammers: if you're going to do actual oldschool 2D pixel graphics, you can of course still render on the CPU 2020-04-15T09:18:23Z tdammers: and then just push one texture per frame to the GPU and render that on a full-screen quad 2020-04-15T09:18:43Z tdammers: or write it directly to the framebuffer, that works too 2020-04-15T09:19:19Z tdammers: but in almost all scenario, just using 3D primitives while ignoring one dimension gives better performance 2020-04-15T09:19:52Z raingloom joined #scheme 2020-04-15T09:19:54Z klovett quit (Ping timeout: 240 seconds) 2020-04-15T09:23:10Z revtintin quit (Ping timeout: 256 seconds) 2020-04-15T09:27:19Z revtintin joined #scheme 2020-04-15T09:30:29Z mdhughes joined #scheme 2020-04-15T09:32:19Z mdhughes quit (Client Quit) 2020-04-15T09:32:23Z revtintin quit (Ping timeout: 260 seconds) 2020-04-15T09:32:29Z mdhughes joined #scheme 2020-04-15T09:33:03Z mdhughes: whee rebooting is fun, you should do it at least once every couple months. 2020-04-15T09:38:18Z notzmv quit (Remote host closed the connection) 2020-04-15T09:38:55Z mouloud[m]: Anyway, regarding graphics, the ramp up is very difficult. Especially since APIs are numerous and overlapping (opengl 2/3 vs. vulkan, sdl 1 / 2 vs glfw) etc... 2020-04-15T09:40:07Z mouloud[m]: it somewhat the same situation in browser land, but I do not mind it, since it is been years I have been doing it. 2020-04-15T09:40:42Z mouloud[m]: I guess, it is a good opportunity to improve my "learn to learn" skills. 2020-04-15T09:43:49Z notzmv joined #scheme 2020-04-15T09:47:19Z lockywolf__ quit (Ping timeout: 260 seconds) 2020-04-15T09:52:50Z klovett joined #scheme 2020-04-15T09:53:12Z aeth: The graphics API choice pretty simple. Vulkan is really hard and if you're starting out you won't need (or get) the performance it offers so unless you need to support macOS forever (through moltenVK) just use OpenGL 3 or 4. 2020-04-15T09:55:59Z aeth: Legacy, immediate mode OpenGL is the only thing that's "dead", and it's not really dead. Old things still use it. Popular tutorials were still teaching it 10 years ago. It's just a skill that's a dead end these days, even though every OS (except macOS) will probably support it forever. 2020-04-15T09:57:21Z klovett quit (Ping timeout: 250 seconds) 2020-04-15T09:58:52Z mdhughes: That's not really good advice. Windows has never really supported OpenGL, it's a third-party API, and performance is worse than DirectX. ON Mac, GL was the recommended API until they made/exposed Metal to get better performance. Linux is the only place GL is "standard" and best practice. 2020-04-15T10:00:06Z mdhughes: So if you're going to work a level up from native, you may as well do it through the least-bad, most-modern API you can get. That's Vulkan if you want to be low-level, or a framework like SDL, Source, Unity, etc. if you have real work to do. 2020-04-15T10:02:08Z klovett joined #scheme 2020-04-15T10:05:26Z aeth: My advice is standard advice in gamedev circles. In that, absolutely no one not making mobile games cares about "Metal", which is the least close to the metal of the three APIs since, well, it came first. 2020-04-15T10:06:22Z aeth: And, yes, if you really just want to make a game, using someone else's engine is by far the most recommended thing to do because if you are working in something like Scheme, you're probably going to spend years just writing an engine instead. 2020-04-15T10:06:48Z aeth: OpenGL is mostly fine on Windows, especially Nvidia on Windows. 2020-04-15T10:08:05Z aeth: You aren't going to get better performance out of a low-level API like Vulkan, Metal, or DX12. You just aren't. You or me or mouloud[m]. You can get better performance than with OpenGL or pre-12 DirectX, but it's hard. It's full time job for three months for someone who specializes in this hard. 2020-04-15T10:08:37Z aeth: They're aimed at game engines, not us. 2020-04-15T10:09:15Z aeth: s/of the three APIs/of the three low-level APIs/ 2020-04-15T10:09:34Z mdhughes: Everyone making iOS software now uses either Unity to ship fast, or Metal to ship something which is fast. 2020-04-15T10:10:17Z aeth: You can skip the second part. People use Unity, or they don't ship. Unless you're Electronic Arts and can do a custom engine. 2020-04-15T10:10:42Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T10:10:48Z mdhughes: And has been for several years now. I'm in "gamedev" circles, too, used to actually give a shit about the AAA side of it. 2020-04-15T10:11:19Z mdhughes: No, many smaller studios do just fine shipping on Metal, just as they do shipping DirectX if they're only for Windows or Xbox. 2020-04-15T10:11:33Z klovett joined #scheme 2020-04-15T10:12:27Z aeth: On platformers where there is competition in graphics APIs, low-level APIs like Vulkan don't actually improve performance by default. You have to work for it. We saw this when Vulkan rolled out. Sure, maybe on iOS, Metal is faster even if you're not a specialist. 2020-04-15T10:12:35Z mdhughes: The thing is, I've been doing graphics since the '80s, from framebuffer & display list hackery on the Atari 800 to this stuff. You can't hold on to old APIs like GL forever. 2020-04-15T10:12:35Z aeth: s/platformers/platforms/ 2020-04-15T10:13:19Z aeth: OpenGL isn't an old API, it's the entire history of graphics APIs until like 2014 or so in one "API" 2020-04-15T10:13:23Z mdhughes: It was *fantastic* when I was writing GL on the SGI Indigo. Far less so 30 years later. 2020-04-15T10:13:42Z aeth: s/one "API"/"one" API/ 2020-04-15T10:14:31Z mdhughes: Just saying "only use GL 3.x features" doesn't help, because those are still layered on older features, and none of them match the native APIs. 2020-04-15T10:14:44Z wraithoftheropes left #scheme 2020-04-15T10:15:45Z mdhughes: Vulkan isn't *that* hard to get started with, tho I wouldn't assign it as someone's first graphics API. You copy the triangle example, put in your drawing code instead of theirs, you're good to go in a day or so. 2020-04-15T10:15:52Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T10:16:05Z aeth: OpenGL is an incredible mess of complexity that's hard to implement well, but Nvidia *has* implemented it well on at least two OSes, and it's really hard for amateurs to do better than that with a low-level API like Vulkan... while also being more work to work with Vulkan. Now, I did say Nvidia several times already. There's a reason why it was AMD who pushed these new low-level APIs. 2020-04-15T10:16:06Z klovett joined #scheme 2020-04-15T10:16:54Z mdhughes: And GL's just as much of a giant mess to interact with directly. That's why everyone makes these giant frameworks on top. 2020-04-15T10:18:38Z aeth: I would say it's more "full of boilerplate" than "a giant mess". And, sure, that becomes a framework over time. Of course, Vulkan/etc. go in the wrong direction as far as that's concerned. 2020-04-15T10:18:57Z aeth: Maybe we'll see what OpenGL should have been, but on top of Vulkan. 2020-04-15T10:20:05Z aeth: Really, you just want (1) shaders and (2) buffers, and nearly everything else is boilerplate 2020-04-15T10:20:19Z klovett quit (Ping timeout: 250 seconds) 2020-04-15T10:21:02Z klovett joined #scheme 2020-04-15T10:21:13Z revtintin joined #scheme 2020-04-15T10:21:20Z aeth: And it's really weird how GLSL shaders decided to fake being individual C programs with mandatory global variables and a main()... and a "linker". So you don't even avoid boilerplate with just shaders. 2020-04-15T10:23:31Z mdhughes: Shaders are maybe the thing I'm happiest about never seeing again as I focus on indie 2D games. So much work to make a fake gel lamp or put bumps on a surfaceโ€ฆ or I could just draw some pixel art. 2020-04-15T10:24:27Z aeth: Eh, as I showed with http://www.snakehillgames.com/spritelamp/ these days 2D pixel art indie games do fancy shader stuff, too. The bar for top-tier pixel art in games has never been higher because of all of the competition. 2020-04-15T10:25:55Z aeth: 2D vector art is probably the new pixel art. 10 years ago, it made the game look like a cheap flash game, but these days there are lots of them, e.g. RimWorld and Prison Architect. 2020-04-15T10:26:30Z wasamasa: I'm clearly out of touch with games 2020-04-15T10:26:57Z aeth: so am I 2020-04-15T10:27:58Z aeth: I very rarely play major AAA releases. 2020-04-15T10:28:09Z mdhughes: I've never seen anyone ship anything with SpriteLamp. Sometimes people throw lit-left and lit-right versions of sprites in a game, but mostly just lighting or darkening tiles is more than enough. 2020-04-15T10:28:40Z aeth: mdhughes: That's just the fanciest example, especially in the search results. I don't know if anyone uses that in particular. 2020-04-15T10:29:15Z aeth: I have seen fancy enough lighting that definitely wouldn't be in an old pixel art game, though. Probably requiring shaders, too. 2020-04-15T10:29:43Z mdhughes: Right, but the state of the art of sprites is getting lower and lower-rez. Don't Starve is hand-drawn cels, and it looks kinda crap, but it's a deep game. 2020-04-15T10:31:30Z mdhughes: Stardew Valley would be renderable on a SEGA Genesis. Doesn't even do real shadows, just darkened circles. 2020-04-15T10:31:59Z aeth: well, very high quality sprites are very expensive... the highest quality ones are probably more expensive than just doing it in 3D... 2020-04-15T10:32:06Z aeth: animations are so hard with sprites. 2020-04-15T10:33:18Z mdhughes: You do end up paying for an artist, or spending more time on it yourself. But players like the precision of it. 2020-04-15T10:35:10Z mdhughes: The reason PortalWorlds looks the way it does, is Oryx had a 10x10 fully-animated monster set. The terrain & items for that set is minimal, I had to draw most of what's in the game, but the monsters look great. 2020-04-15T10:36:37Z mdhughes: If I needed 32x32 256-color 3+-frame animation, I'd be paying it off for years. 2020-04-15T10:37:16Z mdhughes: But the investment in making a 3D engine, getting models, getting seamless textures, level design, it's just as much or more. 2020-04-15T10:38:09Z partyclicker joined #scheme 2020-04-15T10:44:01Z klovett quit (Ping timeout: 264 seconds) 2020-04-15T10:45:39Z lockywolf__ joined #scheme 2020-04-15T10:47:03Z xuxx: someone told me that '() is false in a condition, but it doesn't work when I try. Is it normal ? 2020-04-15T10:47:23Z mdhughes: '() is true, because it's not #f 2020-04-15T10:47:40Z mdhughes: But in LISP, '() is false. 2020-04-15T10:48:00Z zaifir: *Common Lisp 2020-04-15T10:48:13Z minusoneplusone joined #scheme 2020-04-15T10:48:23Z klovett joined #scheme 2020-04-15T10:48:45Z mdhughes: I thought '() was false in most non-Scheme paren-based-languages? 2020-04-15T10:49:39Z xuxx: how can I get the type of something ? 2020-04-15T10:51:12Z mdhughes: Every type has a predicate, like boolean?, number?, etc. 2020-04-15T10:52:04Z zaifir: xuxx: There is no reflection in Scheme, e.g. we don't have a procedure like (object-type #t) ; => boolean 2020-04-15T10:52:28Z xuxx: Ok ty 2020-04-15T10:53:05Z xuxx: And is the toplevel means REPL ? 2020-04-15T10:54:31Z zaifir: Wow, this was on the front page of Wikibooks today: https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours 2020-04-15T10:55:29Z lockywolf_ joined #scheme 2020-04-15T10:57:39Z klovett quit (Ping timeout: 258 seconds) 2020-04-15T10:58:18Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-15T10:58:19Z klovett joined #scheme 2020-04-15T11:02:47Z klovett quit (Ping timeout: 250 seconds) 2020-04-15T11:03:22Z TheGreekOwl joined #scheme 2020-04-15T11:05:26Z zaifir: xuxx: The "toplevel" usually refers to the set of top-level โ€˜defineโ€™s in a Scheme program. 2020-04-15T11:07:09Z klovett joined #scheme 2020-04-15T11:08:00Z zaifir: xuxx: "the syntax of a top-level program is, simply, an import form followed by a sequence of definitions and expressions" https://www.scheme.com/tspl4/libraries.html 2020-04-15T11:11:11Z zaifir: xuxx: e.g. a file full of (display ...) expressions is a valid Scheme program. 2020-04-15T11:11:34Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T11:14:52Z lritter quit (Quit: Leaving) 2020-04-15T11:28:40Z minusoneplusone quit (Quit: Ping timeout (120 seconds)) 2020-04-15T11:33:41Z xuxx: zaifir: In my courses, it's said that the top level is a loop that read eval and print like REPL 2020-04-15T11:33:54Z xuxx: But that's not what I understand from your link 2020-04-15T11:35:07Z daviid quit (Ping timeout: 260 seconds) 2020-04-15T11:35:27Z mouloud[m]: top level is the s-exprs that follow the imports in `foo.scm` when you call say `scheme foo.scm` 2020-04-15T11:53:47Z klovett joined #scheme 2020-04-15T11:57:07Z lockywolf_ quit (Read error: Connection reset by peer) 2020-04-15T11:58:17Z lockywolf_ joined #scheme 2020-04-15T12:01:47Z xuxx: if i'm doing some code, is it okey to post that here to have some feedback ? 2020-04-15T12:03:14Z zaifir: xuxx: Of course. It's good to use a paste bin for things longer than a few lines. 2020-04-15T12:06:56Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T12:07:52Z klovett joined #scheme 2020-04-15T12:12:36Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T12:21:33Z klovett joined #scheme 2020-04-15T12:25:16Z xuxx: Should I always try to transofme a non-tail recursion into a tail recursion ? 2020-04-15T12:29:01Z revtintin quit (Ping timeout: 264 seconds) 2020-04-15T12:30:25Z klovett quit (Ping timeout: 258 seconds) 2020-04-15T12:31:17Z klovett joined #scheme 2020-04-15T12:33:47Z revtintin joined #scheme 2020-04-15T12:39:54Z klovett quit (Ping timeout: 265 seconds) 2020-04-15T12:40:33Z klovett joined #scheme 2020-04-15T12:41:30Z raingloom quit (Ping timeout: 256 seconds) 2020-04-15T12:43:15Z xuxx: https://pastebin.com/U2gfkW7j , I made this but how can I know which one should I use ? Is a tail recursion always better ? 2020-04-15T12:44:01Z revtintin quit (Ping timeout: 264 seconds) 2020-04-15T12:46:11Z sarna: xuxx: tail recursion can be optimized better 2020-04-15T12:47:43Z sarna: also, instead of `(cons foo (cons bar ( ...` you can just write `(list foo bar ...` 2020-04-15T12:47:46Z xuxx: sarna: in general or the one that I made ? 2020-04-15T12:48:20Z sarna: xuxx: in general. scheme guarantees tail-call optimization, which means tail-calls will be as cheap as a regular for loop 2020-04-15T12:49:12Z klovett quit (Ping timeout: 258 seconds) 2020-04-15T12:50:52Z pilne quit (Read error: Connection reset by peer) 2020-04-15T12:51:01Z TCZ joined #scheme 2020-04-15T12:51:18Z xuxx: sarna: do you think is there a way to do my tail-recursion without the reverse at the end ? 2020-04-15T12:53:07Z revtintin joined #scheme 2020-04-15T12:53:28Z TCZ left #scheme 2020-04-15T12:53:29Z lockywolf__ joined #scheme 2020-04-15T12:53:51Z xuxx: sarna: And I cannot do (list here instead, if I do that I will make list of list I think 2020-04-15T12:54:01Z TheGreekOwl quit (Quit: I must go, my planet needs me.) 2020-04-15T12:55:09Z sarna: ah, right 2020-04-15T12:55:47Z sarna: Iโ€™m on my phone, itโ€™s really hard to read this 2020-04-15T12:55:54Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-15T12:55:58Z pilne joined #scheme 2020-04-15T12:56:40Z klovett joined #scheme 2020-04-15T13:03:45Z sarna: xuxx: the second one *is* tail-recursive 2020-04-15T13:04:02Z sarna: or at least I think it is, feel free to correct me :) 2020-04-15T13:04:22Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-15T13:04:39Z xuxx: sarna: yes it is 2020-04-15T13:04:57Z sarna: oh you meant if itโ€™s possible to do it without the reverse 2020-04-15T13:04:58Z xuxx: sarna: But in this function I use (reverse) that's why i don't know if it's a better function 2020-04-15T13:05:24Z mdhughes: I'd do it with a named let and a couple cons's: https://paste.debian.net/1140553/ 2020-04-15T13:06:10Z sarna: mdhughes: scheme has `loop`? well thatโ€™s new for me 2020-04-15T13:06:23Z mdhughes: The list version ends up with a bunch of list junk at the end. 2020-04-15T13:06:57Z mdhughes: "loop" is just a name, named let is equivalent to letrec and calling a lambda, but a little simpler. 2020-04-15T13:07:27Z sarna: xuxx: in general with functions like these Iโ€™ve only seen them with `reverse` at the end, but I think itโ€™s a cheap operation in lisps 2020-04-15T13:07:30Z xuxx: mdhughes: wut you can do a loop in a let 2020-04-15T13:07:30Z xuxx: XD 2020-04-15T13:07:55Z sarna: oh you named the function `loop`, I see 2020-04-15T13:08:08Z xuxx: Oh you can do that in scheme 2020-04-15T13:09:42Z xuxx: mdhughes: So it's the same as my function but in another format of writting right ? 2020-04-15T13:09:50Z mdhughes: And yeah, cons at the front and reverse at the end is very cheap, much better than adding to a growable array in most languages. 2020-04-15T13:10:28Z mdhughes: xuxx: Yeah, it's just terser than the letrec form. And see how I've nested the cons's to avoid getting an extra list. 2020-04-15T13:11:23Z sarna: does scheme have `list*` like racket? 2020-04-15T13:11:24Z xuxx: Wait you did a let wih a function loop that do a recursion ? 2020-04-15T13:13:34Z mdhughes: `(let name [(x y)] BODY)` is the same as `(letrec [(name (lambda (x) BODY))] (name y))` with less paren-counting. 2020-04-15T13:13:53Z pilne quit (Read error: Connection reset by peer) 2020-04-15T13:15:32Z jcowan: mouloud[m]: TerminalsCowan is designed so that you don't need to use terminal escapes: you can just output all length * width characters of the new screen. How long does it take to display 1920 (or whatever) characters in an emulator? 2020-04-15T13:16:47Z jcowan: Alternatively, just assume X3.64 (aka "ANSI") terminal escape sequences: essentially every emulator except *ugh* the Windows console can do it. Even the latest version of the Windows console has that support as well. 2020-04-15T13:17:34Z revtintin quit (Ping timeout: 258 seconds) 2020-04-15T13:17:39Z mdhughes: EDIT CONFIG.SYS and add DEVICE=C:\ANSI.SYS 2020-04-15T13:17:53Z xuxx: mdhughes: But if I want for example to set multiple function with your letrec notation ? 2020-04-15T13:18:26Z pilne joined #scheme 2020-04-15T13:18:50Z mdhughes: xuxx: That's what letrec is for, like if you have a whole state machine as functions that tail-call each other. But 99% of the time, you just need one BODY that can recurse on itselfโ€ฆ 2020-04-15T13:19:23Z revtintin joined #scheme 2020-04-15T13:20:58Z lockywolf_ joined #scheme 2020-04-15T13:21:30Z xuxx: mdhughes: And another thing, you set result '() but with that, isn't result set to '() at each rcursion ? 2020-04-15T13:21:57Z mdhughes: No, those are the initial values, they're replaced on each call. 2020-04-15T13:22:10Z lockywolf_ quit (Read error: Connection reset by peer) 2020-04-15T13:22:52Z xuxx: ok so this notation seems cool x) 2020-04-15T13:23:04Z lockywolf_ joined #scheme 2020-04-15T13:23:42Z lockywolf__ quit (Ping timeout: 258 seconds) 2020-04-15T13:26:35Z lockywolf__ joined #scheme 2020-04-15T13:29:15Z lockywolf_ quit (Ping timeout: 250 seconds) 2020-04-15T13:30:11Z ngz joined #scheme 2020-04-15T13:30:12Z lockywolf_ joined #scheme 2020-04-15T13:30:27Z xuxx: mdhughes: is in scheme [ equivalent to ( ? 2020-04-15T13:30:43Z xuxx: I tryied with ([, ((, [( in the let and it works 2020-04-15T13:31:21Z mdhughes: Yeah, R6 and most R5 and R7 let you use [] pairs instead of (), which is nice for cond, let, etc. where you always have cuddled parens. 2020-04-15T13:31:46Z xuxx: wtf crazy 2020-04-15T13:31:55Z xuxx: (define l '[a b c]) works 2020-04-15T13:31:57Z xuxx: XD 2020-04-15T13:32:36Z mdhughes: (not all impls; gerbil doesn't support them in the current release, but will in the next one) 2020-04-15T13:32:40Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-15T13:33:18Z pilne quit (Read error: Connection reset by peer) 2020-04-15T13:36:34Z pilne joined #scheme 2020-04-15T13:37:48Z xuxx: If I want to implement math function in scheme, I just write it or is there traps with types of things like if I write 1.5 or 2/5 ? I tried it seems ok but to be sure 2020-04-15T13:39:02Z revtintin quit (Ping timeout: 258 seconds) 2020-04-15T13:41:20Z luni joined #scheme 2020-04-15T13:41:41Z revtintin joined #scheme 2020-04-15T13:41:57Z Riastradh: Well, 1.5 and 2/5 represent different numbers, so they're not interchangeable for that reason! But they are also tagged differently with `exactness' in Scheme: 1.5 is tagged as `inexact' and 2/5 is tagged as `exact'. 2020-04-15T13:43:14Z Riastradh: In practical terms, usually `inexact' means `represented by floating-point' (typically IEEE 754 binary64 floating-point) and `exact' means `represented by a ratio of unbounded-precision integers'. Inexactness is `contagious' meaning that if you feed any inexact input to an arithmetic operation you generally get an inexact output. 2020-04-15T13:43:21Z xuxx: so that's why if I write (f 0.75) and (f 3/4), the first one is in the for x.xx and the second one x/y 2020-04-15T13:46:10Z Riastradh: I didn't follow the question? 2020-04-15T13:48:25Z xuxx: Riastradh: https://paste.debian.net/1140559/ 2020-04-15T13:48:50Z xuxx: so if I want to write a math function, I should check before if the result can be an exact form no ? 2020-04-15T13:49:26Z Riastradh: Well, I dunno, what are you hoping to accomplish with your math function? 2020-04-15T13:49:33Z ahungry joined #scheme 2020-04-15T13:49:47Z xuxx: Riastradh: find roots 2020-04-15T13:56:15Z xuxx: is it a good idea to transforme each number into exact value if it is a rational ? 2020-04-15T13:57:38Z jcowan: Gauche, Gambit, Chicken, and the R6RS Schemes support brackets as parens, but Chibi and MIT don't. I would guess that other written-from-scratch R7RS systems also do not. 2020-04-15T13:58:25Z luni: xuxx: maybe that is not always possible https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Continued_fraction_expansion 2020-04-15T13:58:41Z jcowan: xuxx: Inexact numbers are inaccurate but fast; exact numbers are accurate but can be slow and space-consuming. 2020-04-15T13:59:38Z jcowan: however, the inaccuracy of IEEE floats (which is pretty much what is meant by inexact numbers nowadays) is bounded for any one operation, though it can grow through many operations. 2020-04-15T13:59:59Z jcowan: "Floating-point numbers are like sandpiles; every time you do something with them, you get a little less sand and a little more dirt." 2020-04-15T14:05:24Z Riastradh: xuxx: Generally for numerical algorithms you want to work in inexact numbers. 2020-04-15T14:06:38Z pilne quit (Ping timeout: 258 seconds) 2020-04-15T14:08:02Z luni: Uploaded file: https://uploads.kiwiirc.com/files/22e7e499d83d1ba418577c2a22c54dc9/pasted.txt 2020-04-15T14:08:13Z pilne joined #scheme 2020-04-15T14:08:44Z luni: ok an example, is not in Scheme but in that case only at the end i visualize the result in "inexact form" 2020-04-15T14:09:01Z skapata joined #scheme 2020-04-15T14:11:16Z luni quit (Quit: Connection closed) 2020-04-15T14:17:27Z Riastradh: xuxx: Reasoning about error in inexact algorithms -- particularly with floating-point, where the error is scale-invariant -- is generally much easier than reasoning about ballooning memory use of exact integer ratio algorithms. 2020-04-15T14:18:21Z xuxx: Oki 2020-04-15T14:18:32Z xuxx: ty 2020-04-15T14:21:07Z xuxx: Riastradh: so if I enter an exact number, should I always tranform it into an inexact ? 2020-04-15T14:21:39Z Riastradh: Not necessarily; it depends on what you're trying to accomplish. 2020-04-15T14:22:37Z Riastradh: For example, in MIT Scheme, (sqrt 2) returns an inexact number (there is no ratio of integers whose square is 2) but (sqrt 4) returns an exact number. If you want to mimic that behaviour to return exact outputs for exact inputs where possible, then no, you shouldn't always transform it into an inexact number. 2020-04-15T14:23:40Z Riastradh: However, if you want to ensure that all the arithmetic is floating-point arithmetic so there's no danger that you might accidentally cause unbounded memory usage in a numerical algorithm, then sure, convert the inputs to inexact first. (In principle there may be some Schemes -- like very old versions of Scheme48 -- that don't actually do floating-point arithmetic but they are few and far between and 2020-04-15T14:23:46Z Riastradh: mostly irrelevant.) 2020-04-15T14:23:53Z pilne quit (Read error: Connection reset by peer) 2020-04-15T14:25:29Z lockywolf_ quit (Remote host closed the connection) 2020-04-15T14:26:02Z lockywolf_ joined #scheme 2020-04-15T14:28:08Z pilne joined #scheme 2020-04-15T14:30:22Z mouloud[m]: jcowan: 2020-04-15T14:30:48Z mouloud[m]: the thing is that terminal emulator are too limited, even if handy. 2020-04-15T14:33:00Z jcowan: Riastradh: Dream (dead), Oaklisp (R3RS+, still builds but irrelevant), Owl Lisp (deliberately not conformant) are the only numeric towers I know of without inexact numbers. 2020-04-15T14:38:38Z siraben: Has anyone seen a lazy lisp? How well does it work in practice? 2020-04-15T14:38:52Z siraben: Mixing laziness and impurity seem like a bad combination, IMO. 2020-04-15T14:48:28Z revtintin quit (Ping timeout: 265 seconds) 2020-04-15T14:49:02Z wasamasa: isn't that a SICP exercise 2020-04-15T14:49:26Z klovett quit (Remote host closed the connection) 2020-04-15T14:53:14Z brendyyn quit (Ping timeout: 240 seconds) 2020-04-15T14:54:09Z klovett joined #scheme 2020-04-15T15:02:04Z retropikzel quit (Quit: Leaving) 2020-04-15T15:02:24Z retropikzel joined #scheme 2020-04-15T15:06:41Z pilne quit (Read error: Connection reset by peer) 2020-04-15T15:07:13Z revtintin joined #scheme 2020-04-15T15:08:45Z gwatt: It is 2020-04-15T15:08:46Z klovett quit (Ping timeout: 265 seconds) 2020-04-15T15:11:06Z drakonis joined #scheme 2020-04-15T15:12:00Z pilne joined #scheme 2020-04-15T15:12:16Z notzmv quit (Read error: Connection reset by peer) 2020-04-15T15:14:31Z zhuoz joined #scheme 2020-04-15T15:15:10Z gwatt: siraben: You're correct that mixing laziness and impurity is bad. If you want to make heavy use of lazy evaluation in scheme you'll need to be careful 2020-04-15T15:17:09Z revtintin quit (Ping timeout: 250 seconds) 2020-04-15T15:28:04Z klovett joined #scheme 2020-04-15T15:28:18Z xuxx quit (Quit: Lost terminal) 2020-04-15T15:28:30Z klovett quit (Remote host closed the connection) 2020-04-15T15:28:48Z klovett joined #scheme 2020-04-15T15:30:52Z Riastradh: The phrasing `mixing laziness and impurity' is, as they say, `not a good look'... 2020-04-15T15:32:17Z TCZ joined #scheme 2020-04-15T15:33:03Z xuxx joined #scheme 2020-04-15T15:39:02Z notzmv joined #scheme 2020-04-15T15:44:14Z revtintin joined #scheme 2020-04-15T15:45:35Z ArthurStrong joined #scheme 2020-04-15T15:46:44Z TCZ left #scheme 2020-04-15T15:47:43Z TCZ joined #scheme 2020-04-15T15:48:47Z TCZ quit (Client Quit) 2020-04-15T16:02:21Z TheGreekOwl joined #scheme 2020-04-15T16:07:00Z revtintin quit (Ping timeout: 258 seconds) 2020-04-15T16:12:34Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-15T16:12:54Z lockywolf_ joined #scheme 2020-04-15T16:16:34Z add^_ joined #scheme 2020-04-15T16:19:39Z TheGreekOwl quit (Quit: I must go, my planet needs me.) 2020-04-15T16:27:36Z seepel joined #scheme 2020-04-15T16:33:55Z revtintin joined #scheme 2020-04-15T16:41:15Z zaifir: xuxx: I strongly recommend not trying to convert all your recursive functions into tail-recursions when you're learning Scheme. 2020-04-15T16:43:10Z zaifir: xuxx: It can get really hairy in some cases, and it's basically premature optimization. I made a complete mess of my first couple of Scheme programs by thinking that everything had to be a tail-call. 2020-04-15T16:43:53Z klovett quit (Remote host closed the connection) 2020-04-15T16:45:19Z zaifir: "Don't stand on your head to iterate! Recurse, where natural." --Olin Shivers, SRFI 1 2020-04-15T16:45:58Z spectrumgomas[m] joined #scheme 2020-04-15T16:47:46Z klovett joined #scheme 2020-04-15T16:52:25Z klovett quit (Ping timeout: 264 seconds) 2020-04-15T16:52:48Z Riastradh: (Olin's advice in SRFI 1 does not actually hold up in many Scheme systems where the stack size is limited separately from the heap size, and where the size of a recursive stack frame is larger than the size of a cons cell) 2020-04-15T16:54:02Z zaifir: Yes. 2020-04-15T16:54:32Z klovett joined #scheme 2020-04-15T16:55:13Z jcowan: Recursion: see recursion. Tail recursion: if you aren't sick of this yet, see recursion and then tail recursion. 2020-04-15T16:55:35Z zaifir: His comments in SRFI 1 sometimes read as suggestions to Scheme implementers: "I use the dreaded call/cc for non-local exits. A Scheme compiler should implement this with extreme efficiency." 2020-04-15T16:57:49Z xuxx: what's sfri1 ? 2020-04-15T16:58:59Z klovett quit (Ping timeout: 250 seconds) 2020-04-15T17:00:40Z zaifir: xuxx: A list library, the first Scheme Request For Implementation, and now part of R7RS-large as (scheme list). See https://srfi.schemers.org/ It's worth getting to know what SRFIs are available. 2020-04-15T17:03:51Z klovett joined #scheme 2020-04-15T17:09:46Z ggole quit (Quit: Leaving) 2020-04-15T17:10:56Z skapata quit (Quit: ฤœis!) 2020-04-15T17:15:32Z retropikzel quit (Quit: Leaving) 2020-04-15T17:17:37Z klovett quit (Ping timeout: 264 seconds) 2020-04-15T17:18:23Z klovett joined #scheme 2020-04-15T17:22:13Z klovett quit (Remote host closed the connection) 2020-04-15T17:22:31Z klovett joined #scheme 2020-04-15T17:24:05Z retropikzel joined #scheme 2020-04-15T17:30:15Z revtintin quit (Ping timeout: 260 seconds) 2020-04-15T17:37:36Z revtintin joined #scheme 2020-04-15T17:47:48Z klovett_ joined #scheme 2020-04-15T17:49:08Z retropikzel quit (Quit: Leaving) 2020-04-15T17:50:20Z klovett quit (Ping timeout: 256 seconds) 2020-04-15T17:53:50Z smazga joined #scheme 2020-04-15T17:54:10Z nulquen quit (Remote host closed the connection) 2020-04-15T17:58:54Z pilne quit (Read error: Connection reset by peer) 2020-04-15T17:59:37Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-15T18:03:28Z pilne joined #scheme 2020-04-15T18:04:44Z lockywolf_ joined #scheme 2020-04-15T18:24:08Z klovett joined #scheme 2020-04-15T18:26:12Z klovett_ quit (Ping timeout: 256 seconds) 2020-04-15T18:34:52Z fradet quit (Remote host closed the connection) 2020-04-15T18:55:26Z izh_ joined #scheme 2020-04-15T19:08:08Z izh_ quit (Remote host closed the connection) 2020-04-15T19:08:44Z izh_ joined #scheme 2020-04-15T19:23:08Z SGASAU quit (Remote host closed the connection) 2020-04-15T19:23:51Z SGASAU joined #scheme 2020-04-15T19:24:59Z raingloom joined #scheme 2020-04-15T19:26:48Z SGASAU quit (Remote host closed the connection) 2020-04-15T19:27:27Z SGASAU joined #scheme 2020-04-15T19:33:13Z TCZ joined #scheme 2020-04-15T19:33:26Z mouloud[m]: rudybot: what about ports? 2020-04-15T19:33:30Z rudybot: mouloud[m]: that's what I love about it, ports says "I need /opt/local/ which you haven't touched, the rest is yours" 2020-04-15T19:35:40Z mouloud[m]: rudybot: what srfi do you prefer? 2020-04-15T19:35:41Z rudybot: mouloud[m]: in practice i prefer SRFI-16's cut over apply-partially, mostly because it ends up being fewer characters 2020-04-15T19:36:08Z izh_ quit (Remote host closed the connection) 2020-04-15T19:36:44Z izh_ joined #scheme 2020-04-15T19:36:51Z aeth: rudybot: what about srfi 172? 2020-04-15T19:36:52Z rudybot: aeth: what's interesting about srfi-172-functional is that you can do this or any other such variant and no side effects are possible within srfi-172-functional or a library described as "functional" (so there would need to be another SRFI extension?): (srfi-172-functional-+ (foo) (bar)) => 42 2020-04-15T19:37:11Z aeth: correct 2020-04-15T19:37:27Z fradet joined #scheme 2020-04-15T19:37:59Z aeth: rudybot: what's srfi-189? 2020-04-15T19:38:02Z rudybot: aeth: I have ./srfi/189.sld and ./srfi/189.scm 2020-04-15T19:38:24Z aeth: good description! 2020-04-15T19:38:51Z aeth: rudybot: how about srfi 151? 2020-04-15T19:38:52Z rudybot: aeth: Quite right about naming, but there is also the important matter of argument order. SRFI 151 is an attempt to be functionally comprehensive. 2020-04-15T19:39:12Z aeth: I'm glad "SRFI 151" is the correct name for SRFI 151. 2020-04-15T19:39:57Z aeth: rudybot: srfi 110? 2020-04-15T19:39:57Z rudybot: aeth: were you referring to SRFI 110? https://srfi.schemers.org/srfi-110/srfi-110.html 2020-04-15T19:40:12Z aeth: rudybot: yes 2020-04-15T19:40:13Z rudybot: aeth: the 6 million figure is not exclusively from gas chambers. but yes I do believe that because I have seen no evidence to the contrary. 2020-04-15T19:40:32Z mouloud[m]: that was fast. 2020-04-15T19:40:49Z aeth: does that count as godwin's law? 2020-04-15T19:41:14Z Riastradh: well that escalated quickly 2020-04-15T19:41:37Z mouloud[m]: rudybot: why SRFI are usually withdrawn? 2020-04-15T19:41:39Z rudybot: mouloud[m]: Assuming you're interested, it does look like someone tried to implement restarts for Scheme. The SRFI-12 part of this page includes the withdrawn SRFI, a implementation, and some discussion. http://okmij.org/ftp/Scheme/util.html 2020-04-15T19:41:56Z Riastradh: mouloud[m]: boredom 2020-04-15T19:42:15Z aeth: rudybot: what is srfi 113? 2020-04-15T19:42:15Z rudybot: aeth: Kind of the same way the lexemes are chosen to avoid surprises, as per the set/lset/gset discussion going on about SRFI-113 right now. 2020-04-15T19:42:43Z aeth: rudybot: what do you think of srfi 116? 2020-04-15T19:42:48Z rudybot: aeth: see http://srfi.schemers.org/srfi-116/srfi-116.html 2020-04-15T19:44:37Z aeth: rudybot: why did it use "ipair" instead of "icons"? 2020-04-15T19:44:39Z rudybot: aeth: it's definitely removable. Ipair is superglue. 2020-04-15T19:45:23Z mouloud[m]: rudybot: how is it related? 2020-04-15T19:45:24Z rudybot: mouloud[m]: Yes. I'm not sure if and how this is related to my question before, if it is at all? 2020-04-15T19:45:37Z aeth: Wow, that looks like something straight out of M-x doctor 2020-04-15T19:46:29Z aeth: The doctor that says such gems as "Are you sure that you are not sure?" 2020-04-15T19:48:27Z mouloud[m]: Maybe it was pulled from a message from someone talking to M-x doctor 2020-04-15T19:48:59Z mouloud[m]: As far as I remember, emacs' doctor is very boring, unlike our friend rudybot 2020-04-15T19:50:28Z mouloud[m]: About that, a few years back I wanted to create an AI, nowadays I am on the quest for a GUI, how can things can go that much side way? 2020-04-15T19:52:01Z mouloud[m]: about the GUI stuff, I think I will go with GLFW and https://blend2d.com/ 2020-04-15T19:52:22Z mouloud[m]: it low level, but it will cover more use cases. 2020-04-15T19:52:33Z aeth: mouloud[m]: rudybot passes the Turing test 2020-04-15T19:52:38Z aeth: rudybot: do you pass the Turing test? 2020-04-15T19:52:39Z rudybot: aeth: actually, I /do/ assume that everyone else on irc is either a talented gorilla or highly sophisticated text generation engine attempting to pass the turing test. 2020-04-15T19:52:40Z izh_ quit (Quit: Leaving) 2020-04-15T19:52:46Z aeth: oh no 2020-04-15T19:52:57Z aeth: rudybot passes the Turing test to us, but we don't pass the Turing test to rudybot 2020-04-15T19:53:06Z aeth: who's the real bot? 2020-04-15T19:53:35Z mouloud[m]: That is a step further the meme: "are we in a simulation?" 2020-04-15T19:53:52Z mouloud[m]: yet? 2020-04-15T19:54:45Z aeth: rudybot: are we in a simulation? 2020-04-15T19:54:45Z rudybot: aeth: Are we in a simulation? 2020-04-15T19:54:49Z aeth: :o 2020-04-15T19:55:17Z wasamasa: mouloud[m]: how about https://github.com/memononen/NanoVG or https://github.com/wjakob/nanogui 2020-04-15T19:57:53Z mouloud[m]: that is what evilbinary use in scheme lib https://github.com/evilbinary/scheme-lib/ 2020-04-15T19:58:19Z mouloud[m]: wasamasa: I do not have a good answer for 2020-04-15T19:58:21Z mouloud[m]: aeth: x) 2020-04-15T19:58:43Z wasamasa: sorry, can't read chinese 2020-04-15T19:59:18Z travv0: rudybot: are you sentient? 2020-04-15T19:59:19Z rudybot: travv0: so you are saying that though cephalopods are sentient they don't respect sentient life? then fuck em. 2020-04-15T19:59:29Z travv0: that's what i was thinking 2020-04-15T20:00:21Z mouloud[m]: wasamasa: The reason I prefer blend2d is that it does deal with opengl, hence I feel more confortable, anyway if I really wanted to go that route I would rely on nanovg with a vulkan backend. 2020-04-15T20:01:34Z mouloud[m]: and it seems like a way of a lot of pain. 2020-04-15T20:05:47Z revtintin quit (Quit: WeeChat 1.9.1) 2020-04-15T20:32:01Z CyDefect quit (Quit: n8) 2020-04-15T20:33:56Z daviid joined #scheme 2020-04-15T20:47:54Z SGASAU quit (Remote host closed the connection) 2020-04-15T20:48:36Z SGASAU joined #scheme 2020-04-15T20:50:15Z lockywolf__ joined #scheme 2020-04-15T20:50:32Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-15T21:00:24Z jao joined #scheme 2020-04-15T21:05:09Z SGASAU quit (Remote host closed the connection) 2020-04-15T21:05:51Z SGASAU joined #scheme 2020-04-15T21:07:04Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-15T21:21:17Z Naptra quit (Remote host closed the connection) 2020-04-15T21:25:36Z ahungry quit (Remote host closed the connection) 2020-04-15T21:28:03Z zhuoz quit (Quit: Leaving) 2020-04-15T21:29:23Z klovett quit (Remote host closed the connection) 2020-04-15T21:29:36Z klovett joined #scheme 2020-04-15T21:29:48Z gravicappa quit (Ping timeout: 256 seconds) 2020-04-15T21:38:00Z mouloud[m]: You make me think wasamasa I will go through nanovg and nanogui 2020-04-15T21:38:58Z SGASAU quit (Remote host closed the connection) 2020-04-15T21:39:31Z TCZ quit (Quit: Leaving) 2020-04-15T21:39:46Z SGASAU joined #scheme 2020-04-15T21:46:34Z mouloud[m]: afaict nanogui requires c++ it is outside the scope of the project. 2020-04-15T21:46:41Z mouloud[m]: I only can depend on c libraries 2020-04-15T21:52:13Z mouloud[m]: and nanovg has `This project is not actively maintained.` 2020-04-15T21:52:47Z mouloud[m]: but blend2d is alpha or beta and does not use GPU 2020-04-15T21:52:57Z mouloud[m]: so there is not win / win situation here. 2020-04-15T22:20:55Z smazga quit (Quit: leaving) 2020-04-15T22:21:01Z skapata joined #scheme 2020-04-15T22:26:15Z f8l quit (Remote host closed the connection) 2020-04-15T22:27:29Z f8l joined #scheme 2020-04-15T22:31:54Z SGASAU quit (Remote host closed the connection) 2020-04-15T22:32:37Z SGASAU joined #scheme 2020-04-15T22:33:37Z ngz quit (Ping timeout: 265 seconds) 2020-04-15T22:34:42Z SGASAU quit (Remote host closed the connection) 2020-04-15T22:36:28Z SGASAU joined #scheme 2020-04-15T22:43:13Z keep_learning joined #scheme 2020-04-15T22:44:02Z SGASAU quit (Remote host closed the connection) 2020-04-15T22:44:42Z SGASAU joined #scheme 2020-04-15T22:45:28Z keep_learning quit (Client Quit) 2020-04-15T22:50:45Z xuxx quit (Quit: Lost terminal) 2020-04-15T22:51:44Z SGASAU quit (Remote host closed the connection) 2020-04-15T22:53:07Z SGASAU joined #scheme 2020-04-15T22:54:26Z jboy quit (Quit: bye) 2020-04-15T22:55:47Z jboy joined #scheme 2020-04-15T22:59:39Z jobol quit (Quit: Leaving) 2020-04-15T23:03:22Z keep_learning joined #scheme 2020-04-15T23:03:45Z X-Scale` joined #scheme 2020-04-15T23:03:54Z X-Scale quit (Ping timeout: 240 seconds) 2020-04-15T23:04:22Z X-Scale` is now known as X-Scale 2020-04-15T23:05:38Z brendyyn joined #scheme 2020-04-15T23:07:02Z SGASAU quit (Remote host closed the connection) 2020-04-15T23:08:24Z SGASAU` joined #scheme 2020-04-15T23:11:58Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-15T23:12:36Z epony quit (Read error: Connection reset by peer) 2020-04-15T23:16:49Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-15T23:17:41Z SGASAU joined #scheme 2020-04-15T23:21:27Z epony joined #scheme 2020-04-15T23:21:45Z epony quit (Remote host closed the connection) 2020-04-15T23:27:31Z TCZ joined #scheme 2020-04-15T23:30:43Z lritter joined #scheme 2020-04-15T23:32:45Z SGASAU quit (Remote host closed the connection) 2020-04-15T23:32:53Z aeth: mdhughes: I missed the last point you made, but as far as level design goes, 3D doesn't need to be harder than 2D. Well, depends. Overhead third person is essentially identical to isometric. 2020-04-15T23:33:52Z aeth: Everything else is probably harder except for animations, which were mentioned earlier. Well, afaik the real thing about animations is the ability to reuse them in 3D. 2020-04-15T23:33:55Z SGASAU joined #scheme 2020-04-15T23:35:14Z aeth: (sorry, isometric, but with rotations) 2020-04-15T23:37:54Z epony joined #scheme 2020-04-15T23:40:24Z zhuoz joined #scheme 2020-04-15T23:40:28Z TCZ quit (Quit: Leaving) 2020-04-15T23:40:51Z TCZ joined #scheme 2020-04-15T23:42:58Z keep_learning joined #scheme 2020-04-15T23:44:38Z torbo joined #scheme 2020-04-15T23:45:28Z lockywolf__ quit (Ping timeout: 258 seconds) 2020-04-15T23:55:30Z drakonis quit (Quit: WeeChat 2.8) 2020-04-16T00:12:30Z SGASAU quit (Remote host closed the connection) 2020-04-16T00:13:37Z SGASAU joined #scheme 2020-04-16T00:15:41Z SGASAU quit (Remote host closed the connection) 2020-04-16T00:16:27Z SGASAU joined #scheme 2020-04-16T00:17:47Z TCZ quit (Quit: Leaving) 2020-04-16T00:18:06Z TCZ joined #scheme 2020-04-16T00:18:58Z SGASAU quit (Remote host closed the connection) 2020-04-16T00:19:10Z TCZ quit (Client Quit) 2020-04-16T00:19:32Z TCZ joined #scheme 2020-04-16T00:28:29Z fradet quit (Read error: Connection reset by peer) 2020-04-16T00:40:32Z raingloom quit (Ping timeout: 256 seconds) 2020-04-16T00:44:31Z valjda joined #scheme 2020-04-16T00:46:20Z mdhughes: Even isometric has problems in 3D, like lighting and camera views get very tricky. Obvious case right now, Animal Crossing there's a back path on my island I can't see, but can walk on. There's no camera rotation outside, probably because some models are false fronts. 2020-04-16T00:57:04Z valjda quit (Quit: WeeChat 2.8) 2020-04-16T00:59:08Z TCZ quit (Quit: Leaving) 2020-04-16T00:59:18Z aeth: The original Pokemon games had something like that to hide a secret door 2020-04-16T01:07:38Z mdhughes: Yeah, that's common in JRPGs. I have some hidden paths in my Scheme CRPG, but they rely on line of sight, not blocking the sprites. 2020-04-16T01:07:53Z TCZ joined #scheme 2020-04-16T01:08:55Z TCZ quit (Client Quit) 2020-04-16T01:09:42Z aeth: Oh, I'm totally going to have completely unfair secrets. Maybe one that's, like, it needs to be 02:00 UTC on a Tuesday. 2020-04-16T01:09:59Z aeth: It's the internet. Someone's going to hook it into a debugger and find it and tell everyone, anyway. 2020-04-16T01:10:55Z aeth: I should just go all out with the "two"... like, 02:00 UTC, Tuesday, and two members of your party 2020-04-16T01:13:19Z aeth: And I should probably hide primes in as many places as possible and tell no one (except #scheme just now, I guess) 2020-04-16T01:17:50Z lockywolf joined #scheme 2020-04-16T01:24:32Z lritter quit (Ping timeout: 265 seconds) 2020-04-16T01:24:58Z lritter joined #scheme 2020-04-16T01:33:32Z lockywolf_ joined #scheme 2020-04-16T01:35:34Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-16T01:53:28Z ahungry joined #scheme 2020-04-16T01:58:14Z partyclicker quit (Remote host closed the connection) 2020-04-16T02:38:42Z grant_ joined #scheme 2020-04-16T02:43:33Z skapata quit (Quit: ฤœis!) 2020-04-16T02:46:01Z grant_ quit (Remote host closed the connection) 2020-04-16T02:49:28Z grant_ joined #scheme 2020-04-16T03:06:20Z grant_ quit (Ping timeout: 258 seconds) 2020-04-16T03:13:24Z grant_ joined #scheme 2020-04-16T03:26:37Z pilne quit (Quit: East bound and down, loaded up and truckin') 2020-04-16T03:40:12Z grant_ quit (Read error: Connection reset by peer) 2020-04-16T03:40:30Z grant_ joined #scheme 2020-04-16T03:46:04Z seepel quit (Ping timeout: 256 seconds) 2020-04-16T03:50:36Z jao quit (Ping timeout: 256 seconds) 2020-04-16T03:56:33Z grant_ quit (Ping timeout: 258 seconds) 2020-04-16T03:58:03Z lockywolf__ joined #scheme 2020-04-16T04:01:07Z lockywolf_ quit (Ping timeout: 250 seconds) 2020-04-16T04:07:48Z grant_ joined #scheme 2020-04-16T04:14:23Z grant_ quit (Quit: grant_) 2020-04-16T04:14:27Z ArthurStrong quit (Quit: leaving) 2020-04-16T04:15:01Z grant_ joined #scheme 2020-04-16T04:30:35Z grant_ quit (Ping timeout: 260 seconds) 2020-04-16T05:01:08Z klovett_ joined #scheme 2020-04-16T05:03:29Z klovett quit (Ping timeout: 265 seconds) 2020-04-16T05:07:55Z drakonis joined #scheme 2020-04-16T05:13:16Z ahungry quit (Remote host closed the connection) 2020-04-16T05:33:29Z evdubs quit (Quit: Leaving) 2020-04-16T05:33:49Z evdubs joined #scheme 2020-04-16T05:35:01Z titanbiscuit quit (Ping timeout: 264 seconds) 2020-04-16T05:36:45Z titanbiscuit joined #scheme 2020-04-16T05:38:30Z gravicappa joined #scheme 2020-04-16T05:42:45Z drakonis quit (Quit: WeeChat 2.8) 2020-04-16T05:43:07Z nullus quit (Ping timeout: 265 seconds) 2020-04-16T05:47:04Z seepel joined #scheme 2020-04-16T05:58:47Z lockywolf__ quit (Ping timeout: 260 seconds) 2020-04-16T05:59:39Z lockywolf joined #scheme 2020-04-16T06:04:48Z yosafbridge quit (Quit: Leaving) 2020-04-16T06:10:16Z revtintin joined #scheme 2020-04-16T06:11:34Z yosafbridge joined #scheme 2020-04-16T06:12:02Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-16T06:13:11Z lockywolf joined #scheme 2020-04-16T06:16:06Z torbo quit (Remote host closed the connection) 2020-04-16T06:24:50Z klovett joined #scheme 2020-04-16T06:26:47Z klovett_ quit (Ping timeout: 260 seconds) 2020-04-16T06:38:42Z lockywolf quit (Ping timeout: 258 seconds) 2020-04-16T06:39:52Z lockywolf joined #scheme 2020-04-16T06:42:06Z jobol joined #scheme 2020-04-16T06:42:54Z Naptra joined #scheme 2020-04-16T06:58:48Z aeth quit (Quit: ...) 2020-04-16T07:02:22Z aeth joined #scheme 2020-04-16T07:04:44Z seepel quit (Ping timeout: 256 seconds) 2020-04-16T07:13:14Z nckx quit (Quit: Updating my Guix System โ€” https://guix.gnu.org) 2020-04-16T07:13:36Z nckx joined #scheme 2020-04-16T07:22:41Z greaser|q quit (Changing host) 2020-04-16T07:22:41Z greaser|q joined #scheme 2020-04-16T07:29:18Z civodul joined #scheme 2020-04-16T07:46:30Z ggole joined #scheme 2020-04-16T07:46:43Z CyDefect joined #scheme 2020-04-16T07:57:37Z ngz joined #scheme 2020-04-16T07:58:14Z revtintin quit (Ping timeout: 240 seconds) 2020-04-16T08:02:42Z v_m_v joined #scheme 2020-04-16T08:10:41Z revtintin joined #scheme 2020-04-16T08:15:17Z sdu joined #scheme 2020-04-16T08:19:35Z pinoaffe: aeth: ah, so you want to reward people for knowing how to alter their system time :) 2020-04-16T08:19:49Z revtintin quit (Ping timeout: 250 seconds) 2020-04-16T08:21:17Z aeth: pinoaffe: unless I make it only work if you're online 2020-04-16T08:24:03Z lockywolf quit (Remote host closed the connection) 2020-04-16T08:24:31Z lockywolf joined #scheme 2020-04-16T08:29:11Z revtintin joined #scheme 2020-04-16T08:39:54Z revtintin quit (Ping timeout: 240 seconds) 2020-04-16T08:43:25Z revtintin joined #scheme 2020-04-16T08:49:25Z revtintin quit (Ping timeout: 264 seconds) 2020-04-16T09:25:58Z revtintin joined #scheme 2020-04-16T09:36:01Z lockywolf_ joined #scheme 2020-04-16T09:39:03Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-16T09:45:04Z SGASAU joined #scheme 2020-04-16T09:57:14Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-16T10:03:44Z klovett quit (Remote host closed the connection) 2020-04-16T10:07:32Z klovett joined #scheme 2020-04-16T10:18:21Z klovett quit (Ping timeout: 258 seconds) 2020-04-16T10:19:19Z klovett joined #scheme 2020-04-16T10:22:02Z lritter quit (Quit: Leaving) 2020-04-16T10:32:12Z klovett quit (Ping timeout: 256 seconds) 2020-04-16T10:41:22Z klovett joined #scheme 2020-04-16T10:46:43Z klovett quit (Ping timeout: 260 seconds) 2020-04-16T10:47:17Z klovett joined #scheme 2020-04-16T10:48:06Z brendyyn quit (Quit: WeeChat 2.7.1) 2020-04-16T10:53:10Z SGASAU quit (Remote host closed the connection) 2020-04-16T10:53:49Z SGASAU joined #scheme 2020-04-16T10:55:56Z klovett quit (Ping timeout: 256 seconds) 2020-04-16T11:01:11Z klovett joined #scheme 2020-04-16T11:05:38Z klovett quit (Ping timeout: 256 seconds) 2020-04-16T11:06:28Z klovett joined #scheme 2020-04-16T11:08:27Z v_m_v quit (Remote host closed the connection) 2020-04-16T11:12:42Z raingloom joined #scheme 2020-04-16T11:14:27Z klovett quit (Ping timeout: 250 seconds) 2020-04-16T11:15:17Z klovett joined #scheme 2020-04-16T11:19:27Z lockywolf_ joined #scheme 2020-04-16T11:19:51Z klovett quit (Ping timeout: 260 seconds) 2020-04-16T11:19:57Z klovett_ joined #scheme 2020-04-16T11:29:02Z klovett_ quit (Ping timeout: 256 seconds) 2020-04-16T11:29:14Z klovett joined #scheme 2020-04-16T11:38:30Z klovett quit (Ping timeout: 256 seconds) 2020-04-16T11:43:02Z klovett joined #scheme 2020-04-16T11:47:14Z klovett quit (Ping timeout: 240 seconds) 2020-04-16T11:52:18Z klovett joined #scheme 2020-04-16T11:52:58Z lockywolf__ joined #scheme 2020-04-16T11:55:19Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-16T11:56:52Z klovett quit (Ping timeout: 258 seconds) 2020-04-16T12:01:49Z klovett joined #scheme 2020-04-16T12:06:24Z klovett quit (Ping timeout: 265 seconds) 2020-04-16T12:11:04Z klovett joined #scheme 2020-04-16T12:14:48Z Naptra quit (Remote host closed the connection) 2020-04-16T12:15:01Z Naptra joined #scheme 2020-04-16T12:15:35Z klovett quit (Ping timeout: 265 seconds) 2020-04-16T12:18:53Z v_m_v joined #scheme 2020-04-16T12:20:22Z klovett joined #scheme 2020-04-16T12:24:43Z klovett quit (Ping timeout: 260 seconds) 2020-04-16T12:25:02Z klovett joined #scheme 2020-04-16T12:27:30Z luni joined #scheme 2020-04-16T12:29:23Z klovett quit (Ping timeout: 260 seconds) 2020-04-16T12:30:48Z luni quit (Client Quit) 2020-04-16T12:34:22Z klovett joined #scheme 2020-04-16T12:38:43Z klovett quit (Ping timeout: 260 seconds) 2020-04-16T12:42:42Z longshi joined #scheme 2020-04-16T12:52:57Z klovett joined #scheme 2020-04-16T12:54:30Z longshi quit (Read error: Connection reset by peer) 2020-04-16T12:56:21Z valjda joined #scheme 2020-04-16T12:58:34Z klovett quit (Remote host closed the connection) 2020-04-16T12:58:52Z klovett joined #scheme 2020-04-16T13:14:54Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-16T13:15:47Z daviid quit (Ping timeout: 250 seconds) 2020-04-16T13:18:39Z valjda quit (Quit: WeeChat 2.8) 2020-04-16T13:30:47Z skapata joined #scheme 2020-04-16T13:34:43Z lockywolf_ joined #scheme 2020-04-16T13:36:32Z raingloom quit (Ping timeout: 256 seconds) 2020-04-16T13:37:31Z lockywolf__ quit (Ping timeout: 260 seconds) 2020-04-16T13:38:18Z v_m_v quit (Remote host closed the connection) 2020-04-16T13:38:22Z SGASAU quit (Remote host closed the connection) 2020-04-16T13:38:59Z SGASAU joined #scheme 2020-04-16T13:39:25Z raingloom joined #scheme 2020-04-16T13:41:50Z v_m_v joined #scheme 2020-04-16T13:44:26Z daviid joined #scheme 2020-04-16T13:46:45Z lockywolf__ joined #scheme 2020-04-16T13:49:25Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-16T13:50:03Z heisenberg-25 joined #scheme 2020-04-16T13:52:34Z v_m_v quit (Remote host closed the connection) 2020-04-16T13:56:13Z v_m_v joined #scheme 2020-04-16T13:59:15Z v_m_v quit (Remote host closed the connection) 2020-04-16T14:00:57Z ahungry joined #scheme 2020-04-16T14:01:02Z lockywolf_ joined #scheme 2020-04-16T14:03:22Z lockywolf__ quit (Ping timeout: 258 seconds) 2020-04-16T14:05:46Z lockywolf__ joined #scheme 2020-04-16T14:08:39Z lockywolf_ quit (Ping timeout: 250 seconds) 2020-04-16T14:12:06Z grant_ joined #scheme 2020-04-16T14:12:53Z jao joined #scheme 2020-04-16T14:23:05Z lockywolf__ quit (Read error: Connection reset by peer) 2020-04-16T14:23:51Z lockywolf__ joined #scheme 2020-04-16T14:24:47Z lockywolf__ quit (Remote host closed the connection) 2020-04-16T14:25:09Z lockywolf__ joined #scheme 2020-04-16T14:50:46Z heisenberg-25 quit (Ping timeout: 256 seconds) 2020-04-16T15:16:43Z mr_machina joined #scheme 2020-04-16T15:33:08Z zig joined #scheme 2020-04-16T15:35:47Z zig: What do we want? a JSON parser. When do we want it? Now. 2020-04-16T15:35:52Z zig motivation speech 2020-04-16T15:37:42Z zig: time on and off can be benefical but it also hurts. 2020-04-16T15:37:49Z zaifir: There are several. 2020-04-16T15:39:18Z zaifir: And someone *did* write SRFI 180... :) 2020-04-16T15:48:18Z heisenberg-25 joined #scheme 2020-04-16T15:50:02Z ArneBab quit (Ping timeout: 260 seconds) 2020-04-16T15:51:48Z TCZ joined #scheme 2020-04-16T15:52:37Z TCZ quit (Client Quit) 2020-04-16T15:52:57Z TCZ joined #scheme 2020-04-16T15:53:09Z zig: True. 2020-04-16T16:01:50Z Oxyd: Is there a specific reason why SRFI 180 is an SRFI and not just a library? Can it not be written portably with sufficient performance or something? 2020-04-16T16:10:26Z zaifir: There is usually a sample implementation of each SRFI, so it should be both (a library and a document). 2020-04-16T16:11:37Z heisenberg-25 quit (Ping timeout: 264 seconds) 2020-04-16T16:12:28Z zaifir: https://github.com/scheme-requests-for-implementation/srfi-180/blob/master/srfi/180/body.scm Looks portable to me... 2020-04-16T16:12:55Z Oxyd: Exactly. 2020-04-16T16:13:22Z zaifir: Oxyd: You mean, why bother with the document, then? 2020-04-16T16:13:27Z Oxyd: Yes. 2020-04-16T16:13:46Z Oxyd: It sounds a bit like โ€œLook at this cool library I've written!โ€ 2020-04-16T16:17:19Z zaifir: It depends on the quality of the SRFI document, IMO. If it's a clear, self-contained specification, then it's useful by itself and is, in fact, a Request For Implementation. 2020-04-16T16:18:44Z zaifir: If it's just documentation for the sample implementation, it probably won't be easy to create other implementations. 2020-04-16T16:20:09Z Oxyd: Is there any Scheme that come with SRFI 180 and does not use the included reference implementation? 2020-04-16T16:20:46Z lockywolf_ joined #scheme 2020-04-16T16:20:47Z zaifir: I doubt any Scheme provides 180 yet. 2020-04-16T16:23:10Z lockywolf__ quit (Read error: Connection reset by peer) 2020-04-16T16:23:45Z zaifir: zig: The 180 implementation is portable, right? 2020-04-16T16:32:46Z TCZ quit (Quit: Leaving) 2020-04-16T16:43:15Z grant_ quit (Ping timeout: 260 seconds) 2020-04-16T16:44:37Z grant__ joined #scheme 2020-04-16T17:02:53Z jao quit (Remote host closed the connection) 2020-04-16T17:04:44Z grant__ is now known as [rg] 2020-04-16T17:07:04Z [rg] quit (Quit: [rg]) 2020-04-16T17:17:03Z drakonis1 joined #scheme 2020-04-16T17:20:11Z evdubs_ joined #scheme 2020-04-16T17:22:10Z evdubs quit (Ping timeout: 256 seconds) 2020-04-16T17:27:55Z grant__ joined #scheme 2020-04-16T17:28:02Z grant__ is now known as [rg] 2020-04-16T17:38:18Z seepel joined #scheme 2020-04-16T17:46:35Z kopiyka quit (Quit: ERC (IRC client for Emacs 26.2)) 2020-04-16T17:46:58Z kopiyka joined #scheme 2020-04-16T17:47:56Z kopiyka quit (Client Quit) 2020-04-16T17:48:25Z kopiyka joined #scheme 2020-04-16T17:49:15Z [rg] quit (Quit: [rg]) 2020-04-16T17:49:36Z [rg] joined #scheme 2020-04-16T17:54:17Z [rg] quit (Client Quit) 2020-04-16T17:54:34Z [rg] joined #scheme 2020-04-16T18:18:13Z lockywolf__ joined #scheme 2020-04-16T18:20:58Z lockywolf_ quit (Ping timeout: 258 seconds) 2020-04-16T18:23:49Z zig: zaifir: yes, it is portable but require scheme regex 2020-04-16T18:23:58Z zig: that is portable over r7rs large 2020-04-16T18:24:30Z zig: without the srfi process, it would clearly be much less featured. The draft 1 is not as good as the draft 2, the idea to use foldts is brillant. 2020-04-16T18:24:40Z revtintin quit (Quit: WeeChat 1.9.1) 2020-04-16T18:24:48Z klovett_ joined #scheme 2020-04-16T18:25:42Z zig: Oxyd: the SRFI process allows to gather people around similar interest, it helps create the best we collectivly can. 2020-04-16T18:26:08Z zig: the specification is not very good, in particular the json-fold documentation is clearly not good enough, but neither does foldts and function xml parsing paper. 2020-04-16T18:26:37Z klovett quit (Ping timeout: 264 seconds) 2020-04-16T18:26:52Z zig: in terms of speed it is far from perfect, but the specification allows to implement a JSON parser that is faster while still being conformant by settings a max depth. 2020-04-16T18:27:38Z zig: I am trying to figure how to spell the documentation of json-fold, but it is not easy. 2020-04-16T18:27:59Z zig: that another case for: "you can make the implementation work, but you have an hard explaining why" 2020-04-16T18:28:30Z zig: more like, "hack your way toward something that works" 2020-04-16T18:29:13Z zig: implementing json-fold without the reference implementation or reading about functional xml parsing, is nearly impossible imo. 2020-04-16T18:30:15Z zig: and that is not "machine learning black box" it is just plain old functional programming and some closures, but the way the state is passed around is surprising. 2020-04-16T18:30:52Z zig: Lassi asked to remove the dependency on scheme regex, which I am willing to do. 2020-04-16T18:32:13Z lockywolf_ joined #scheme 2020-04-16T18:32:37Z ngz quit (Ping timeout: 264 seconds) 2020-04-16T18:33:06Z longshi joined #scheme 2020-04-16T18:34:13Z lockywolf__ quit (Read error: Connection reset by peer) 2020-04-16T18:35:02Z aoh quit (Changing host) 2020-04-16T18:35:02Z aoh joined #scheme 2020-04-16T18:39:21Z [rg] quit (Ping timeout: 265 seconds) 2020-04-16T18:42:28Z evdubs_ is now known as evdubs 2020-04-16T19:01:14Z daviid quit (Ping timeout: 256 seconds) 2020-04-16T19:04:58Z SGASAU quit (Remote host closed the connection) 2020-04-16T19:06:35Z SGASAU joined #scheme 2020-04-16T19:11:33Z Naptra quit (Quit: Leaving) 2020-04-16T19:19:58Z luni joined #scheme 2020-04-16T19:27:34Z lucasb joined #scheme 2020-04-16T19:42:35Z TCZ joined #scheme 2020-04-16T19:45:26Z ggole quit (Quit: Leaving) 2020-04-16T19:50:05Z [rg] joined #scheme 2020-04-16T19:55:26Z [rg] quit (Quit: [rg]) 2020-04-16T19:58:54Z lpsmith_ is now known as lpsmith 2020-04-16T19:59:36Z zaifir: zig: Cool, thanks for clarifying. 2020-04-16T20:01:46Z Riastradh quit (Remote host closed the connection) 2020-04-16T20:02:26Z Riastradh joined #scheme 2020-04-16T20:02:59Z raingloom quit (Read error: Connection reset by peer) 2020-04-16T20:04:03Z raingloom joined #scheme 2020-04-16T20:11:45Z longshi quit (Ping timeout: 258 seconds) 2020-04-16T20:15:36Z hugh_marera joined #scheme 2020-04-16T20:17:14Z lockywolf__ joined #scheme 2020-04-16T20:20:00Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-16T20:31:43Z v_m_v joined #scheme 2020-04-16T20:40:30Z SGASAU quit (Ping timeout: 258 seconds) 2020-04-16T20:59:10Z CyDefect quit (Remote host closed the connection) 2020-04-16T21:00:54Z longshi joined #scheme 2020-04-16T21:05:37Z keep_learning joined #scheme 2020-04-16T21:05:38Z v_m_v quit (Read error: Connection reset by peer) 2020-04-16T21:06:23Z erkin: Oxyd: Essentially, SRFI-180 asks Scheme implementations that if they're going to implement a JSON parser, they should provide the API set forth in this document so that a program or library that uses JSON can portably rely on that API. 2020-04-16T21:07:22Z erkin: Most SRFIs try to unify APIs of different common functionalities of implementations. 2020-04-16T21:08:23Z ahungry quit (Remote host closed the connection) 2020-04-16T21:09:26Z erkin: If an implementation doesn't have a JSON parser, the devs can copy and adapt the reference implementation provided. Otherwise, they can retrofit the SRFI's API onto the existing JSON library they have, providing both. 2020-04-16T21:11:19Z zhuoz quit (Quit: Leaving) 2020-04-16T21:14:46Z klovett joined #scheme 2020-04-16T21:16:15Z klovett_ quit (Ping timeout: 260 seconds) 2020-04-16T21:17:19Z zaifir: An API is just a language, anyway, and it's more useful to give people a description of your language than to just say "here's a book I wrote, figure it out". 2020-04-16T21:18:43Z pilne joined #scheme 2020-04-16T21:18:44Z pilne quit (Client Quit) 2020-04-16T21:25:34Z lritter joined #scheme 2020-04-16T21:30:43Z luni quit (Quit: Connection closed) 2020-04-16T21:31:08Z pilne joined #scheme 2020-04-16T21:41:33Z Oxyd: erkin: I see. So it's a โ€œplease don't write any more JSON librariesโ€ essentially? 2020-04-16T21:46:54Z seepel quit (Ping timeout: 240 seconds) 2020-04-16T21:53:15Z zaifir: Oxyd: You're familiar with the idea of specifying standard libraries, right? 2020-04-16T21:56:53Z Oxyd: Well, an SRFI isn't a standard library. An implementation doesn't have to provide it. 2020-04-16T21:57:41Z zaifir: The idea is to provide a readymade specification for X in case you *do* want to provide X. 2020-04-16T21:58:35Z zaifir: There are an infinite number of possible list libraries, but most Schemes choose to implement SRFI 1 (at least). 2020-04-16T21:58:45Z Oxyd: That does make sense. But then again, if it were just a library somewhere on Github, people could just include it in their programs without waiting for Scheme implementations to ship it with the interpreter. 2020-04-16T22:02:58Z zaifir: They are somewhere on GitHub: https://github.com/scheme-requests-for-implementation 2020-04-16T22:04:03Z zaifir: But of course you run into the issue of making the sample implementation run in your Scheme. 2020-04-16T22:08:34Z gravicappa quit (Ping timeout: 256 seconds) 2020-04-16T22:08:58Z zaifir: I guess if you're running an R7 Scheme you can get a reasonable facsimile of Python's "git-clone-library-and-run" workflow? :) 2020-04-16T22:10:21Z Oxyd: That would be the ideal situation. Having to write an SRFI for each library you write in hopes that someone will port it to other Schemes would be inefficient. :) 2020-04-16T22:13:18Z aeth: SRFI 999: A 3D Game Engine 2020-04-16T22:15:26Z zaifir: Oxyd: Hopefully the sample implementations are good enough to be used by any Scheme that wants them. But SRFI documents are great references, since they tend to skip the quirks of specific implementations. 2020-04-16T22:16:06Z zaifir: Oxyd: So, i.e., you have a clear understanding of what is and isn't specified, hopefully. 2020-04-16T22:16:15Z Oxyd: Well, the documentation of a library will also skip over implementation details and simply document the interface. 2020-04-16T22:17:52Z zaifir: Right, yes. 2020-04-16T22:18:01Z aeth: Oxyd: right, thus my SRFI 999 joke 2020-04-16T22:18:07Z aeth: easy to write, hard to implement 2020-04-16T22:18:20Z aeth: but easy to implement if you take an existing library, I guess... but only for your Scheme 2020-04-16T22:18:59Z zaifir: aeth: That would be a weird SRFI indeed. It seems to me that something like a game engine couldn't possibly be captured by a single spec. 2020-04-16T22:21:21Z aeth: requires SRFI 998 OpenGL 2020-04-16T22:21:53Z aeth: No need to have a FFI SRFI if you just put OpenGL in a SRFI! 2020-04-16T22:22:22Z zaifir: Hah. Just need to wait for the hardware industry to catch up to providing Scheme support. 2020-04-16T22:22:53Z Oxyd: Isn't OpenGL itself an SRFI? :P It's just an interface for video card vendors to implement. 2020-04-16T22:23:32Z zaifir: *RFI 2020-04-16T22:24:42Z aeth: zaifir: I mean, yeah, Scheme implementations could provide OpemGL support through their own CFFI, or graphics driver implementations could provide Scheme SRFI OpenGL support directly. 2020-04-16T22:26:27Z zaifir: aeth: It's not an area I know much about, so I can't comment on how it could be done. 2020-04-16T22:26:49Z aeth: fork libmesa? that might be the way to do it 2020-04-16T22:26:49Z zaifir: It does seem like the "everything goes through CFFI" is a crappy solution. 2020-04-16T22:27:31Z aeth: "everything goes through CFFI" is the only solution for 3D graphics libraries. Xorg has this weird client/server thing that you can technically avoid CFFI with (CL does this with CLX) 2020-04-16T22:27:52Z aeth: I mean, unless you patch the drivers, but there's no Scheme ABI so that would be Guile-only 2020-04-16T22:28:23Z aeth: zaifir: it's not as bad as it sounds because you're mostly just moving buffers over to the GPU 2020-04-16T22:28:55Z aeth: in CL you need to use something like this, though, or else you could face minutes-long copying at start with large geometry: https://github.com/sionescu/static-vectors/ 2020-04-16T22:29:11Z aeth: basically vectors that are "bilingual" and not moved by the GC 2020-04-16T22:29:21Z zaifir: I actually think the X (and other older windowing system) client/server approach is pretty elegant, as opposed to having every graphical application directly accessing the GPU. 2020-04-16T22:30:24Z zaifir: As I was saying before, protocols are awesome, FFIs are ugly. 2020-04-16T22:30:48Z jobol quit (Quit: Leaving) 2020-04-16T22:31:05Z Oxyd: I don't think โ€œSome request some time ago went wrongโ€ style of error reporting is at all elegant. 2020-04-16T22:31:20Z zaifir: aeth: It just seems like a failure of abstraction for a program to bypass everything to write data directly to the GPU. But obviously the efficiency gain is massiev. 2020-04-16T22:31:37Z aeth: You only need two FFIs: to something like OpenGL/Vulkan and to something like SDL. And the latter could just be direct to the OS APIs (but then you have to redo all of the work of SDL) and could even be built into the language so you don't "FFI" at all. (Building OpenGL/Vulkan into the language is probably a bad idea.) 2020-04-16T22:31:40Z zaifir: Massive, even. 2020-04-16T22:32:27Z aeth: And when I say "only", I mean, I don't think there's another situation like that 2020-04-16T22:32:31Z aeth: Maybe GPU compute 2020-04-16T22:32:56Z zaifir: I guess that makes sense. 2020-04-16T22:37:37Z zaifir: The general problem is that providing a data-structure-sharing interface to X for every semi-popular language in existence is a terrible task. 2020-04-16T22:39:10Z zaifir: Protocols happen to be a lot easier to implement and to maintain, and one protocol can serve all the languages. No need to reinvent the FFI wheel when the next generation throws a new language up the pop-charts. 2020-04-16T23:00:12Z aeth: new language? 2020-04-16T23:00:41Z aeth: :-p 2020-04-16T23:01:02Z aeth: If anything, though, new languages are easier because (unless they compile to JVM or JS etc.) they assume C is the fundamental base level 2020-04-16T23:03:22Z X-Scale` joined #scheme 2020-04-16T23:04:42Z X-Scale quit (Ping timeout: 265 seconds) 2020-04-16T23:04:44Z X-Scale` is now known as X-Scale 2020-04-16T23:04:47Z aeth: Any old language, including Scheme, was written before the only two options in OS were UNIX and NT 2020-04-16T23:07:40Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-16T23:09:25Z TCZ quit (Quit: Leaving) 2020-04-16T23:10:40Z pjb: Well, Linux, Darwin and NTโ€ฆ 3 options. 2020-04-16T23:11:06Z pjb: Nobody uses unixโ„ข anymore. 2020-04-16T23:11:29Z hugh_marera quit (Quit: hugh_marera) 2020-04-16T23:18:50Z lubgr joined #scheme 2020-04-16T23:20:50Z ineiros quit (Ping timeout: 240 seconds) 2020-04-16T23:27:28Z torbo joined #scheme 2020-04-16T23:27:43Z lubgr quit (Quit: leaving) 2020-04-16T23:31:38Z zaifir: aeth: Back when the world didn't yet suffer from C brain-damage. :-p 2020-04-16T23:32:33Z kam1 joined #scheme 2020-04-16T23:32:59Z kam1 quit (Quit: Quit) 2020-04-16T23:33:16Z kam1 joined #scheme 2020-04-16T23:33:57Z kam1 quit (Client Quit) 2020-04-16T23:34:11Z kam1 joined #scheme 2020-04-16T23:36:33Z jcowan: Back when OSes were written in assembly language and didn't escape their home processor architectures. Now that sucked. Unix was a *huge* breakthrough, moving first to the (obscure) Interdata machines, then to the Vax, then to everything. 2020-04-16T23:36:46Z jcowan: I use the term "Unix" broadly. 2020-04-16T23:37:19Z tolja joined #scheme 2020-04-16T23:45:17Z zaifir: Of course. 2020-04-16T23:47:29Z pjb: jcowan: other OSes were written in high level programming languages too. For example, Multics. 2020-04-16T23:47:56Z jcowan: marginally. You couldn't just port Multics to any system with a PL/I compiler; it was a heavly hacked version of PL/I. 2020-04-16T23:48:09Z pjb: jcowan: also, note that old assemblers were easier to use than on micro-processor, because most processors had rather high level assembler instructions. 2020-04-16T23:48:24Z pjb: jcowan: granted. 2020-04-16T23:48:54Z zaifir: But it's sad to see how the C perspective on computation has *ruled* mainstream programming languages since the 70s. 2020-04-16T23:49:38Z pjb: Definitely. OSes have been written in Lisp, in Pascal, in Modula-2, Modula-3, Ada, Oberon, etc since. 2020-04-16T23:50:45Z zaifir: I recall a quote from Fran Allen to the effect that compiler research virtually died during the height of C's popularity, due to the idea (popular with C hackers) that optimization was the programmer's responsibility. 2020-04-16T23:54:12Z longshi quit (Ping timeout: 256 seconds) 2020-04-16T23:54:45Z pjb: zaifir: Wirth also prefers simple compilers. But he designs his programming languages so that he can make his compilers simple! 2020-04-16T23:55:04Z zaifir: pjb: He's a wizard. 2020-04-17T00:04:09Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-17T00:11:01Z mr_machina quit (Ping timeout: 264 seconds) 2020-04-17T00:15:10Z TCZ joined #scheme 2020-04-17T00:18:00Z aeth: zaifir: C or something like it is still necessary as the portable "API" of the system 2020-04-17T00:18:27Z aeth: Actually writing in C for production use is, of course, a terrible idea because C didn't anticipate the internet and the complete lack of trust that comes from the internet. 2020-04-17T00:19:19Z aeth: The only bad thing about C as the API is C "macros". Good luck calling one. 2020-04-17T00:21:11Z aeth: zaifir: As for optimizations, it's a bit funny how (1) optimizing C compilers are some of the most "magical" compilers out there and (2) we're still using C or C++ for performance-related code even when multicore computing is involved. 2020-04-17T00:22:29Z zaifir: aeth: Yes. 2020-04-17T00:23:53Z aeth: C's in a weird situation where you should learn it as a language, but never use it. Basically what some people say about Lisp/Scheme, except the "never use it" is more "your network-connected service will be pwned if you do" than "you can't find a job that uses it". 2020-04-17T00:23:54Z zaifir: aeth: It's just a horribly inexpressive, low-abstraction language, IMO. 2020-04-17T00:24:13Z aeth: C's expressive in other, low-level ways. 2020-04-17T00:24:25Z aeth: Like OK this array of uint64s is now an array of uint8s 2020-04-17T00:24:34Z zaifir: OK, yes. 2020-04-17T00:24:45Z aeth: No conversion, no checking, just... it is 2020-04-17T00:25:03Z aeth: Or... this array now starts at a[20] instead of a[0] 2020-04-17T00:25:06Z aeth: It just does 2020-04-17T00:25:20Z zaifir: Hey look, I'm going to memcpy() some random chunk of bytes from this string and cast it as a uint. 2020-04-17T00:25:42Z aeth: On the other hand, C strings are a terrible design and basically means any C or C++ project creates their own strings, with different tradeoffs 2020-04-17T00:25:48Z zaifir: It's a hell of a drug. 2020-04-17T00:25:59Z aeth: Besides strings (who needs text anyway?), C is an interesting model, though 2020-04-17T00:27:06Z aeth: C's just impossible to use securely without being 80% boilerplate, though. I suppose it's a bit like the real ASM in a safe language, but not really, since a compiler can remove checks if it knows that it is safe, like if it knows it can't go out of bounds. 2020-04-17T00:27:38Z zaifir: "C is a razor-sharp tool. You can use it to create an efficient program, or a bloody mess." --Kernighan & Pike 2020-04-17T00:27:54Z aeth: The security boilerplate of modern C plus the lack of good abstractions makes it really, really hard to see the big picture 2020-04-17T00:28:01Z zaifir: aeth: Bingo. 2020-04-17T00:28:04Z aeth: If it was written in s-expressions you could just put the checks in a macro 2020-04-17T00:28:26Z aeth: but C "macros" are basically the worst possible way to implement the concept 2020-04-17T00:28:35Z zaifir: aeth: That's the thing--modern C is incredibly verbose because of everything you have to check. 2020-04-17T00:28:41Z aeth: right 2020-04-17T00:29:13Z zaifir: For a while I was sold on Go, since it seemed to be C with all the obvious foot-shooting possibilities removed. 2020-04-17T00:29:16Z aeth: And the worst part is that a lot of those checks are unnecessary, like if you are in Common Lisp and run DISASSEMBLE on a function, you'll see that a good compiler (like SBCL) is good at removing unecessary safety if it can infer it doesn't need it. 2020-04-17T00:29:35Z aeth: I'm sure a good C compiler is the same. 2020-04-17T00:29:41Z aeth: So you're adding boilerplate for the compiler to remove it! 2020-04-17T00:30:04Z Riastradh: How much C do you write these days? 2020-04-17T00:30:45Z aeth: Me personally? Not a lot. C in the world? While Windows and macOS have mostly moved on from C (decades ago, even), quite a few key Linux infrastructure projects are written in pure C 2020-04-17T00:30:55Z Riastradh: heh 2020-04-17T00:30:58Z Riastradh: macOS kernel is written in C 2020-04-17T00:31:05Z aeth: "mostly" moved on :-p 2020-04-17T00:31:26Z aeth: That being said, C in a kernel makes more sense than, e.g., C in a web browser or SSL library etc. 2020-04-17T00:31:37Z aeth: Or C here: https://github.com/freenode/ircd-seven 2020-04-17T00:31:53Z Riastradh: Anyway, I think you have a skewed perception of C, in both directions -- it's not as bad as you say, and it's worse in ways you might not realize. 2020-04-17T00:32:25Z aeth: Freenode itself almost certainly has undiscovered, severe vulnerabilities because that's just the nature of any C program that touches the network if it's large and nontrivial enough. 2020-04-17T00:32:36Z zaifir: aeth: Of course, the big TLS libraries are all pure C. 2020-04-17T00:32:38Z aeth: And most of those are strictly something that C or C++ would face. 2020-04-17T00:33:00Z Riastradh: zaifir: little ones too, don't forget the little ones like BearSSL 2020-04-17T00:33:01Z aeth: (Modern C++ can, in theory, avoid some safety issues that C has to have, but in practice, you're using lots of C or legacy C++ libraries in your C++ application.) 2020-04-17T00:33:58Z zaifir: aeth: That's also because ircds use bogus strtok() parsing rather than good parsing tools. 2020-04-17T00:34:09Z aeth: uh oh 2020-04-17T00:37:52Z drakonis1 quit (Quit: WeeChat 2.8) 2020-04-17T00:39:59Z duncanm: dum de dum 2020-04-17T00:41:33Z aeth: Riastradh: As far as C's security goes, it's a minority view (probably in part because so many security researchers have to learn C and so there's the sunk cost fallacy), but there are some people who see C/C++ as fundamentally insecure, e.g. http://trevorjim.com/archive/ 2020-04-17T00:41:42Z aeth: You generally find their blogs posted in Rust circles 2020-04-17T00:43:24Z aeth: But generally, a security model that revolves around "don't make mistakes" is not a good one imo. 2020-04-17T00:44:12Z aeth: I'm surprised when valgrind doesn't find an issue in my C or C++, and verifying everything with valgrind isn't standard practice everywhere afaik. 2020-04-17T00:46:58Z aeth: And how many C projects follow malloc rules like this one? I don't think I've ever used malloc() correctly... https://www.sqlite.org/malloc.html 2020-04-17T00:50:48Z Riastradh: Pretty much every C project I'm involved in either (a) propagates malloc failure, or (b) aborts on malloc failure, or (c) does some garbage collection and retries on malloc failure. 2020-04-17T00:51:27Z aeth: I always go with b 2020-04-17T00:52:01Z Riastradh: That's reasonable for a small program, sure. 2020-04-17T00:52:40Z aeth: I personally wouldn't want to use C for anything other than a small program. The Unix shell is where it's at home. 2020-04-17T00:52:51Z aeth: Small, short-lived programs avoids a lot of the C issues. 2020-04-17T00:53:00Z aeth: On the other hand, now you have to work with text... 2020-04-17T00:53:38Z Riastradh: Have to work with text? 2020-04-17T00:54:11Z aeth: foo | bar 2020-04-17T00:54:32Z aeth: I mean, I guess it doesn't *have* to be text, but that's very impolite of you in the Unix world. 2020-04-17T00:55:23Z Riastradh: Fortunately C has nice parsing tools like lex and yacc (or, better, lemon)! 2020-04-17T00:55:36Z aeth: eh 2020-04-17T00:55:52Z aeth: Fortunately C has nice parsing tools like Guile or Chicken (or, better, Chez)! 2020-04-17T00:56:05Z Riastradh: Got a nice lexer and LALR parser generator toolchain you can use right now in Scheme? 2020-04-17T00:56:43Z aeth: IME parsers seem to be a weak spot of Lisps, actually, since people prefer to put their DSLs directly in s-expressions instead of giving them real syntax 2020-04-17T00:58:46Z aeth: I suppose nothing's stoping you from passing your data in a structured format (probably been done before in XML or JSON) 2020-04-17T00:59:11Z lockywolf joined #scheme 2020-04-17T01:00:58Z zaifir: aeth: Most Schemes seem to have an LALR generator and a Parsec-style parsing combinator library. 2020-04-17T01:01:34Z zaifir: lex-likes are commonly-available, too. 2020-04-17T01:01:46Z Riastradh: zaifir: Which LALR parser generator is ready to use right now? 2020-04-17T01:02:07Z Riastradh: (not interested in recursive descent parser combinators, terrible tools for writing nontrivial parsers) 2020-04-17T01:03:26Z zaifir: Riastradh: CHICKEN has https://wiki.call-cc.org/eggref/5/lalr I haven't used it for anything nontrivial, but it seems pretty good. 2020-04-17T01:04:25Z aeth: So, there you go, there's how you guarantee safety in a C program that has to take input in from the Unix pipeline... 2020-04-17T01:04:30Z gioyik joined #scheme 2020-04-17T01:04:46Z aeth: unsafe text -> embedded language running the parser -> C data 2020-04-17T01:05:08Z aeth: potentially a major performance loss, though 2020-04-17T01:09:25Z zaifir: "For safety, we run all our data through Haskell." 2020-04-17T01:10:02Z aeth: I mean, yeah, that works. 2020-04-17T01:12:47Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-17T01:13:51Z lockywolf joined #scheme 2020-04-17T01:22:03Z lritter quit (Ping timeout: 250 seconds) 2020-04-17T01:23:04Z lritter joined #scheme 2020-04-17T01:27:08Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-17T01:32:23Z aeth: zaifir: the only problem with Haskell is that it's not Scheme :-P 2020-04-17T01:33:01Z aeth: Well, that and that dependent types make type checking undecidable, according to Wikipedia. 2020-04-17T01:33:56Z seepel joined #scheme 2020-04-17T01:34:19Z zaifir: aeth: Haskell doesn't have dependent types, yet. 2020-04-17T01:34:42Z zaifir: aeth: I was joking, of course. 2020-04-17T01:34:56Z aeth: zaifir: I thought Haskell has dependent types in a flag? 2020-04-17T01:36:05Z aeth: I guess that was incorrect information. 2020-04-17T01:37:15Z aeth: https://wiki.haskell.org/Dependent_type 2020-04-17T01:37:36Z aeth: Maybe someone was talking about the proposal PDF 2020-04-17T01:37:38Z daviid joined #scheme 2020-04-17T01:38:50Z zaifir: aeth: There's been a lot of talk of adding them. IIRC Simon Peyton-Jones and some other influential Haskellers are against the addition. 2020-04-17T01:44:09Z aeth: Is Haskell compilation currently guaranteed to terminate? 2020-04-17T01:46:54Z zaifir: No idea. 2020-04-17T01:47:58Z zaifir: Type-checking is, I believe, provided UndecidableInstances isn't used. 2020-04-17T01:49:48Z Blukunfando joined #scheme 2020-04-17T01:54:41Z gwatt: Considering java's generics are turing complete (and therefore undecidable) I would be shocked if haskell's type system is not as well 2020-04-17T01:55:02Z aeth: Common Lisp just sidesteps the whole debate and gives you SATISFIES 2020-04-17T01:55:36Z aeth: You could probably find some way to get CHECK-TYPE on SATISFIES types to run a CL brainfuck implementation. 2020-04-17T01:58:11Z aeth: (defun ok? (x) (declare (ignore x)) (zerop (random 2))) (defun foo (x) (check-type x (satisfies ok?)) x) ; if you fail the type check, just press the retry key in the debugger, which is perhaps the only time that it's useful 2020-04-17T01:59:48Z aeth: Oh no, retry retries the whole thing. I can't get past 4 in (dotimes (i 100) (foo i)) 2020-04-17T02:00:17Z gwatt: heh 2020-04-17T02:00:55Z aeth: Well, I can at least use STORE-VALUE to give it a new number half the time and progress that way 2020-04-17T02:09:37Z skapata quit (Ping timeout: 272 seconds) 2020-04-17T02:10:43Z raingloom quit (Ping timeout: 260 seconds) 2020-04-17T02:21:25Z skapata joined #scheme 2020-04-17T02:25:30Z kam1 quit (Ping timeout: 256 seconds) 2020-04-17T02:38:20Z kam1 joined #scheme 2020-04-17T02:56:29Z TCZ quit (Quit: Leaving) 2020-04-17T03:08:43Z ahungry joined #scheme 2020-04-17T03:11:07Z sanaris joined #scheme 2020-04-17T03:30:30Z kam1 quit (Ping timeout: 256 seconds) 2020-04-17T03:31:47Z pilne quit (Quit: Make it idiot proof and someone will make a better idiot.) 2020-04-17T04:13:03Z kam1 joined #scheme 2020-04-17T04:17:30Z lockywolf_ joined #scheme 2020-04-17T04:20:19Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-17T04:27:05Z kam1 quit (Ping timeout: 265 seconds) 2020-04-17T04:47:01Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-17T04:47:40Z lockywolf joined #scheme 2020-04-17T04:57:56Z ahungry quit (Ping timeout: 256 seconds) 2020-04-17T05:04:00Z DGASAU` quit (Ping timeout: 240 seconds) 2020-04-17T05:04:52Z kam1 joined #scheme 2020-04-17T05:10:26Z kopiyka quit (*.net *.split) 2020-04-17T05:10:26Z keep-learning[m] quit (*.net *.split) 2020-04-17T05:10:27Z mroh quit (*.net *.split) 2020-04-17T05:10:27Z bandali quit (*.net *.split) 2020-04-17T05:13:38Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-17T05:14:33Z lockywolf joined #scheme 2020-04-17T05:15:04Z kopiyka joined #scheme 2020-04-17T05:15:04Z keep-learning[m] joined #scheme 2020-04-17T05:15:04Z mroh joined #scheme 2020-04-17T05:15:04Z bandali joined #scheme 2020-04-17T05:49:56Z gravicappa joined #scheme 2020-04-17T06:04:12Z torbo quit (Remote host closed the connection) 2020-04-17T06:33:14Z seepel quit (Ping timeout: 265 seconds) 2020-04-17T06:39:17Z seepel joined #scheme 2020-04-17T06:56:59Z jobol joined #scheme 2020-04-17T06:58:13Z v_m_v joined #scheme 2020-04-17T07:03:12Z zaifir quit (Ping timeout: 265 seconds) 2020-04-17T07:03:41Z v_m_v quit (Ping timeout: 265 seconds) 2020-04-17T07:04:14Z v_m_v joined #scheme 2020-04-17T07:04:57Z zaifir joined #scheme 2020-04-17T07:06:50Z lritter quit (Quit: Leaving) 2020-04-17T07:11:59Z skapata quit (Quit: ฤœis!) 2020-04-17T07:31:57Z SGASAU joined #scheme 2020-04-17T07:34:09Z civodul joined #scheme 2020-04-17T07:41:07Z seepel quit (Ping timeout: 260 seconds) 2020-04-17T07:42:14Z v_m_v quit (Remote host closed the connection) 2020-04-17T07:42:22Z v_m_v joined #scheme 2020-04-17T07:56:38Z lockywolf quit (Remote host closed the connection) 2020-04-17T07:57:00Z lockywolf joined #scheme 2020-04-17T08:07:02Z longshi joined #scheme 2020-04-17T08:20:24Z tdammers: Haskell's type system is Turing complete, even without undecidable instances 2020-04-17T08:21:52Z tdammers: and it's rarely a problem in practice, because when compilation takes so long that you start to wonder whether it terminates, you have other problems 2020-04-17T08:22:57Z tdammers: and re dependent type; afaik SPJ isn't fundamentally opposed, he's just not willing to make any sacrifices to the existing compiler to make it happen 2020-04-17T08:23:16Z tdammers: and considering that nobody really knows how to do it efficiently, this seems like a reasonable stance 2020-04-17T09:01:06Z gioyik quit (Quit: WeeChat 2.8) 2020-04-17T09:04:48Z v_m_v quit (Remote host closed the connection) 2020-04-17T09:08:00Z CyDefect joined #scheme 2020-04-17T09:10:30Z lockywolf_ joined #scheme 2020-04-17T09:12:34Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-17T09:18:04Z SGASAU quit (Remote host closed the connection) 2020-04-17T09:18:50Z SGASAU joined #scheme 2020-04-17T09:21:21Z longshi quit (Quit: WeeChat 2.8) 2020-04-17T09:21:57Z SGASAU quit (Remote host closed the connection) 2020-04-17T09:22:36Z SGASAU joined #scheme 2020-04-17T09:36:06Z v_m_v joined #scheme 2020-04-17T09:41:06Z v_m_v quit (Ping timeout: 256 seconds) 2020-04-17T09:50:54Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-17T09:52:39Z hugh_marera joined #scheme 2020-04-17T09:55:55Z raingloom joined #scheme 2020-04-17T10:08:05Z nerdypepper quit (Quit: bye) 2020-04-17T10:08:23Z nerdypepper joined #scheme 2020-04-17T10:17:33Z srandon111 joined #scheme 2020-04-17T10:33:17Z hugh_marera quit (Quit: hugh_marera) 2020-04-17T10:37:37Z hugh_marera joined #scheme 2020-04-17T10:44:18Z siraben: tdammers: Has there been work on compiling dependent types efficiently?\] 2020-04-17T10:44:59Z kam1 quit (Ping timeout: 260 seconds) 2020-04-17T10:55:57Z kam1 joined #scheme 2020-04-17T11:02:06Z tdammers: idris 2020-04-17T11:02:35Z tdammers: I mean, haskell is getting there, but it'll be a long while until we have full dependent types 2020-04-17T11:09:06Z srandon111 quit (Quit: leaving) 2020-04-17T11:26:18Z SGASAU quit (Remote host closed the connection) 2020-04-17T11:27:11Z SGASAU joined #scheme 2020-04-17T11:47:03Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-17T11:47:29Z xelxebar joined #scheme 2020-04-17T11:49:03Z theruran quit (Quit: Connection closed for inactivity) 2020-04-17T12:09:50Z v_m_v joined #scheme 2020-04-17T12:14:57Z v_m_v quit (Ping timeout: 265 seconds) 2020-04-17T12:15:17Z SGASAU quit (Remote host closed the connection) 2020-04-17T12:15:57Z SGASAU joined #scheme 2020-04-17T12:31:02Z SGASAU quit (Remote host closed the connection) 2020-04-17T12:32:51Z SGASAU joined #scheme 2020-04-17T12:35:09Z TCZ joined #scheme 2020-04-17T12:48:45Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-17T12:51:14Z pilne joined #scheme 2020-04-17T13:02:25Z klovett quit (Remote host closed the connection) 2020-04-17T13:09:28Z lockywolf_ joined #scheme 2020-04-17T13:14:30Z zig quit (Quit: WeeChat 1.9.1) 2020-04-17T13:37:02Z acarrico joined #scheme 2020-04-17T13:46:30Z zig joined #scheme 2020-04-17T13:51:25Z v_m_v joined #scheme 2020-04-17T13:54:55Z ahungry joined #scheme 2020-04-17T13:56:37Z v_m_v quit (Ping timeout: 264 seconds) 2020-04-17T14:15:25Z TCZ quit (Quit: Leaving) 2020-04-17T14:21:58Z SGASAU quit (Remote host closed the connection) 2020-04-17T14:22:03Z coffeeturtle joined #scheme 2020-04-17T14:23:13Z SGASAU joined #scheme 2020-04-17T14:26:17Z klovett joined #scheme 2020-04-17T14:26:42Z xlei quit (Ping timeout: 256 seconds) 2020-04-17T14:33:22Z xlei joined #scheme 2020-04-17T14:34:24Z acarrico quit (Quit: Leaving.) 2020-04-17T14:39:14Z CyDefect quit (Ping timeout: 240 seconds) 2020-04-17T14:49:05Z theseb joined #scheme 2020-04-17T14:50:22Z theseb: When you set a variable to a value, is that added to the current environment or is a NEW environment created? I believe you only get NEW environments when you call a function or something like that? 2020-04-17T14:50:51Z wasamasa: let creates new environments, too 2020-04-17T14:51:04Z wasamasa: set modifies them 2020-04-17T14:53:14Z fradet joined #scheme 2020-04-17T14:53:51Z SGASAU quit (Remote host closed the connection) 2020-04-17T14:54:29Z SGASAU joined #scheme 2020-04-17T14:56:31Z theseb: wasamasa: thanks...so anon funcs and let create new environments?...what about (+ 3 4)? i'm guessing ALL funcs, even simple ones, stuff the arg values in a new env level? 2020-04-17T14:59:02Z CyDefect joined #scheme 2020-04-17T15:07:20Z wasamasa: that doesn't set anything 2020-04-17T15:07:57Z wasamasa: it references to + in the current environment though 2020-04-17T15:10:52Z wasamasa: you're best off reading the standard for this 2020-04-17T15:14:28Z whiteline quit (Remote host closed the connection) 2020-04-17T15:15:43Z raingloom quit (Ping timeout: 265 seconds) 2020-04-17T15:17:03Z theseb: wasamasa: wait..but if we could see the code for + wouldn't see a function that accepts 2 arguments that are added to a new env level when called? 2020-04-17T15:17:31Z theseb: wasamasa: by the way..i'm asking because I'm creating my own little lisp to learn some things 2020-04-17T15:17:57Z theseb: wasamasa: I may or may not follow all stuff in standard..just what is easiest and makes most sense to my newb brain 2020-04-17T15:18:18Z whiteline joined #scheme 2020-04-17T15:18:45Z zig: theseb: what is you target? or is it a meta-interpreter? 2020-04-17T15:18:55Z whiteline quit (Remote host closed the connection) 2020-04-17T15:20:34Z theseb: zig: i want to implement the simplest lisp i can ..i'm coding it in python 2020-04-17T15:20:57Z theseb: zig: my only blocker is verifying when to add a new environment level 2020-04-17T15:21:04Z whiteline joined #scheme 2020-04-17T15:21:30Z whiteline quit (Remote host closed the connection) 2020-04-17T15:21:36Z theseb: zig: i suspect EVERY function call needs a new env level...even + but wasamasa seems to suggest otherwise so confused 2020-04-17T15:25:42Z wasamasa: mutating the environment as opposed to creating a new stack of bindings 2020-04-17T15:26:07Z zig: + is a primitive so it does not mutate the env, it will return a new value to the hosting env 2020-04-17T15:26:25Z wasamasa: read the standard, it explains when exactly new environments are instantiated and which environments they can access 2020-04-17T15:26:29Z zig: I mean it will return a value, (let ((a (+ 41 1)) a) will return 42 2020-04-17T15:26:47Z zig: theseb: is you code online by any chance? 2020-04-17T15:27:06Z zig: the only primitive that mutates the env is `set!` 2020-04-17T15:27:26Z wasamasa: what about define though 2020-04-17T15:27:38Z zig: set! and define 2020-04-17T15:28:06Z zig: define could be defined as sugar for set! 2020-04-17T15:29:00Z whiteline joined #scheme 2020-04-17T15:30:51Z theseb: zig: not yet 2020-04-17T15:31:10Z zig: theseb: I think you are creating a meta-interpreter hosted in python. 2020-04-17T15:31:50Z zig: theseb: given you use Python, you most likely will need python package called immutable or immutables it is a functional dict. 2020-04-17T15:32:22Z theseb: zig: yes i'm creating an interpreter that I can feed expressions and it will evaluate them...is that what you mean? 2020-04-17T15:33:10Z zig: yeah 2020-04-17T15:33:19Z theseb: zig: wait...why does the fact that + is primitive change anything? 2020-04-17T15:34:06Z theseb: zig: or rather...*must* it change anything? would it be so bad to have a + that did add a new stack level? 2020-04-17T15:34:11Z theseb: seems it would still be equivalent no? 2020-04-17T15:35:28Z wasamasa: careful, you're walking the line between lexical and dynamic binding here 2020-04-17T15:35:30Z mdhughes: You shouldn't be creating a new env unless you have something in it that can change that env. 2020-04-17T15:36:45Z theseb: wasamasa: i don't know what those 2 types of binding mean 2020-04-17T15:36:48Z coffeeturtle quit (Quit: leaving) 2020-04-17T15:37:33Z zig: well, if you do not know what lexical binding is (that is what Python use) and dynamic bindings (what Common Lisp use) you have to read about it. That is a requirement to get scoping of env correctly. 2020-04-17T15:37:36Z mdhughes: If I was making a Schemeโ€”which I'm not, because there's 10 million of them alreadyโ€”I'd just create an env on lambda, let, and library. Any special starting with L. 2020-04-17T15:39:18Z wasamasa: dynamic binding resolves variables by looking at the bindings established by the currently called functions, lexical binding resolves them based on the lexical structure 2020-04-17T15:39:55Z wasamasa: this means that with dynamic binding you can override bindings easily and with lexical bindings you need to implement closures 2020-04-17T15:41:26Z wasamasa: so with one it's about the calling stack and with the other one what environment was active when evaluating/compiling that code 2020-04-17T15:41:47Z theseb: zig: ok 2020-04-17T15:42:48Z theseb: thanks..so much brilliant advice 2020-04-17T15:42:53Z zig: mind the fact that scheme use lexical bindings. 2020-04-17T15:43:23Z wasamasa: yeah, scheme is pretty much an experiment whether lexical binding can be made to work well :> 2020-04-17T15:47:43Z gwatt: I feel like that's been pretty widely acknowledged by now 2020-04-17T15:49:20Z zaifir: Except by Python. 2020-04-17T15:49:24Z zig: why is that? 2020-04-17T15:49:35Z zaifir: It still has only function-level scope. 2020-04-17T15:49:51Z zig: hmm I do not get it. what is function-level scope? 2020-04-17T15:51:54Z zaifir: zig: https://en.wikipedia.org/wiki/Scope_(computer_science)#Python 2020-04-17T15:52:29Z LeoNerd: Python doesn't have lexical scope. But then it doesn't have lexical variables either... 2020-04-17T15:53:10Z zaifir: zig: So there's no way to e.g. name a loop variable that won't capture some other identifier. 2020-04-17T15:53:29Z zaifir: (possibly) 2020-04-17T15:53:46Z zig: oh I get it, that is about global and nonlocal keywords. 2020-04-17T15:53:55Z gwatt: zaifir: function level scope doesn't preclude lexical scope, and if you nest function definitions in python you will see that they are in fact lexically scoped 2020-04-17T15:54:08Z zig: yeah, `for` does not create an env. 2020-04-17T15:54:38Z zaifir: gwatt: That's interesting. 2020-04-17T15:55:08Z gwatt: zaifir: take a look: https://termbin.com/a5rx 2020-04-17T15:55:49Z zaifir: It still boggles my mind that Python doesn't have the true equivalent of a `let' form. 2020-04-17T15:56:58Z zaifir: gwatt: OK, so if you're willing to explicitly close the variables in functions, you can do lexical scope. 2020-04-17T15:57:04Z zig: Python is lost := cause 2020-04-17T15:57:30Z LeoNerd: Yah; Python can't do let-over-lambda. Or as I call it in Perl, do-over-sub 2020-04-17T15:57:32Z LeoNerd: :) 2020-04-17T15:58:28Z zig: theseb: often, in this channel, conversation side tracks to other languages... 2020-04-17T15:59:05Z zaifir: zig: That way, we can talk about what Scheme does better while ignoring its problems :) 2020-04-17T15:59:24Z zig: x) 2020-04-17T16:00:04Z emacsomancer quit (Read error: Connection reset by peer) 2020-04-17T16:00:29Z whiteline quit (Remote host closed the connection) 2020-04-17T16:02:23Z whiteline joined #scheme 2020-04-17T16:02:29Z hugh_marera quit (Quit: hugh_marera) 2020-04-17T16:04:00Z emacsomancer joined #scheme 2020-04-17T16:05:58Z whiteline quit (Remote host closed the connection) 2020-04-17T16:06:21Z whiteline joined #scheme 2020-04-17T16:21:06Z srandon111 joined #scheme 2020-04-17T16:28:35Z evdubs quit (Remote host closed the connection) 2020-04-17T16:29:12Z daviid quit (Ping timeout: 256 seconds) 2020-04-17T16:30:59Z drakonis joined #scheme 2020-04-17T16:31:01Z jobol quit (Quit: Leaving) 2020-04-17T16:31:02Z evdubs_ joined #scheme 2020-04-17T16:34:01Z TCZ joined #scheme 2020-04-17T16:35:14Z drakonis quit (Quit: WeeChat 2.8) 2020-04-17T16:38:44Z drakonis joined #scheme 2020-04-17T16:40:00Z zig quit (Quit: WeeChat 1.9.1) 2020-04-17T16:44:47Z zig joined #scheme 2020-04-17T17:04:14Z skapata joined #scheme 2020-04-17T17:29:35Z TCZ quit (Quit: Leaving) 2020-04-17T17:53:15Z v_m_v joined #scheme 2020-04-17T17:54:03Z seepel joined #scheme 2020-04-17T17:57:54Z v_m_v quit (Ping timeout: 240 seconds) 2020-04-17T17:59:13Z raingloom joined #scheme 2020-04-17T18:08:34Z hugh_marera joined #scheme 2020-04-17T18:10:08Z sugarwren joined #scheme 2020-04-17T18:21:14Z seepel quit (Ping timeout: 240 seconds) 2020-04-17T18:22:07Z seepel joined #scheme 2020-04-17T18:45:03Z hugh_marera quit (Quit: hugh_marera) 2020-04-17T18:57:19Z hugh_marera joined #scheme 2020-04-17T19:06:49Z raingloom quit (Ping timeout: 264 seconds) 2020-04-17T19:13:47Z raingloom joined #scheme 2020-04-17T19:16:58Z theseb: ( (lambda (a b) (car '(a b))) 8 9 ) <--- Why does this return 'a' instead of 8? 2020-04-17T19:18:46Z wasamasa: because the list is quoted 2020-04-17T19:19:24Z wasamasa: a sufficiently smart compiler would constant-fold the procedure into (lambda _ 'a) 2020-04-17T19:22:17Z hugh_marera quit (Quit: hugh_marera) 2020-04-17T19:24:01Z v_m_v joined #scheme 2020-04-17T19:26:56Z zaifir: theseb: '(a b) is a constant, namely the list (a b). 2020-04-17T19:27:34Z Riastradh: theseb: Same as if you had written ((lambda (x y) (car '(a b))) 8 9). 2020-04-17T19:29:00Z v_m_v quit (Ping timeout: 258 seconds) 2020-04-17T19:40:50Z hugh_marera joined #scheme 2020-04-17T19:47:46Z lubgr joined #scheme 2020-04-17T19:50:58Z wasamasa quit (Quit: ZNC - https://znc.in) 2020-04-17T19:52:10Z wasamasa joined #scheme 2020-04-17T20:02:55Z svipal joined #scheme 2020-04-17T20:13:08Z aeth: is there a scan SRFI? https://en.wikipedia.org/wiki/Prefix_sum#Scan_higher_order_function 2020-04-17T20:13:14Z aeth: the SRFI search doesn't search body text 2020-04-17T20:13:38Z aeth: it's not in SRFI 1 with that name 2020-04-17T20:15:44Z wasamasa: why would that need a whole SRFI 2020-04-17T20:16:18Z aeth: wasamasa: it wouldn't 2020-04-17T20:16:27Z aeth: which is why an abstract/title search wouldn't find it even if it exists 2020-04-17T20:16:28Z wasamasa: write a few lines of fold-like code, done 2020-04-17T20:18:10Z aeth: Yes, the non-parallel version isn't particularly interesting. 2020-04-17T20:20:28Z CyDefect quit (Quit: n8) 2020-04-17T20:29:24Z zaifir: jcowan: I noticed that `eof->maybe'/`maybe->eof' were added to SRFI 189 in the second draft but are not yet in the sample implementation. I can add them. Were there any others added that need implementing? 2020-04-17T20:29:56Z zaifir: Oops, that was supposed to be a PM. 2020-04-17T20:48:32Z ArthurStrong joined #scheme 2020-04-17T20:53:03Z svipal quit (Remote host closed the connection) 2020-04-17T20:54:29Z SGASAU quit (Remote host closed the connection) 2020-04-17T20:55:19Z SGASAU joined #scheme 2020-04-17T21:01:26Z RiMaJoy joined #scheme 2020-04-17T21:02:30Z TCZ joined #scheme 2020-04-17T21:02:34Z RiMaJoy quit 2020-04-17T21:09:57Z evdubs_ is now known as evdubs 2020-04-17T21:10:08Z sugarwren quit (Quit: Leaving) 2020-04-17T21:20:37Z kam1 quit (Ping timeout: 264 seconds) 2020-04-17T21:23:22Z ahungry quit (Remote host closed the connection) 2020-04-17T21:26:14Z bars0 joined #scheme 2020-04-17T21:28:23Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-17T21:29:14Z kam1 joined #scheme 2020-04-17T21:29:20Z xelxebar joined #scheme 2020-04-17T21:37:46Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-17T21:40:18Z nchambers quit (Quit: ZNC 1.7.5 - https://znc.in) 2020-04-17T21:40:37Z nchambers joined #scheme 2020-04-17T21:45:07Z bars0 quit (Quit: leaving) 2020-04-17T21:46:52Z SGASAU quit (Remote host closed the connection) 2020-04-17T21:47:16Z SGASAU` joined #scheme 2020-04-17T21:49:29Z SGASAU` quit (Client Quit) 2020-04-17T21:50:08Z SGASAU joined #scheme 2020-04-17T21:50:42Z lubgr quit (Quit: leaving) 2020-04-17T21:52:49Z theseb: say pedantically speaking....(lambda (x) (+ x 3)) is actually a function *definition* rather than a function right? .....just like + is really not a function but rather a symbol that evaluates to a function yes? 2020-04-17T21:55:48Z zaifir: theseb: It's not a definition. It's an expression which evaluates to a procedure object. 2020-04-17T21:56:30Z zaifir: theseb: So you're right, modulo the "definition" term. 2020-04-17T22:05:57Z jcowan: zaifir: No problem, no secrets here! 2020-04-17T22:09:46Z jcowan: Speaking of that, I've been thinking about making Maybe/Either hold multiple values after all 2020-04-17T22:09:52Z jcowan: I think you have thought about it more than I have. 2020-04-17T22:09:58Z zaifir: Oho. 2020-04-17T22:10:16Z jcowan: That would mean that an mproc would accept multiple arguments and return multiple values in a container, right? 2020-04-17T22:10:40Z zaifir: Right. 2020-04-17T22:10:50Z jcowan: As opposed to values in multiple containers: that doesn't make sense. 2020-04-17T22:11:29Z jcowan: So although I think Marc's argument that the length of a Just continues to be 1 if it has values and 0 if it doesn't, we need another API to determine how many values. 2020-04-17T22:11:37Z zaifir: As I mentioned to Marc on the ml, it turns out to require very few changes to the implementation. The bulk of the work would be changing the SRFI and rethinking some of the conversions. 2020-04-17T22:11:38Z jcowan: (non-monadic) 2020-04-17T22:12:45Z zaifir: Yeah, I think that would be useful. 2020-04-17T22:14:51Z zaifir: Reifying the multiple values as a list is really obvious [just becomes (define (just . objs) (raw-just objs))], so why not provide an interface for finding out how many values? 2020-04-17T22:17:27Z turtleman joined #scheme 2020-04-17T22:20:16Z v_m_v joined #scheme 2020-04-17T22:25:30Z jcowan: Now what about Left and Right: Right should accept multiple values, but what about Left? There is no (raise a b c ...) 2020-04-17T22:27:52Z zaifir: Interesting problem. If would be weird if only Right accepted multiple problems, I think. 2020-04-17T22:27:59Z zaifir: Urgh, *values. 2020-04-17T22:29:29Z zaifir: But `raise' is just the default failure continuation for either-ref, so it would be reasonable to provide a continuation taking multiple values. It seems bad to force single-valued Left just because of the default behavior of one procedure. 2020-04-17T22:30:48Z gravicappa quit (Ping timeout: 256 seconds) 2020-04-17T22:31:59Z zaifir: What about calling (error "either-ref: left" obj1 obj2 ...) instead? 2020-04-17T22:33:24Z SGASAU quit (Ping timeout: 256 seconds) 2020-04-17T22:44:55Z theseb quit (Quit: Leaving) 2020-04-17T22:47:09Z v_m_v quit (Remote host closed the connection) 2020-04-17T22:49:17Z pilne quit (Quit: Friends help you move. Real friends help you move bodies.) 2020-04-17T23:02:22Z xlei quit (Ping timeout: 256 seconds) 2020-04-17T23:03:35Z X-Scale` joined #scheme 2020-04-17T23:04:25Z stultulo joined #scheme 2020-04-17T23:04:28Z jcowan: The idea is that when you use Left nad Right asymmetrically (they can also be used symmetrically, of course), Left is supposed to contain a condition object. There is no precise definition of what a condition object is, of course. 2020-04-17T23:04:47Z keep_learning joined #scheme 2020-04-17T23:05:21Z pilne joined #scheme 2020-04-17T23:05:37Z X-Scale quit (Ping timeout: 264 seconds) 2020-04-17T23:05:38Z X-Scale` is now known as X-Scale 2020-04-17T23:06:30Z f8l quit (Ping timeout: 256 seconds) 2020-04-17T23:06:30Z stultulo is now known as f8l 2020-04-17T23:09:15Z drakonis quit (Quit: WeeChat 2.8) 2020-04-17T23:10:07Z hugh_marera_ joined #scheme 2020-04-17T23:10:26Z f8l quit (Remote host closed the connection) 2020-04-17T23:10:52Z TCZ quit (Quit: Leaving) 2020-04-17T23:10:52Z hugh_marera quit (Ping timeout: 256 seconds) 2020-04-17T23:10:53Z hugh_marera_ is now known as hugh_marera 2020-04-17T23:11:46Z f8l joined #scheme 2020-04-17T23:17:28Z xlei joined #scheme 2020-04-17T23:27:17Z hugh_marera quit (Quit: hugh_marera) 2020-04-17T23:31:27Z daviid joined #scheme 2020-04-17T23:36:29Z [rg] joined #scheme 2020-04-17T23:42:28Z greaser|q is now known as GreaseMonkey 2020-04-17T23:46:17Z zaifir: It's currently possible to use Either symmetrically, I guess, provided you use just the core procedures. It's a full sum type, right now, but having Left be single-value only would introduce an asymmetry. But yes, we're mostly going to be using it for left-error/right-value applications. 2020-04-17T23:52:43Z mdhughes: The Scheme numeric tower: https://xkcd.com/2295/ 2020-04-17T23:54:11Z Riastradh: Hardly... The exact/inexact distinction is a rigid binary, whereas this is about degrees of garbage. 2020-04-17T23:54:55Z Riastradh: This is rather a rough heuristic for analyzing error of numerical algorithms. 2020-04-17T23:55:49Z [rg] quit (Quit: [rg]) 2020-04-18T00:03:52Z kam1 quit (Remote host closed the connection) 2020-04-18T00:13:58Z lritter joined #scheme 2020-04-18T00:28:52Z aeth: (= (+ exact exact) exact) 2020-04-18T00:29:01Z aeth: (= (+ inexact exact) inexact) 2020-04-18T00:30:22Z aeth: weirdly, (= (sqrt exact) anything) since most Schmes will do exact-integer-sqrt if possible and otherwise an inexact sqrt 2020-04-18T00:32:07Z aeth: I'm not even sure how that's implemented. Do sqrt twice, once with an inexact result and once as exact-integer-sqrt and if = return the latter? 2020-04-18T01:01:39Z xlei quit (Ping timeout: 250 seconds) 2020-04-18T01:03:18Z xlei joined #scheme 2020-04-18T01:08:01Z mdhughes: I would think you'd call the system sqrt, and if the double has no fraction make an integer. 2020-04-18T01:09:01Z Oxyd: Seems to be what Chibi does at least, but that requires integer โ†’ double conversion before passing it to system sqrt. Which is not a smart idea for bignums. 2020-04-18T01:09:42Z Oxyd: Yes, it seems to give exact result with bignums as well. 2020-04-18T01:11:47Z mdhughes: For double, just check exponent is non-negative, super cheap. Dunno with bignums, I don't use them. 2020-04-18T01:13:40Z Riastradh: (sqrt (+ 1. (expt 2 -52))) had better not return exact 1! 2020-04-18T01:14:10Z Riastradh: But the fractional part is zero in IEEE 754 binary64 arithmetic. 2020-04-18T01:15:34Z ahungry joined #scheme 2020-04-18T01:16:38Z jcowan: I'd do an integer iterative algorithm, and if that fails use the system sqrt or the assembler equivalent 2020-04-18T01:16:47Z jcowan: But of course none of that is a requirement 2020-04-18T01:17:31Z jcowan: zaifir: I'll go with allowing Left to have multiple values and provide a function which raises the first object in a Left, which will become the default. 2020-04-18T01:19:34Z Riastradh: aeth: https://git.savannah.gnu.org/cgit/mit-scheme.git/tree/src/runtime/arith.scm#n1391 2020-04-18T01:20:51Z lritter quit (Ping timeout: 265 seconds) 2020-04-18T01:21:19Z lritter joined #scheme 2020-04-18T01:22:09Z Oxyd: So first system sqrt, then exact-integer-sqrt and if the remainder is nonzero, toss the result. Interesting. 2020-04-18T01:22:33Z Oxyd: Toss the result of exact-integer-sqrt I mean. 2020-04-18T01:23:09Z gwatt: Looks to be what Chez Scheme does as well 2020-04-18T01:24:16Z Riastradh: I don't really remember why I did it that way. Judging by the commit history, it looks like I narrowly changed one branch, in order to avoid potential changes to the semantics of the other branches. 2020-04-18T01:24:33Z Riastradh: If I were doing it afresh I would probably start by doing exact-integer-sqrt and it failed then defer to flo:sqrt. 2020-04-18T01:26:15Z Oxyd: I still wonder how many people actually use Scheme for the sort of numeric stuff that would benefit from having exact square roots of square numbers. Or bignums and rationals, for that matter. Seems to me that all the numeric people would be scared away by the prefix syntax. 2020-04-18T01:26:15Z gwatt: https://github.com/cisco/ChezScheme/blob/master/s/5_3.ss#L1518-L1533 2020-04-18T01:28:12Z Riastradh: Oxyd: Nobody writing numerical algorithms cares about it, but people doing mixtures of symbolic and numeric stuff may -- e.g., the SICM mechanics system. 2020-04-18T01:34:43Z jcowan: zaifir: Should Nothing be identified with Just containing no values, or kept distinct from it? 2020-04-18T01:35:18Z jcowan: I am assuming for the moment that they are distinct. 2020-04-18T01:37:16Z Riastradh: Nothing is Just in this world! 2020-04-18T01:37:46Z Riastradh: ...or: no, they should be distinct, just like in Haskell Nothing is distinct from Just (). 2020-04-18T01:38:45Z mdhughes: My data point of 1 is that I mostly used Scheme for statistics and graphing between college and taking it up as my production language. But I also use an RPN calculator, I dislike algebraic expressions. 2020-04-18T01:39:42Z Oxyd: But you also don't use bignums. 2020-04-18T01:39:48Z mdhughes: I think a lot of practical engineers would do well with Scheme; scientists and mathematicians have Julia and R and such. 2020-04-18T01:39:54Z turtleman quit (Ping timeout: 256 seconds) 2020-04-18T01:40:26Z Oxyd: And Mathematica. And, uhโ€ฆ Matlab. 2020-04-18T01:40:34Z mdhughes: Correct; or if I do it's only accidentally. Almost everything I need to measure fits in a double, and needs maybe 3 digits precision. 2020-04-18T01:41:43Z gwatt: I would happily use scheme for work (I convinced our book club to do SICP) but it's just not the best tool for anything we do. 2020-04-18T01:41:44Z Oxyd: I've just been wondering why Scheme, of all languages, has arbitrary-precision arithmetic built-in. (R7RS doesn't actually require it, but it's traditional to have it.) 2020-04-18T01:42:19Z Oxyd: And Python, for example, has long integers, but not fractions. Even though Python is way more popular with the numeric folk. 2020-04-18T01:42:21Z mdhughes: Why is it not the best tool? It's fast, it's easy to write a DSL for your problems. 2020-04-18T01:42:30Z pinoaffe: Oxyd: because scheme is a relatively "mathematical" language 2020-04-18T01:42:43Z gwatt: mdhughes: most of my problems are "do something with the database, json, and http" 2020-04-18T01:43:07Z mdhughes: Databases I haven't really got into yet; but I will soon, since I need to do some web server stuff. 2020-04-18T01:43:10Z gwatt: and for all of those things it's been faster to write in perl, python, or sometimes even bash 2020-04-18T01:43:41Z mdhughes: JSON I ended up writing my own parser for speed & tolerance of extra text in the input. 2020-04-18T01:45:00Z mdhughes: HTTP there's at least awful in Chicken. But I'd rather use Chez for this, so I dunno yet. I do have a small text server that was trivial to write. 2020-04-18T01:54:31Z seepel quit (Ping timeout: 250 seconds) 2020-04-18T02:01:04Z mdhughes: Also, Jupyter server for MIT/Scheme: https://github.com/joeltg/mit-scheme-kernel 2020-04-18T02:09:47Z zaifir: jcowan: Definitely distinct, IMO. 2020-04-18T02:14:11Z jcowan: Can you say why? 2020-04-18T02:15:58Z ahungry quit (Remote host closed the connection) 2020-04-18T02:16:29Z ahungry joined #scheme 2020-04-18T02:21:41Z zaifir: jcowan: The first issues that come to mind are that (a) Nothing is no longer unique and it would be necessary to unwrap a Just to determine whether it's a Nothing, which is odd; (b) which continuation of maybe-ref gets called on zero-value Just? 2020-04-18T02:22:39Z zaifir: Those aren't very big objections. I'd like to see what Marc has to say about this. 2020-04-18T02:23:20Z jcowan: The idea is that (just) would return the unique Nothing object, as opposed to a Just with no values. 2020-04-18T02:24:54Z zaifir: I suppose that makes sense. 2020-04-18T02:25:54Z zaifir: So it's really just a modification to the `just' procedure. 2020-04-18T02:26:21Z brendyyn joined #scheme 2020-04-18T02:26:57Z zaifir: OK, I thought it would entail both (just? (just)) and (nothing? (just)) being #t, which would be obviously bad. 2020-04-18T02:41:19Z mdhughes: Trawling the ACM Scheme papers https://dl.acm.org/action/doSearch?AllField=scheme 2020-04-18T02:41:49Z mdhughes: But most of the time I start reading a paper, find an obvious error or just shit-I-don't-care-about like strong types, then delete the paper. 2020-04-18T02:42:19Z mdhughes: Also a lot of non-Scheme uses of the word "Scheme". 2020-04-18T02:42:55Z zaifir: I can't see any use for a zero-value Just, in any case, so it makes sense to me for (just) to give Nothing. 2020-04-18T02:44:13Z Riastradh: zaifir: Should Just () in Haskell be equivalent to Nothing? 2020-04-18T02:44:38Z Riastradh: Consider, for instance, (if (mumblefrotz? x) (call-with-values procedure just) (nothing)). 2020-04-18T02:45:14Z Riastradh: Do you think that, if the result is y, it should be a theorem (mumblefrotz? x) implies (just? y), or no? 2020-04-18T02:48:04Z Riastradh: Should it be a theorem that (mumblefrotz? x) implies (not (nothing? y))? 2020-04-18T02:48:07Z zaifir: Riastradh: Yes, although `procedure' returning no values is an edge case. 2020-04-18T02:48:15Z Riastradh: zaifir: Why is it an edge case? 2020-04-18T02:48:41Z Riastradh: zaifir: You're choosing to make it an edge case; what's the value you get out of making that distinction? 2020-04-18T02:49:31Z Riastradh: If your answer is that those propositions _should_ be theorems, then (just) cannot simply return the nothing object. 2020-04-18T02:52:12Z zaifir: Riastradh: Yes, I admit I'm just calling it an edge case because a procedure returning no values there would be fairly useless. 2020-04-18T02:53:05Z Riastradh: zaifir: The point here is that this fragment behaves the same way _irrespective_ of what the procedure is. In other words, the whole reason to use just/nothing is so that you can reliably interrogate the result to ascertain which way the branch went. 2020-04-18T02:53:51Z zaifir: Riastradh: The one distinction I see between the `just' procedure in Scheme and the Just constructor in Haskell is that, here, (just) can return Nothing without creating an object that is both just? and nothing?. 2020-04-18T02:54:03Z Riastradh: zaifir: But why would you make that choice? 2020-04-18T02:54:10Z Riastradh: If the propositions I mentioned _aren't_ theorems, then I'm really not sure what the point of a just/nothing distinction is. 2020-04-18T02:54:46Z Riastradh: Why is your `just' not simply, say, `list'? Why bother with inventing a new disjoint type? 2020-04-18T02:54:51Z zaifir: Riastradh: Right, right. 2020-04-18T02:58:45Z zaifir: Riastradh: I hadn't thought through all the implications of `just' returning Nothing in some cases. 2020-04-18T03:12:29Z zaifir: I guess another question is, is there a useful application for (just) returning Nothing? 2020-04-18T03:24:19Z jcowan: Riastradh: But () in Haskell, as in Scheme, is a value, not the absence of a value. 2020-04-18T03:26:01Z jcowan: It's clear that zero values is an extremely marginal case for monadic operations, but as long as Scheme procedures can return zero values, that case belongs to the relevant category. 2020-04-18T03:27:30Z jcowan: My previous position was that the category for Maybe includes only single-argument single-result functions, a subset of Scheme procedures. Now I'm convinced that because of the multiple argument / multiple value duality, it makes sense to extend it. 2020-04-18T03:27:42Z jcowan: But overall, yes, (just) => Nothing is wrong. 2020-04-18T03:28:15Z zaifir: Yes, I think so. 2020-04-18T03:28:44Z jcowan: Thanks for the help 2020-04-18T03:29:35Z zaifir: Riastradh: Thanks for encouraging me to think harder, as usual :) 2020-04-18T03:30:16Z Riastradh: (I am not taking a position on whether `just' should be extended to multiple values.) 2020-04-18T03:32:01Z jcowan: I think we can do so while doing no harm, since anyone who doesn't care for it can always use the more restrictive definition. 2020-04-18T03:32:23Z raingloom quit (Ping timeout: 258 seconds) 2020-04-18T03:35:39Z zaifir: I initially thought multiple values were too much additional complexity to be worth it, but I think it's actually pretty elegant. The extension doesn't interfere with the single-value cases at all, AFAICT. 2020-04-18T03:36:39Z Riastradh: It makes generic logic using just/nothing more cumbersome. 2020-04-18T03:46:34Z aeth: I love the elegant composition of multiple values, in general. 2020-04-18T03:46:49Z lockywolf_ quit (Ping timeout: 265 seconds) 2020-04-18T03:48:06Z pilne quit (Quit: We be chillin' - IceChat style) 2020-04-18T04:14:29Z ArthurStrong left #scheme 2020-04-18T04:57:49Z ahungry quit (Ping timeout: 250 seconds) 2020-04-18T04:59:02Z ahungry joined #scheme 2020-04-18T05:41:28Z ahungry quit (Remote host closed the connection) 2020-04-18T05:55:24Z skapata quit (Quit: ฤœis!) 2020-04-18T06:02:55Z gravicappa joined #scheme 2020-04-18T06:36:24Z lockywolf joined #scheme 2020-04-18T06:40:02Z lockywolf_ joined #scheme 2020-04-18T06:43:04Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-18T07:07:37Z v_m_v joined #scheme 2020-04-18T07:18:10Z zig: If it was the last program ever you code, what would it be? 2020-04-18T07:19:00Z aeth: An Emacs clone, because then all other functionality I want to code is justifiable 2020-04-18T07:19:16Z aeth: Sure, it needs a web browser and a PDF reader... 2020-04-18T07:23:03Z pjb: zig: An AI simulator of yourself! :-) 2020-04-18T07:24:30Z aeth: I mean, if you code a strong AI, it will be the last program you ever code. 2020-04-18T08:02:19Z mdhughes: Well, I guess the last program I code will be a script to nuke my machines and servers so people don't see all my pr0n and stupid half-written shit. 2020-04-18T08:02:55Z mdhughes: I should probably write that long ahead of time, so it can run when I'm gone, and put it on a deadman switch. 2020-04-18T08:04:45Z mdhughes: When one of my best friends died last year, we found his machines were all drive encrypted, and no passwords written down, so there was no way to extract anything anyway. That's probably not what he wanted. 2020-04-18T08:06:00Z wasamasa: it's an alternative to nuking 2020-04-18T08:07:58Z mdhughes: Oh, and the AI sim of yourself is called a Lifebox, Rudy Rucker's written about them a lot. 2020-04-18T08:21:05Z webshinra quit (Remote host closed the connection) 2020-04-18T08:36:06Z webshinra joined #scheme 2020-04-18T08:38:48Z zig: wasamasa: +1 2020-04-18T08:46:27Z v_m_v quit (Remote host closed the connection) 2020-04-18T09:13:10Z xlei quit (Ping timeout: 256 seconds) 2020-04-18T09:18:26Z xlei joined #scheme 2020-04-18T09:29:49Z asdf456 joined #scheme 2020-04-18T09:30:24Z asdf456 quit (Remote host closed the connection) 2020-04-18T09:30:39Z nerdypepper quit (Quit: bye) 2020-04-18T09:32:58Z nerdypepper joined #scheme 2020-04-18T10:09:26Z Tirifto joined #scheme 2020-04-18T10:09:30Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-18T10:35:05Z TCZ joined #scheme 2020-04-18T10:44:44Z raingloom joined #scheme 2020-04-18T10:58:58Z lockywolf joined #scheme 2020-04-18T11:25:10Z lritter quit (Quit: Leaving) 2020-04-18T11:37:51Z sanaris quit (Ping timeout: 260 seconds) 2020-04-18T11:42:50Z brendyyn quit (Ping timeout: 256 seconds) 2020-04-18T12:00:03Z jcowan: Hopefully the last program I code will be unfinished, like Dickens's novel _The Mystery of Edwin Drood_ which ends with the words "Or if I was to deny" 2020-04-18T12:23:04Z zig quit (Quit: WeeChat 1.9.1) 2020-04-18T12:28:41Z turtleman joined #scheme 2020-04-18T12:33:07Z lockywolf_ joined #scheme 2020-04-18T12:36:06Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-18T12:40:36Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-18T12:56:23Z X-Scale` joined #scheme 2020-04-18T12:57:04Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-18T12:57:05Z X-Scale` is now known as X-Scale 2020-04-18T12:58:13Z lockywolf__ joined #scheme 2020-04-18T13:00:14Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-18T13:03:13Z coffeeturtle joined #scheme 2020-04-18T13:07:03Z fradet quit (Ping timeout: 250 seconds) 2020-04-18T13:26:46Z ccl-logbot joined #scheme 2020-04-18T13:26:46Z 2020-04-18T13:26:46Z names: ccl-logbot evhan coffeeturtle lockywolf__ X-Scale turtleman raingloom TCZ Tirifto nerdypepper xlei webshinra gravicappa daviid f8l nchambers xelxebar wasamasa evdubs srandon111 whiteline emacsomancer klovett zaifir bandali mroh keep-learning[m] kopiyka Blukunfando tolja Riastradh sdu nckx aeth yosafbridge titanbiscuit epony jboy spectrumgomas[m] add^_ notzmv mdhughes DerGuteMoritz aoh amoe ober cantstanya madage teardown Yardanico lavaflow sz0 sarna 2020-04-18T13:26:46Z names: stux|work xavierm02 siraben marmulak[m] mouloud[m] amnesic[m] dieggsy Ericson2314 mbakke Gnuxie[m] moon-child _apg pjb scal_ lpsmith abordado_ terpri gabot joast grobe0ba Zenton dmiles travv0 tryte astronavt m1dnight_ pinoaffe stepnem zmt01 dan64- ggoes xi heredoc hive-mind kjak kilimanjaro abbe eagleflo rudybot cky vyzo averell malaclyps ski casaca shymega poga drot eMBee balkamos deesix Duns_Scrotus z0d manualcrank ravndal jackhill Oddity GreaseMonkey 2020-04-18T13:26:46Z names: cemerick cmatei sudden snits ft Lysandros ecraven ByronJohnson fadein mjsir911 conjunctive ozzloy r1b zerous pounce copec akkad gnomon dsp cibs DKordic weinholt tessier tdammers ohama erkin belmarca aos mario-goulart edgar-rft foof mats gf3_ Kooda jxy Oxyd tumdum cpape bsima rotty rubic88 fiddlerwoaroof stux16777216Away emma SirDayBat rbarraud dozzie pflanze gwatt cross fgudin timwis nevermind r3x5 dpk Ekho clog LeoNerd duncanm bashbjorn friscosam ec 2020-04-18T13:26:46Z names: kwmiebach englishm nisstyre fizzie davl sp1ff hugo yumh uplime lloda stephe fowlduck samth jyc_ physpi jcowan bchar d_run rann terrorjack___ delucks wigust- kbtr_ Urfin Blkt lbtjp DeeEff__ ullbeking 2020-04-18T13:29:18Z TCZ quit (Quit: Leaving) 2020-04-18T13:32:22Z civodul joined #scheme 2020-04-18T13:36:50Z valjda joined #scheme 2020-04-18T13:37:24Z luni joined #scheme 2020-04-18T13:49:20Z choas joined #scheme 2020-04-18T13:53:15Z choas quit (Client Quit) 2020-04-18T13:56:37Z choas joined #scheme 2020-04-18T13:57:04Z xlei quit (Ping timeout: 256 seconds) 2020-04-18T14:00:44Z lockywolf__ quit (Remote host closed the connection) 2020-04-18T14:01:12Z lockywolf__ joined #scheme 2020-04-18T14:05:45Z xlei joined #scheme 2020-04-18T14:10:45Z daviid` joined #scheme 2020-04-18T14:12:44Z daviid quit (Ping timeout: 265 seconds) 2020-04-18T14:20:15Z lockywolf__ quit (Read error: Connection reset by peer) 2020-04-18T14:49:39Z Tirifto quit (Quit: Leaving.) 2020-04-18T14:54:31Z mdhughes: https://www.youtube.com/watch?v=ZlIz0q8aWpA 2020-04-18T15:04:06Z SGASAU joined #scheme 2020-04-18T15:17:45Z hugh_marera joined #scheme 2020-04-18T15:23:29Z SGASAU: (Pedantically speaking, "(lambda (x) (+ x 3))" is just a string of symbols, whether it means anything, remains to be demonstrated. It can be that "lambda", or "+", or "x", or "3" is redefined to mean something else. How do you know?) 2020-04-18T15:33:02Z jao joined #scheme 2020-04-18T15:40:35Z luni: Maybe the possible answers are at least in part related to the formalism we use to represent and describe the events on different scales. 2020-04-18T15:44:42Z SGASAU: I just wanted to say that speaking "pedantically" is quite stupid. 2020-04-18T15:44:56Z TCZ joined #scheme 2020-04-18T15:46:55Z luni: since the same reality concept is object of debates what you are saying is makes sense 2020-04-18T15:47:31Z coffeeturtle quit (Quit: leaving) 2020-04-18T15:49:20Z jao quit (Ping timeout: 256 seconds) 2020-04-18T15:51:51Z coffeeturtle joined #scheme 2020-04-18T15:53:20Z luni quit (Quit: Connection closed) 2020-04-18T15:57:21Z TCZ quit (Quit: Leaving) 2020-04-18T15:57:26Z jao joined #scheme 2020-04-18T16:05:22Z jao quit (Ping timeout: 256 seconds) 2020-04-18T16:12:24Z jao joined #scheme 2020-04-18T16:17:09Z skapata joined #scheme 2020-04-18T16:51:33Z ngz joined #scheme 2020-04-18T17:07:27Z stultulo joined #scheme 2020-04-18T17:09:14Z f8l quit (Ping timeout: 240 seconds) 2020-04-18T17:09:14Z stultulo is now known as f8l 2020-04-18T17:10:32Z daviid` quit (Ping timeout: 256 seconds) 2020-04-18T17:17:12Z seepel joined #scheme 2020-04-18T17:18:43Z zig joined #scheme 2020-04-18T17:29:45Z zig: my last program would be along the lines of aeth emacs clone. 2020-04-18T17:45:10Z Riastradh quit (Remote host closed the connection) 2020-04-18T17:48:00Z zaifir: If your last program is to be an Emacs clone ... start now. 2020-04-18T18:01:23Z Riastradh joined #scheme 2020-04-18T18:03:00Z Blukunfando quit (Ping timeout: 256 seconds) 2020-04-18T18:10:50Z minusoneplusone joined #scheme 2020-04-18T18:38:17Z zig: yeah sure it is a long project. 2020-04-18T18:39:02Z zig: I figured I need something along the lines of zettlekasten, so I will work on that first 2020-04-18T18:39:12Z zig: some kind of replacement for org-mode 2020-04-18T18:39:21Z zig: zaifir: are you familiar with zettlekasten? 2020-04-18T18:41:01Z zig: I am starting with the note taking application to be able gather ideas about will pane out the pseud-scheme I had in mind inspired from unison where one can translate code 2020-04-18T18:41:24Z zig: but that might remains an eternal utopia. 2020-04-18T18:41:39Z zig: monoculture and hierarchy won or will win. 2020-04-18T18:41:48Z zaifir: zig: Yeah, I've read about it. 2020-04-18T18:42:32Z zig: for the others: https://medium.com/@mosessampaul/zettelkasten-method-of-knowledge-management-the-second-brain-218108942514 2020-04-18T19:06:09Z izh_ joined #scheme 2020-04-18T19:13:23Z TCZ joined #scheme 2020-04-18T19:23:27Z evdubs quit (Quit: Leaving) 2020-04-18T19:24:52Z dioxirane joined #scheme 2020-04-18T19:30:39Z evdubs joined #scheme 2020-04-18T19:30:43Z dioxirane quit (Quit: Connection closed) 2020-04-18T19:46:25Z keep_learning joined #scheme 2020-04-18T19:56:17Z drakonis joined #scheme 2020-04-18T20:00:52Z duncanm: Aeth is working on an emacs? Cool 2020-04-18T20:00:59Z duncanm: I was interested in Edwin 2020-04-18T20:04:28Z edgar-rft: aeth *is* an emacs clone 2020-04-18T20:17:19Z srandon111 quit (Quit: leaving) 2020-04-18T20:20:44Z drakonis quit (Ping timeout: 265 seconds) 2020-04-18T20:22:14Z pinoaffe: I guess that, since software that would not benefit from being integrated into emacs is *obviously* unthinkable, one could adapt greenspun's tenth rule to say that every single program (emacs included) is an ad hoc, informally-specified, bug-ridden, slow implementation of half of emacs :) 2020-04-18T20:22:38Z zaifir: pinoaffe: Sounds about right. 2020-04-18T20:23:17Z drakonis joined #scheme 2020-04-18T20:24:08Z zaifir: The Emacs that can be written is not the eternal Emacs. 2020-04-18T20:27:25Z pinoaffe: same vibe as http://steve-yegge.blogspot.com/2006/04/lisp-is-not-acceptable-lisp.html 2020-04-18T20:28:06Z izh_ quit (Quit: Leaving) 2020-04-18T20:28:08Z valjda quit (Ping timeout: 256 seconds) 2020-04-18T20:30:13Z valjda joined #scheme 2020-04-18T20:31:26Z zaifir: Well, that's more like "There is no Lisp that is an acceptable Lisp by the standard of Stevey". 2020-04-18T20:36:36Z drakonis quit (Ping timeout: 246 seconds) 2020-04-18T20:50:16Z drakonis joined #scheme 2020-04-18T20:58:36Z Riastradh: ...is there any vibe there other than interminable prose 2020-04-18T21:02:36Z dmiles quit (Ping timeout: 265 seconds) 2020-04-18T21:15:11Z nerdypepper quit (Ping timeout: 256 seconds) 2020-04-18T21:16:00Z coffeeturtle quit (Remote host closed the connection) 2020-04-18T21:17:59Z nerdypepper joined #scheme 2020-04-18T21:43:32Z pilne joined #scheme 2020-04-18T21:44:39Z Mat63 joined #scheme 2020-04-18T21:44:44Z Mat63: Hi. Do they know of any software that helps you make concept maps? 2020-04-18T21:46:06Z seepel quit (Ping timeout: 265 seconds) 2020-04-18T21:46:18Z dmiles joined #scheme 2020-04-18T21:48:53Z raingloom quit (Remote host closed the connection) 2020-04-18T21:49:49Z raingloom joined #scheme 2020-04-18T21:50:23Z raingloom quit (Remote host closed the connection) 2020-04-18T21:50:37Z Mat63 quit (Remote host closed the connection) 2020-04-18T21:53:22Z raingloom joined #scheme 2020-04-18T21:53:23Z raingloom quit (Remote host closed the connection) 2020-04-18T21:54:11Z raingloom joined #scheme 2020-04-18T21:54:58Z raingloom quit (Remote host closed the connection) 2020-04-18T21:55:27Z raingloom joined #scheme 2020-04-18T21:55:58Z notzmv quit (Ping timeout: 256 seconds) 2020-04-18T22:00:29Z Guest52582 joined #scheme 2020-04-18T22:00:32Z jcowan: The thing about running a blog as opposed to an IRC channel is that when people search for "imitate a wounded gorilla" on Google and it sends them to your blog, you don't know about it unless you check the Google referrer list. But on IRC everyone has to see them asking their dumb questions. 2020-04-18T22:03:53Z raingloom quit (Remote host closed the connection) 2020-04-18T22:04:20Z raingloom joined #scheme 2020-04-18T22:08:34Z gravicappa quit (Ping timeout: 240 seconds) 2020-04-18T22:14:14Z rain joined #scheme 2020-04-18T22:16:56Z raingloom quit (Ping timeout: 256 seconds) 2020-04-18T22:21:37Z minusoneplusone quit (Quit: Connection closed) 2020-04-18T22:27:25Z aeth: duncanm: No, but it would be my last program. 2020-04-18T22:27:32Z aeth: I have a "few" programs I have to get to first 2020-04-18T22:27:34Z whiteline quit (Remote host closed the connection) 2020-04-18T22:28:10Z duncanm: Ahhh 2020-04-18T22:29:12Z aeth: ah, it was mentioned again later 2020-04-18T22:29:17Z aeth: it's clear in the earlier context 2020-04-18T22:29:49Z aeth: duncanm: If it was the last program ever you code, what would it be? An Emacs clone, because then all other functionality I want to code is justifiable Sure, it needs a web browser and a PDF reader... 2020-04-18T22:36:06Z whiteline joined #scheme 2020-04-18T22:42:00Z SGASAU: Alright, he's gone, but for the record... Conzilla 2020-04-18T22:43:15Z SGASAU: aeth: so... you mean that the only thing NetBeans lacks is PDF reader... :) 2020-04-18T22:49:32Z seepel joined #scheme 2020-04-18T23:10:13Z TCZ quit (Quit: Leaving) 2020-04-18T23:20:03Z Riastradh quit (Remote host closed the connection) 2020-04-18T23:22:21Z fadein quit (Read error: Connection reset by peer) 2020-04-18T23:25:39Z fadein joined #scheme 2020-04-18T23:27:47Z Riastradh joined #scheme 2020-04-18T23:31:55Z turtleman quit (Ping timeout: 250 seconds) 2020-04-18T23:35:53Z turtleman joined #scheme 2020-04-18T23:39:10Z aeth: SGASAU: Oh, no, there are plenty of features that a piece of software lacks... an infinite number, really! 2020-04-18T23:39:14Z Guest52582 is now known as notzmv 2020-04-18T23:39:29Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-18T23:42:44Z fadein quit (Quit: leaving) 2020-04-18T23:42:57Z pjb: Just take a normal human being. There's an infinite number of software features that he's lacking. Hence the constant learning it has to do. 2020-04-18T23:43:21Z pjb: Making AI would just jump ahead the learning curve of humans, but it won't solve this problem! 2020-04-18T23:46:07Z SGASAU: aeth: infinite numbers do not exist. 2020-04-18T23:47:22Z SGASAU invokes ghosts of Esenin-Volpin and Vopenka... 2020-04-18T23:49:26Z SGASAU: aeth: BTW, that's why they are explicitly called "not-a-number" in IEEE 754 :D 2020-04-18T23:50:27Z Riastradh: ...IEEE 754 infinities are not NaN... 2020-04-18T23:50:32Z whiteline quit (Read error: Connection reset by peer) 2020-04-18T23:53:41Z SGASAU shrugs. 2020-04-18T23:54:08Z hugh_marera quit (Quit: hugh_marera) 2020-04-18T23:55:34Z SGASAU: Their handling is special irrespectively of exact terms. 2020-04-18T23:56:08Z whiteline joined #scheme 2020-04-18T23:56:38Z whiteline quit (Remote host closed the connection) 2020-04-18T23:57:02Z whiteline joined #scheme 2020-04-19T00:02:54Z SGASAU quit (Ping timeout: 240 seconds) 2020-04-19T00:03:00Z SGASAU` joined #scheme 2020-04-19T00:03:07Z TCZ joined #scheme 2020-04-19T00:05:09Z SGASAU` quit (Read error: Connection reset by peer) 2020-04-19T00:07:33Z SGASAU joined #scheme 2020-04-19T00:07:38Z SGASAU quit (Remote host closed the connection) 2020-04-19T00:08:30Z SGASAU joined #scheme 2020-04-19T00:12:45Z zmt00 joined #scheme 2020-04-19T00:15:42Z zmt01 quit (Ping timeout: 260 seconds) 2020-04-19T00:18:08Z Riastradh quit (Remote host closed the connection) 2020-04-19T00:30:05Z aeth: SGASAU: "an infinite number of X" => "the cardinality of the set of X is not finite" 2020-04-19T00:30:15Z aeth: To translate an idiom to slightly more accurate math terms 2020-04-19T00:30:34Z aeth: but nobody (outside of IRC) is going to go around talking about cardinalities, so sloppier language is generally used 2020-04-19T00:32:10Z Riastradh joined #scheme 2020-04-19T00:33:21Z aeth: I don't think that the quantity ("number") of possible features are countably infinite, either, but I can leave that up to you to prove/disprove. 2020-04-19T00:33:43Z Riastradh: NUMBERS AREN'T REAL 2020-04-19T00:34:22Z aeth: reals aren't numbers! 2020-04-19T00:35:17Z Riastradh: real numbers are more made up and fantastical than imaginary numbers 2020-04-19T00:36:23Z aeth: I mean 2020-04-19T00:36:25Z aeth: yes 2020-04-19T00:36:41Z aeth: If something is an "imaginary" number, but computable, it's way more real than a real that's not computable! 2020-04-19T00:41:59Z ngz quit (Ping timeout: 272 seconds) 2020-04-19T00:42:30Z aeth: 4+3i is no more imaginary than (4, 3) and if you think that (4, 3) can't exist then just look at any chess board (but they use letters for one side for no reason) 2020-04-19T00:43:59Z SGASAU quit (Remote host closed the connection) 2020-04-19T00:45:30Z SGASAU` joined #scheme 2020-04-19T00:46:40Z lritter joined #scheme 2020-04-19T00:51:44Z raingl joined #scheme 2020-04-19T00:52:58Z valjda quit (Quit: WeeChat 2.8) 2020-04-19T00:53:40Z SGASAU` quit (Remote host closed the connection) 2020-04-19T00:54:31Z SGASAU` joined #scheme 2020-04-19T00:55:01Z rain quit (Ping timeout: 258 seconds) 2020-04-19T00:59:36Z SGASAU` quit (Remote host closed the connection) 2020-04-19T01:00:18Z SGASAU` joined #scheme 2020-04-19T01:05:33Z TCZ quit (Quit: Leaving) 2020-04-19T01:18:12Z lritter quit (Ping timeout: 256 seconds) 2020-04-19T01:18:59Z lritter joined #scheme 2020-04-19T01:27:39Z ahungry joined #scheme 2020-04-19T01:40:51Z SGASAU` quit (Remote host closed the connection) 2020-04-19T01:41:30Z SGASAU` joined #scheme 2020-04-19T01:46:29Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-19T01:47:15Z SGASAU joined #scheme 2020-04-19T01:49:14Z SGASAU: aeth: all sets are finite, see Vopenka. ;) 2020-04-19T01:56:49Z aeth: I mean, everyone draws the line differently, some are ultra-finitist and some are far from that. 2020-04-19T01:56:58Z aeth: But if I'm going to draw the line I'm personally going to draw it at uncomptable numbers vs. not 2020-04-19T01:57:09Z aeth: And, I mean, some people will say they're all fiction 2020-04-19T01:57:23Z SGASAU: aeth: besides, it is relatively easy to see that "computable" immediately brings you down into constructivism Kolmogorov style. Constructivist real numbers are not "classical" real numbers. 2020-04-19T01:59:23Z aeth: I personally see any real/complex number that's not computable as fiction that makes proofs easier. 2020-04-19T01:59:29Z SGASAU: That you cannot compare two numbers effectively, is not what you are taught in elementary school. 2020-04-19T02:00:43Z SGASAU coughs. 2020-04-19T02:00:43Z SGASAU: I suggest that you check a book on constructive analysis. 2020-04-19T02:01:19Z SGASAU: I hope, you understand that LEM is not true, don't you? 2020-04-19T02:03:03Z SGASAU: (Or have I misinterpreted you?..) 2020-04-19T02:04:23Z aeth: SGASAU: I'm just taking a middle ground between mathematical Platonists and the others. I will accept a number as being in some sense "real" (i.e. existing) if it is computable. Otherwise, it is probably just a useful fiction that results from certain rules. 2020-04-19T02:04:57Z aeth: Saying something is "true" or "not true" (heh) isn't particularly useful here because it depends on the given system. 2020-04-19T02:06:10Z zaifir: "God created infinity, and man, unable to understand infinity, had to invent finite sets." --Gian-Carlo Rota 2020-04-19T02:06:39Z zaifir: (Take that, Kronecker!) 2020-04-19T02:09:02Z SGASAU quit (Ping timeout: 265 seconds) 2020-04-19T02:10:55Z jcowan: Die Consen und die Fixnumen hat der lieber MCCARTHY gemacht, alles andere ist Hackerwerk. 2020-04-19T02:13:23Z SGASAU joined #scheme 2020-04-19T02:23:57Z SGASAU quit (Remote host closed the connection) 2020-04-19T02:24:49Z SGASAU joined #scheme 2020-04-19T02:32:17Z daviid joined #scheme 2020-04-19T02:32:19Z torbo joined #scheme 2020-04-19T02:33:49Z brendyyn joined #scheme 2020-04-19T03:20:50Z raingl quit (Ping timeout: 256 seconds) 2020-04-19T03:21:13Z seepel quit (Ping timeout: 264 seconds) 2020-04-19T03:36:31Z turtleman quit (Ping timeout: 265 seconds) 2020-04-19T03:49:55Z ahungry quit (Ping timeout: 260 seconds) 2020-04-19T03:52:07Z Riastradh quit (Ping timeout: 258 seconds) 2020-04-19T04:30:24Z mdhughes: There are no numbers, there are only electrons and half-adders. 2020-04-19T04:37:18Z zaifir: That's some hyperempiricism there. 2020-04-19T04:43:06Z gravicappa joined #scheme 2020-04-19T04:45:13Z jao quit (Ping timeout: 264 seconds) 2020-04-19T05:46:27Z Riastradh joined #scheme 2020-04-19T05:52:54Z drakonis quit (Quit: WeeChat 2.8) 2020-04-19T06:13:29Z evdubs quit (*.net *.split) 2020-04-19T06:13:30Z spectrumgomas[m] quit (*.net *.split) 2020-04-19T06:13:31Z xavierm02 quit (*.net *.split) 2020-04-19T06:13:32Z amnesic[m] quit (*.net *.split) 2020-04-19T06:13:32Z eagleflo quit (*.net *.split) 2020-04-19T06:13:32Z abbe quit (*.net *.split) 2020-04-19T06:15:22Z evdubs joined #scheme 2020-04-19T06:15:22Z spectrumgomas[m] joined #scheme 2020-04-19T06:15:22Z xavierm02 joined #scheme 2020-04-19T06:15:22Z amnesic[m] joined #scheme 2020-04-19T06:15:22Z eagleflo joined #scheme 2020-04-19T06:15:22Z abbe joined #scheme 2020-04-19T06:41:45Z Menchers joined #scheme 2020-04-19T07:04:21Z zig quit (Ping timeout: 265 seconds) 2020-04-19T07:17:20Z zig joined #scheme 2020-04-19T07:46:28Z Blukunfando joined #scheme 2020-04-19T08:03:16Z torbo quit (Remote host closed the connection) 2020-04-19T08:16:41Z SGASAU quit (Remote host closed the connection) 2020-04-19T08:17:22Z SGASAU joined #scheme 2020-04-19T08:31:15Z zig quit (Quit: WeeChat 1.9.1) 2020-04-19T08:40:46Z zig joined #scheme 2020-04-19T09:21:25Z SGASAU: Hm. I'd say that electrons are a lot more abstract than numbers, but whatever. 2020-04-19T09:31:57Z SGASAU` joined #scheme 2020-04-19T09:33:24Z SGASAU` quit (Client Quit) 2020-04-19T09:34:26Z SGASAU quit (Ping timeout: 258 seconds) 2020-04-19T09:37:13Z SGASAU` joined #scheme 2020-04-19T09:39:46Z raingl joined #scheme 2020-04-19T09:52:17Z klovett_ joined #scheme 2020-04-19T09:52:32Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-19T09:53:32Z SGASAU joined #scheme 2020-04-19T09:53:52Z klovett quit (Ping timeout: 256 seconds) 2020-04-19T09:57:42Z skapata quit (Remote host closed the connection) 2020-04-19T10:07:23Z raingl quit (Quit: Leaving) 2020-04-19T10:07:33Z raingl joined #scheme 2020-04-19T10:07:49Z SGASAU` joined #scheme 2020-04-19T10:10:18Z SGASAU quit (Ping timeout: 256 seconds) 2020-04-19T10:16:16Z SGASAU` quit (Remote host closed the connection) 2020-04-19T10:17:49Z SGASAU`` joined #scheme 2020-04-19T10:18:05Z skapata joined #scheme 2020-04-19T10:23:54Z SGASAU`` quit (Remote host closed the connection) 2020-04-19T10:24:45Z TheGreekOwl joined #scheme 2020-04-19T10:38:29Z skapata quit (Quit: ฤœis!) 2020-04-19T10:41:43Z z-memory joined #scheme 2020-04-19T10:53:23Z civodul joined #scheme 2020-04-19T11:07:27Z luni joined #scheme 2020-04-19T11:16:17Z f8l quit (Remote host closed the connection) 2020-04-19T11:17:37Z f8l joined #scheme 2020-04-19T11:27:13Z konvertex joined #scheme 2020-04-19T11:31:24Z brendyyn quit (Ping timeout: 256 seconds) 2020-04-19T11:43:37Z izh_ joined #scheme 2020-04-19T11:49:31Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-19T11:51:44Z keep_learning joined #scheme 2020-04-19T11:53:26Z xlei quit (Ping timeout: 256 seconds) 2020-04-19T11:55:09Z xlei joined #scheme 2020-04-19T12:02:05Z raingl quit (Remote host closed the connection) 2020-04-19T12:02:23Z raingl joined #scheme 2020-04-19T12:04:00Z TheGreekOwl quit (Quit: I must go, my planet needs me.) 2020-04-19T12:07:14Z raingl quit (Ping timeout: 240 seconds) 2020-04-19T12:11:13Z TCZ joined #scheme 2020-04-19T12:17:07Z mdhughes: No, I can prove electrons are real with any chemical or electrical reaction. I can't prove numbers are real. 2020-04-19T12:17:54Z mdhughes: Now, how do I measure those reactions without numbers, I dunno. That's how Big Number gets you into their scam every time. 2020-04-19T12:17:58Z ggole joined #scheme 2020-04-19T12:25:50Z izh_ quit (Remote host closed the connection) 2020-04-19T12:26:20Z izh_ joined #scheme 2020-04-19T12:27:13Z pjb: You'd have to define "real" first. Not so simple. 2020-04-19T12:29:01Z SGASAU joined #scheme 2020-04-19T12:30:53Z turtleman joined #scheme 2020-04-19T12:34:29Z abralek_ joined #scheme 2020-04-19T12:38:36Z SGASAU quit (Remote host closed the connection) 2020-04-19T12:40:47Z abralek_ quit (Read error: Connection reset by peer) 2020-04-19T12:41:10Z SGASAU joined #scheme 2020-04-19T12:41:27Z abralek_ joined #scheme 2020-04-19T12:43:11Z raingl joined #scheme 2020-04-19T12:44:45Z edgar-rft: everyone lives in their own reality 2020-04-19T12:52:28Z izh_ quit (Quit: Leaving) 2020-04-19T12:55:46Z X-Scale` joined #scheme 2020-04-19T12:57:28Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-19T12:57:29Z X-Scale` is now known as X-Scale 2020-04-19T12:57:40Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-19T13:07:23Z TCZ quit (Quit: Leaving) 2020-04-19T13:13:50Z jao joined #scheme 2020-04-19T13:18:18Z jao quit (Ping timeout: 258 seconds) 2020-04-19T13:19:16Z hugh_marera joined #scheme 2020-04-19T13:20:12Z jao joined #scheme 2020-04-19T13:22:04Z marmulak[m]: Not true 2020-04-19T13:45:26Z mdhughes: Reality is what remains when you sober up. 2020-04-19T13:50:22Z deesix_ joined #scheme 2020-04-19T13:52:31Z deesix quit (Ping timeout: 250 seconds) 2020-04-19T14:17:46Z deesix_ is now known as deesix 2020-04-19T14:18:09Z hugh_marera_ joined #scheme 2020-04-19T14:19:14Z hugh_marera quit (Ping timeout: 240 seconds) 2020-04-19T14:19:18Z hugh_marera_ is now known as hugh_marera 2020-04-19T14:19:20Z C-Keen joined #scheme 2020-04-19T14:19:46Z SGASAU quit (Remote host closed the connection) 2020-04-19T14:20:27Z SGASAU joined #scheme 2020-04-19T14:22:04Z luni quit (Quit: Connection closed) 2020-04-19T14:23:34Z ngz joined #scheme 2020-04-19T14:28:49Z edgar-rft: scheme adds the complication that everyone then is also living in their own complexity and numberology 2020-04-19T14:29:31Z SGASAU quit (Remote host closed the connection) 2020-04-19T14:31:33Z SGASAU joined #scheme 2020-04-19T14:50:53Z X-Scale` joined #scheme 2020-04-19T14:51:50Z X-Scale quit (Ping timeout: 258 seconds) 2020-04-19T14:51:52Z X-Scale` is now known as X-Scale 2020-04-19T14:56:37Z foof: re: sqrt: chibi does system sqrt, and iff the input is exact and res*res==input the output is exact. for bignums it uses exact-integer-sqrt then converts to double if the rem is non-zero. 2020-04-19T14:57:54Z ngz quit (Remote host closed the connection) 2020-04-19T15:01:23Z ngz joined #scheme 2020-04-19T15:04:48Z pilne_ joined #scheme 2020-04-19T15:05:36Z pilne quit (Ping timeout: 256 seconds) 2020-04-19T15:14:50Z lritter quit (Ping timeout: 258 seconds) 2020-04-19T15:20:57Z Tirifto joined #scheme 2020-04-19T15:21:07Z TCZ joined #scheme 2020-04-19T15:39:39Z abralek_ quit (Quit: Quit) 2020-04-19T15:46:02Z TCZ quit (Quit: Leaving) 2020-04-19T16:16:35Z hugh_marera quit (Quit: hugh_marera) 2020-04-19T16:25:27Z hugh_marera joined #scheme 2020-04-19T16:25:47Z hugh_marera quit (Client Quit) 2020-04-19T16:28:53Z xuxx joined #scheme 2020-04-19T16:30:10Z xuxx: (filter (lambda (sub) (set-remove sub x)) L) why this can't delete element from a list ? 2020-04-19T16:32:40Z zaifir: xuxx: What's set-remove? 2020-04-19T16:32:42Z xuxx: http://paste.debian.net/1141358/ maybe it's easier to understand what i'm trying to ask 2020-04-19T16:32:50Z xuxx: zaifir: deleting an element from a list 2020-04-19T16:33:14Z zaifir: xuxx: But you're trying to delete an element from the list L, right? 2020-04-19T16:34:00Z xuxx: y 2020-04-19T16:34:01Z zig quit (Quit: WeeChat 1.9.1) 2020-04-19T16:34:12Z xuxx: Not the lsit L 2020-04-19T16:34:15Z xuxx: sub-list of the list L 2020-04-19T16:35:28Z zaifir: xuxx: Your paste is kind of strange. Can you give an example of what you want this function to do? 2020-04-19T16:36:17Z zig joined #scheme 2020-04-19T16:36:47Z zig: now I understand how it possible to use several terminal cell handle, in gui. 2020-04-19T16:36:55Z xuxx: http://paste.debian.net/1141359/ 2020-04-19T16:37:00Z xuxx: zaifir 2020-04-19T16:37:07Z zaifir: xuxx: ty 2020-04-19T16:39:51Z zaifir: xuxx: So you want (simpl sym xs) to recursively remove any (list) element of xs that contains sym? 2020-04-19T16:40:12Z zaifir: xuxx: You need to recurse on each sublist. 2020-04-19T16:41:04Z xuxx: zaifir: I want to delete all sublist that contain sym and delete (oppose sym) on the other sublist 2020-04-19T16:41:56Z zaifir: xuxx: What's the "other" sublist? 2020-04-19T16:43:05Z zaifir: xuxx: Sorry, it's just not very clear to me what this structure is you're working with and what "oppose" does to it. 2020-04-19T16:43:07Z xuxx: zaifir: the sublist that are not deleted 2020-04-19T16:43:16Z xuxx: zaifir: they do not contain sym 2020-04-19T16:43:39Z xuxx: zaifir: (opose 'p) <=> '(! p) 2020-04-19T16:45:02Z drakonis1 joined #scheme 2020-04-19T16:45:34Z zaifir: xuxx: One annoyance I can see is that `oppose' takes a symbol and gives you a list, which complicates your representation. 2020-04-19T16:47:19Z zaifir: xuxx: So you want to (1) remove sym, then (2) take the resulting (sym-less) list and remove (oppose sym)? 2020-04-19T16:49:13Z zaifir: xuxx: If that's correct, then, by a theorem of `filter', you can fuse the two steps and just remove lists that contain sym or (oppose sym). 2020-04-19T16:52:15Z zaifir: xuxx: (filter (lambda (ys) (or (member sym ys) (member (oppose sym) ys))) xss) 2020-04-19T16:52:55Z zaifir: xuxx: Er, sorry, *remove, not filter. 2020-04-19T16:53:09Z xuxx: zaifir: But filter just check a condition then return the element. 2020-04-19T16:53:29Z zaifir: xuxx: That's not how I'd define filter. 2020-04-19T16:54:33Z zaifir: xuxx: (filter p xs) gives you a list of only the elements of xs that satisfy p. 2020-04-19T16:55:08Z zaifir: rudybot: eval (filter number? '(a 2 3 x)) 2020-04-19T16:55:09Z rudybot: zaifir: ; Value: '(2 3) 2020-04-19T16:55:12Z zaifir: xuxx: ^^ 2020-04-19T16:55:22Z xuxx: zaifir: but the things is, if (oppose p) is in xs I want to delete the element (opopose p) not xs 2020-04-19T16:55:59Z zaifir: rudybot: eval (remove number? '(a 2 3 x)) 2020-04-19T16:55:59Z rudybot: zaifir: ; Value: '(a 2 3 x) 2020-04-19T16:56:06Z zaifir: wta 2020-04-19T16:56:12Z zaifir: wat, even 2020-04-19T16:56:43Z zaifir: rudybot's remove seems to be broken. 2020-04-19T16:57:49Z zaifir: xuxx: OK, then how do you remove (oppose p) from a (sub)list? 2020-04-19T16:59:01Z xuxx: zaifir: (set-remove '(p (! p)) (oppose p)) 2020-04-19T16:59:39Z xuxx: => '(p) 2020-04-19T16:59:54Z xuxx: But set-remove return a new list 2020-04-19T17:00:05Z zaifir: xuxx: Right. So you're building up a new list. 2020-04-19T17:00:18Z xuxx: that's why i'm stuck 2020-04-19T17:01:28Z zaifir: xuxx: Your set-remove function builds a new list without a given element. So you just need to assemble those lists into the result list. How do you do that? 2020-04-19T17:01:55Z xuxx: recursion ? 2020-04-19T17:01:58Z xuxx: and cons 2020-04-19T17:02:40Z zaifir: You can do it with explicit recursion, yes. 2020-04-19T17:05:36Z zaifir: xuxx: What is the value of (simpl x '()) ? 2020-04-19T17:07:29Z xuxx: zaifir: '() 2020-04-19T17:07:43Z zaifir: xuxx: That's your base case. 2020-04-19T17:08:01Z zaifir: xuxx: The next question is, what is the value of (simpl x (cons y ys)) ? 2020-04-19T17:08:56Z zaifir: Where y is a list. 2020-04-19T17:10:48Z rain joined #scheme 2020-04-19T17:12:25Z drakonis1 is now known as drakonis 2020-04-19T17:12:37Z xuxx: https://paste.debian.net/1141370/ 2020-04-19T17:12:40Z xuxx: so i made this 2020-04-19T17:13:22Z zaifir: xuxx: Why'd you switch to tail recursion? 2020-04-19T17:13:35Z xuxx: zaifir: I didn't switch 2020-04-19T17:13:40Z xuxx: In my mind it was like that 2020-04-19T17:13:40Z raingl quit (Ping timeout: 256 seconds) 2020-04-19T17:14:11Z zaifir: xuxx: It looks correct, but I'd suggest writing it recursively first. 2020-04-19T17:14:38Z xuxx: it's recursiv no ? 2020-04-19T17:14:49Z zaifir: xuxx: You can simplify this. 2020-04-19T17:15:09Z xuxx: zaifir: okey i'm trying 2020-04-19T17:15:12Z zaifir: xuxx: It's using an accumulator, `result'. 2020-04-19T17:16:24Z zaifir: xuxx: The pattern you can have here is (if (null? ens) '() (cons (f (car ens)) ( (cdr ens))) 2020-04-19T17:17:43Z zaifir: xuxx: That's a very good pattern to have, because it's just the definition of `map'. You need only figure out what f is. 2020-04-19T17:20:12Z xuxx: https://paste.debian.net/1141371/ 2020-04-19T17:21:21Z zaifir: xuxx: You need to get rid of the loop. 2020-04-19T17:22:19Z zaifir: xuxx: Actually no, I'm sorry, it's fine. 2020-04-19T17:23:07Z zaifir: xuxx: The next thing to notice is that you've got the same right-hand side, (loop (cdr ens)) for two cases. 2020-04-19T17:24:51Z xuxx: right 2020-04-19T17:25:08Z xuxx: But for me it's easier to read it that way 2020-04-19T17:25:26Z zaifir: xuxx: Rather, you've really got two cases: ens is (), or ens is (cons xs xss). 2020-04-19T17:25:56Z zaifir: xuxx: If you restructure the cond to ask those two questions, you can simplify things further. 2020-04-19T17:27:28Z xuxx: zaifir: yes I got the loop (cdr ens) but one with a cons before 2020-04-19T17:28:34Z rain quit (Ping timeout: 256 seconds) 2020-04-19T17:32:33Z zaifir: xuxx: It still seems like an odd function, since you'll only remove (oppose x) from lists that don't contain x. 2020-04-19T17:33:32Z zaifir: xuxx: Or, rather, you only remove (oppose x) if you *don't* remove x... 2020-04-19T17:49:07Z zooey joined #scheme 2020-04-19T17:50:03Z rain joined #scheme 2020-04-19T17:51:15Z hugh_marera joined #scheme 2020-04-19T17:52:41Z vmhost joined #scheme 2020-04-19T17:56:08Z luni joined #scheme 2020-04-19T18:24:24Z xuxx quit (Ping timeout: 265 seconds) 2020-04-19T18:25:50Z skapata joined #scheme 2020-04-19T18:27:52Z xuxx joined #scheme 2020-04-19T18:31:02Z nly joined #scheme 2020-04-19T18:31:14Z bars0 joined #scheme 2020-04-19T18:56:51Z erkin: Hi peeps 2020-04-19T18:57:19Z erkin: Inspired by https://portability.cl, I embarked on a wild goose chase^W^W^Wproject to make an SRFI support table. 2020-04-19T18:57:53Z erkin: Here it is so far: https://erkin.party/scheme/srfi.html 2020-04-19T18:58:27Z erkin: It needs to be polished a bit, I kinda put the HTML together in a rush, but more importantly I'm not very certain about the reliability of the data I compiled. 2020-04-19T18:59:21Z erkin: I manually scraped through webpages and READMEs but you know how those can get neglected. 2020-04-19T19:02:05Z SGASAU quit (Remote host closed the connection) 2020-04-19T19:03:51Z SGASAU joined #scheme 2020-04-19T19:06:39Z wasamasa: erkin: somehow I have my doubts that gambit and CHICKEN lack srfi-1 2020-04-19T19:07:13Z wasamasa: erkin: also, why no chez, but stklos and slib 2020-04-19T19:08:55Z SGASAU: erkin: I give you a hint. 2020-04-19T19:09:03Z SGASAU: All problems of the kind are solved pretty easily: 2020-04-19T19:09:13Z SGASAU: you just write "not supported" everywhere. 2020-04-19T19:09:39Z SGASAU: Abandoned systems do not get fixes, thus reflecting their own state of support. 2020-04-19T19:10:02Z erkin: wasamasa: Gambit wiki says SRFI-1 is available as an external package. 2020-04-19T19:10:04Z erkin: http://gambitscheme.org/wiki/index.php/SRFI:s 2020-04-19T19:10:11Z wasamasa: yes, so? 2020-04-19T19:10:29Z erkin: I only included built-in SRFIs right now. 2020-04-19T19:10:41Z erkin: I'll add third-party/external packages with a different colour later. 2020-04-19T19:10:53Z erkin: Also I based CHICKEN on this: http://wiki.call-cc.org/supported-standards 2020-04-19T19:11:00Z erkin: SRFI-1 is listed under 3/4 but not 5. 2020-04-19T19:11:02Z SGASAU considers that quite unusual approach. 2020-04-19T19:11:50Z wasamasa: hm, I'd just add an asterisk 2020-04-19T19:11:59Z wasamasa: let yourself inspire by caniuse :> 2020-04-19T19:12:00Z erkin: Not a bad idea. 2020-04-19T19:12:06Z erkin: Haha 2020-04-19T19:12:13Z SGASAU: erkin: if you take a look at standard libc, you'll find absense of a lot of things. Does that entail anything? 2020-04-19T19:12:29Z erkin: Yes. It means I can't use features without installing an external library. 2020-04-19T19:12:39Z erkin: I'd say that merits at least an asterisk. 2020-04-19T19:13:08Z wasamasa: well, they don't use an asterisk, but a small box with a number/symbol 2020-04-19T19:13:16Z wasamasa: because there's usually more than one caveat 2020-04-19T19:13:26Z erkin: Let's see... 2020-04-19T19:15:08Z SGASAU: erkin: in modern days programming language implementations usually come up with some sort of "maven". This means that "installing an external library" is usually just a matter of network connectivity. 2020-04-19T19:15:40Z SGASAU: IOW, absense of some feature in stock library still doesn't mean anything. 2020-04-19T19:15:57Z wasamasa: some programming languages only work with network connectivity to obtain the most basic features 2020-04-19T19:16:27Z wasamasa: I remember a bug in elm or something where addition failed if you lacked network connectivity because it tried to fetch the numerical tower implementation 2020-04-19T19:16:30Z SGASAU: (Also, given the quality of some SRFIs, I'd say that supporting them makes negative impact on the image that the other way around...) 2020-04-19T19:17:11Z SGASAU: wasamasa: I think, we agree that this is still independent problem. 2020-04-19T19:17:16Z erkin: Oh yeah, that reminds me, I should mark the withdrawn SRFIs. 2020-04-19T19:17:31Z wasamasa: yeah, you might want to gray these out 2020-04-19T19:17:40Z wasamasa: that didn't stop some schemes from implementing them though :D 2020-04-19T19:17:53Z SGASAU: Just exclude them from consideration at all. 2020-04-19T19:18:17Z wasamasa: or put the asterisk in their name 2020-04-19T19:18:23Z SGASAU: :D 2020-04-19T19:18:56Z wasamasa: every presentational issue can be solved with a sufficient number of typographical marks 2020-04-19T19:20:23Z erkin: I prefer the rainbow vomit approach. 2020-04-19T19:20:39Z erkin: Although that might pose an issue for people with sight impairments. 2020-04-19T19:21:18Z wasamasa: yeah ._. 2020-04-19T19:21:21Z SGASAU: In that case, choose safe colour scheme. 2020-04-19T19:22:18Z xuxx quit (Ping timeout: 256 seconds) 2020-04-19T19:23:21Z erkin: Updated https://erkin.party/scheme/srfi.html 2020-04-19T19:23:49Z erkin: Tooltips on rows show descriptions. 2020-04-19T19:24:00Z SGASAU wonders when we start designing user interfaces for people who cannot "differentiate simple linear forms." 2020-04-19T19:25:05Z SGASAU: We may have problems with people not telling difference between โ˜…โ˜…โ˜…โ˜…โ˜… and 777. 2020-04-19T19:27:49Z SGASAU: erkin: do you generate modern HTML or some older version of it? 2020-04-19T19:28:30Z wasamasa: oh and guile is missing 2020-04-19T19:28:39Z wasamasa: so I'd replace slib/stklos with guile/chez 2020-04-19T19:28:46Z wasamasa: oh, guile is there 2020-04-19T19:29:18Z SGASAU: erkin: I advise people who don't normally deal in typography to use HSB encoding. 2020-04-19T19:32:15Z SGASAU: erkin: that way you have much much better control over your colours, both in terms of maintaining contrast and in terms of maintaining brightness/saturation. 2020-04-19T19:32:42Z erkin: I just picked cool sounding X11 colours that don't look hideous. 2020-04-19T19:33:01Z erkin: Lime green, orange red, light salmon and powder blue. 2020-04-19T19:33:18Z SGASAU: "Vyrvi glaz." 2020-04-19T19:33:31Z wasamasa: lol 2020-04-19T19:33:48Z wasamasa: reminds me of that one Stephen King quote 2020-04-19T19:33:57Z SGASAU: No idea how to translate it into English. 2020-04-19T19:33:59Z wasamasa: something like "If your eye itches, tear it out" 2020-04-19T19:34:37Z SGASAU: erkin: as for me, it looks really awfully. 2020-04-19T19:35:01Z erkin: It's HTML 5 by the way. 2020-04-19T19:35:27Z SGASAU: For start, you stress withdrawn RFIs. 2020-04-19T19:35:53Z SGASAU: They should have some neutral colours instead of red. 2020-04-19T19:36:15Z SGASAU: Same applies to drafts. 2020-04-19T19:36:16Z wasamasa: a red X as opposed to a green checkmark 2020-04-19T19:36:25Z wasamasa: and for drafts, not sure 2020-04-19T19:36:34Z SGASAU: Definitely. 2020-04-19T19:36:36Z erkin: Isn't powder blue a very neutral colour? 2020-04-19T19:36:47Z SGASAU: You don't know, if they are going to be accepted at all. 2020-04-19T19:36:48Z erkin: I'll make withdrawn ones uhhh grey 2020-04-19T19:37:07Z SGASAU: erkin: that's why I suggest that you use HSB. 2020-04-19T19:38:09Z wasamasa: come to think of it, emojis would be a funny way of doing that 2020-04-19T19:38:21Z wasamasa: people with browsers that support them will get colorful typography marks 2020-04-19T19:38:48Z SGASAU: erkin: Instead of nominal categories you'll have some ordered values. 2020-04-19T19:38:59Z erkin: ๐Ÿ˜น Withdrawn ๐Ÿ˜น 2020-04-19T19:39:26Z erkin: ๐Ÿค” Draft ๐Ÿค” 2020-04-19T19:39:59Z SGASAU: โ˜ฆ and โ˜ฃ 2020-04-19T19:40:43Z SGASAU: Or โ˜  at least. 2020-04-19T19:40:51Z erkin: It looks surprisingly well with Lynx. 2020-04-19T19:41:39Z erkin: Anyway, here's the source: https://github.com/schemedoc/srfi-metadata 2020-04-19T19:44:19Z SGASAU: I'd say that colours should be approximately like this: "must have" - negative, if not implemented, typical case - positive, if implemented, drafts - semi-positive, if implemented, withdrawn - neutral. 2020-04-19T19:44:57Z luni quit (Quit: Connection closed) 2020-04-19T19:44:59Z SGASAU: In your "vyrvi glaz" colour scheme it should be something like: negative - red, positive - green, neutral white/gray, semi-positive - very light green. 2020-04-19T19:45:43Z erkin: Hmm 2020-04-19T19:45:52Z erkin: That makes sense. 2020-04-19T19:45:59Z SGASAU: At least in those colours the diagram will have some sense. 2020-04-19T19:46:22Z SGASAU: In current colours it doesn't make sense, unless you carefully read helper text in tooltips. 2020-04-19T19:47:08Z SGASAU: (Red for withdrawn proposals?? Well...) 2020-04-19T19:47:47Z SGASAU: erkin: nothing personal, just a suggestion. I agree that not everyone had taken a course on scientific visualization. 2020-04-19T19:48:20Z SGASAU: (Even less people have taken anything away from it...) 2020-04-19T19:49:03Z SGASAU: erkin: and I still suggest that you read about HSB colour encoding and start using it where appropriate. 2020-04-19T19:49:35Z SGASAU: It's not such a long reading anyway. 2020-04-19T19:49:40Z TCZ joined #scheme 2020-04-19T19:53:50Z erkin: Yeah, I'll come up with better colours. 2020-04-19T19:54:07Z erkin: You can send a pull request if you have any specific change in mind. 2020-04-19T20:04:42Z zaifir: erkin: Nice work! 2020-04-19T20:04:54Z seepel joined #scheme 2020-04-19T20:05:01Z SGASAU: erkin: I don't use github, if you assume that. 2020-04-19T20:05:13Z zaifir: erkin: I'm hoping to add a section on SRFIs to the Scheme wikibook, and this will be a useful reference to link there. 2020-04-19T20:05:28Z zaifir: SGASAU: Pull requests aren't GitHub-dependent, by any means. 2020-04-19T20:06:29Z SGASAU: zaifir: I don't use git either. 2020-04-19T20:06:54Z wasamasa: woah 2020-04-19T20:07:27Z terpri quit (Ping timeout: 260 seconds) 2020-04-19T20:07:32Z wasamasa: what's it gonna be then, svn? 2020-04-19T20:07:32Z zaifir: SGASAU: Why's that? 2020-04-19T20:08:00Z zaifir: SGASAU: I'm not challenging your choice, I'm just curious as to your reasons. 2020-04-19T20:08:07Z SGASAU: zaifir: because I don't want to mess with it neither at work, nor at home. 2020-04-19T20:08:36Z SGASAU: When I had to use it at work the mere fact of using it has wasted a day of work of the whole company. 2020-04-19T20:08:38Z SGASAU: At least a day. 2020-04-19T20:09:15Z SGASAU: In the end of the week, even git proponents could not explain how that happened. 2020-04-19T20:09:36Z xuxx joined #scheme 2020-04-19T20:09:43Z zaifir: SGASAU: In other words, git is a mess? 2020-04-19T20:09:50Z SGASAU: Also, git proponents couldn't merge two significantly diverged branches of a project of moderate size. 2020-04-19T20:10:02Z SGASAU: "FreeBSD++" essentially. 2020-04-19T20:10:33Z jcowan: I much prefer hg to git, but one way or another I end up working with people who only know git. 2020-04-19T20:10:36Z SGASAU: I did it with CVS within couple hours just to proove that it works just fine. 2020-04-19T20:11:12Z jcowan: I killed 2 days at work because of a bad merge, but I doubt that any particular VCS would have done better. 2020-04-19T20:11:40Z jcowan: unless it could understand the operation "move code from one file to another" 2020-04-19T20:11:50Z SGASAU: (Most of the time was spent waiting for file system than actually resolving merge conflicts.) 2020-04-19T20:12:28Z SGASAU: jcowan: I'm sure that you're well aware that VCS cannot read your mind. 2020-04-19T20:12:35Z SGASAU: :) 2020-04-19T20:12:49Z jcowan: Right, but there's a tendency to assume that if a merge succeeds, the resulting file is good 2020-04-19T20:13:02Z SGASAU: Wait a minute... 2020-04-19T20:13:08Z jcowan: so I wound up with the same code running twice 2020-04-19T20:13:23Z SGASAU: Do you mean that git lovers have ideas like that? 2020-04-19T20:13:34Z jcowan: After all, there is nothing impossible about a VCS integrated with an editor that actually does have move and copy operations. 2020-04-19T20:13:47Z jcowan: that is, the VCS has them; editors already do 2020-04-19T20:14:38Z jcowan: I haven't actually gone to the trouble of testing this, but I am reasonably sure that if the project were maintained in any VCS capable of automatic merge that the same thing would have happened in the same way. 2020-04-19T20:14:41Z SGASAU: In any case, I'm still impressed of attempts to merge head.1 with pom.6. 2020-04-19T20:14:54Z SGASAU: git has really powerful ideas behind it. 2020-04-19T20:15:17Z zaifir: SGASAU: But no formal semantics :( 2020-04-19T20:15:33Z SGASAU: zaifir: no formal semantics of what? 2020-04-19T20:15:39Z jcowan: when you do a big merge, in this case something like 10% of all file were touched, but only about 20 had conflicts, who looks at the ones that didn't have conflicts? Yet that is where the bug was. 2020-04-19T20:15:40Z zaifir: SGASAU: Git. 2020-04-19T20:15:47Z jao quit (Remote host closed the connection) 2020-04-19T20:16:27Z zaifir: Actually, some researchers worked out a formal model for Git in Alloy, but apparently they found a lot of bugs or at least weird behavior in the process. 2020-04-19T20:16:41Z SGASAU: zaifir: I'm still impressed of how mercurial proponents couldn't explain how to make their beloved to perform straightforward 3-way merge the way it was done since 1980-something year in RCS and friends. 2020-04-19T20:17:02Z SGASAU: zaifir: interesting. Do you have a reference? 2020-04-19T20:17:12Z SGASAU: Alloy is FOL-based, right? 2020-04-19T20:17:59Z zaifir: SGASAU: Lourenรงo, Cunha, Kang & Barros, "The truth about Git" (2013) 2020-04-19T20:18:08Z zaifir: I don't have a PDF, unfortunately. 2020-04-19T20:18:11Z SGASAU: zaifir: thanks, will check. 2020-04-19T20:18:49Z SGASAU: If you have DOI, this solves it with high probability. 2020-04-19T20:19:01Z SGASAU: Besides, DOI is easier to pass on. 2020-04-19T20:19:52Z zaifir: I heard about it from Swierstra and Lรถh's really interesting paper on VCS semantics: http://www.staff.science.uu.nl/~swier004/publications/2014-onward.pdf (Very much worth reading.) 2020-04-19T20:20:17Z zaifir: I guess Darcs is the closest you can get to a VCS with a rigorous formal model. 2020-04-19T20:20:20Z SGASAU: I have found that one. 2020-04-19T20:20:55Z SGASAU: The problem with darcs is that it is implemented in such a way that you have difficulties using it. 2020-04-19T20:21:06Z jcowan: Palimpsest is an absolutely brilliant model of version control, unfortunately not available in practical form yet 2020-04-19T20:21:16Z SGASAU: Plus it lacks branches and all the rest. 2020-04-19T20:21:48Z SGASAU: jcowan: you mean as in "if you really care of previous version, you'll find a way to read it"? :) 2020-04-19T20:22:13Z jcowan: I don't understand you 2020-04-19T20:24:27Z SGASAU: Real palimpsest is already an implementation of "version control." 2020-04-19T20:24:58Z SGASAU: It contains everything you have ever written, yet you need special skills to read previous versions. 2020-04-19T20:25:19Z jcowan: Oh, I see. 2020-04-19T20:25:34Z jcowan: No, I meant the specific model Palimpsest by David Durand 2020-04-19T20:25:43Z seepel quit (Ping timeout: 265 seconds) 2020-04-19T20:26:22Z jcowan: It is true than in Palimpsest "version" is a higher-level concept that can be understood as "base document plus arbitrary set of changes", so they do not necessarily form a tree 2020-04-19T20:26:42Z jcowan: actually we can understand the base document as empty, so it is all changes 2020-04-19T20:27:45Z jcowan: For example, if you have a change "copy area between A and B to C" and then you get another change to the copied area, both copies will be affected by default 2020-04-19T20:28:07Z jcowan: if you don't want that, you say "delete from A to B", save locally, and "insert at C", two different changes. 2020-04-19T20:29:12Z SGASAU: In practice, nothing stops you from tracking all changes to a file at some level closer to editor. 2020-04-19T20:29:19Z jcowan: That's the idea 2020-04-19T20:29:29Z SGASAU: Something like what is done in Smalltalk environments. 2020-04-19T20:29:49Z jcowan: the editor keeps track of the origin of material in the clipboard 2020-04-19T20:30:31Z SGASAU: I'd anticipate some other problems that may be harder to solve. 2020-04-19T20:30:49Z jcowan: you can also base a shared editor on this where the changes are sent to all participants asynchronously, so if some have not yet arrived, others may have no effect 2020-04-19T20:31:17Z jcowan: if you get a delete from region Z but no insert for that, you take no action except to remember the delete in case the insert comes along 2020-04-19T20:31:23Z SGASAU: A text editor implementing Paxos would be really funky. 2020-04-19T20:32:08Z jcowan: Palimpsest assumes all agents are good honest Russians and not tricky Greeks. :-) 2020-04-19T20:33:51Z SGASAU: If people cannot grasp how LCS is calculated, I'm not sure that they will get around coordinated attack. 2020-04-19T20:34:33Z jcowan: the only LCS I know of in connection with Paxos is the MIT Laboratory for Computing Sciences 2020-04-19T20:34:45Z SGASAU: The least common superstring. 2020-04-19T20:35:22Z SGASAU: IMO, understanding foundations of how version control systems work is essential, actually. 2020-04-19T20:36:20Z SGASAU: At least in approximate terms of how diff and merge are calculated. 2020-04-19T20:36:58Z SGASAU: Otherwise they will keep running into problem you pointed at, when successful merge means the code is fine. 2020-04-19T20:42:56Z bars0 quit (Quit: leaving) 2020-04-19T20:43:15Z hugh_marera quit (Read error: Connection reset by peer) 2020-04-19T20:45:22Z hugh_marera joined #scheme 2020-04-19T20:45:42Z zaifir: The model that Swierstra and Lรถh worked out with Hoare logic is actually really simple and makes it pretty easy to understand diffs and merge conflicts. I'm surprised it isn't widely taught in courses on version control. 2020-04-19T20:45:48Z zaifir: Well, not surprised, but disappointed. 2020-04-19T20:47:13Z SGASAU: "Hoare logic? Never heard of it!" 2020-04-19T20:48:21Z zaifir: Eternally relevant: https://abstrusegoose.com/206 2020-04-19T20:49:03Z SGASAU: Seriously, you see how a lot of people listen to false claims of one programmer who has failed to learn using any version control available at his time, wrote something that easily lets you lose your work, 2020-04-19T20:49:47Z SGASAU: and you still think that those people who failed to learn simple logic and basic fallacies will learn Hoare logic? 2020-04-19T20:50:52Z zaifir: I'd like to optimistic about what people can learn. 2020-04-19T20:51:57Z SGASAU: What people can learn, what people will learn and what people want to learn are three different things. 2020-04-19T20:52:51Z erkin: I added a couple more implementations. I'll need to double check the sources though. 2020-04-19T20:52:56Z SGASAU: zaifir: at least in the case of video games there's a way to appeal to authority. 2020-04-19T20:54:38Z jcowan: Palimpsest doesn't do diffs, so is immune to such problems 2020-04-19T20:55:26Z SGASAU: zaifir: frankly speaking, after having that experience with git proponents, I'm highly skeptical about personal skills of programmers. 2020-04-19T20:57:09Z SGASAU: I was surprised when, as an introduction, I was advised to watch those talks of Torvalds where he was explaining how git is better than everything else. 2020-04-19T20:57:39Z SGASAU: The level of argumentation is especially admirable. 2020-04-19T20:58:20Z SGASAU: "No, you don't want to eat. There's no demand in meal today." 2020-04-19T20:58:43Z zaifir: Intimidate the heretics. 2020-04-19T20:59:48Z zaifir: The abstruseness of git manpages led to a kind of the-meaning-passeth-all-understanding vibe to some pro-Git material. 2020-04-19T21:00:19Z zaifir: But I think it's clearly GitHub, not Git, that conquered the world. 2020-04-19T21:00:51Z SGASAU: Personally, I'm not sure about that. 2020-04-19T21:01:29Z ggole quit (Quit: Leaving) 2020-04-19T21:01:47Z SGASAU: It may be the same story as with SF. 2020-04-19T21:02:36Z SGASAU: "Conquered the world" still the next financial crisis, when background company will start "cutting costs" and "monetize". 2020-04-19T21:04:00Z TCZ quit (Quit: Leaving) 2020-04-19T21:04:03Z torbo joined #scheme 2020-04-19T21:07:34Z SGASAU: zaifir: still, it would be nice to have the original report from Lorenco & al. 2020-04-19T21:08:30Z SGASAU: I wonder, if anyone here could contact Swierstra and ask him how he could get that. 2020-04-19T21:08:41Z zaifir: Alright already, grargh! 2020-04-19T21:08:46Z zaifir starts digging. 2020-04-19T21:10:16Z SGASAU: The best I could find so far is https://github.com/nevrenato/CSAIL_Git 2020-04-19T21:12:38Z SGASAU: zaifir: pay attention, if you haven't found it yet. 2020-04-19T21:13:22Z keep_learning joined #scheme 2020-04-19T21:13:45Z zaifir: SGASAU: Thanks! 2020-04-19T21:14:05Z zaifir: "wtf git" <-- great commit message 2020-04-19T21:17:59Z SGASAU: wasamasa: I like his account name, though. :D 2020-04-19T21:23:06Z SGASAU quit (Remote host closed the connection) 2020-04-19T21:23:59Z SGASAU joined #scheme 2020-04-19T21:24:43Z TCZ joined #scheme 2020-04-19T21:32:59Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-19T21:33:55Z gravicappa quit (Ping timeout: 260 seconds) 2020-04-19T21:48:12Z jcowan: erkin: You should correlate this with http://www.schemeworkshop.org/2018/Gleckler.pdf 2020-04-19T21:48:24Z jcowan: Arthur can send you the raw data (S-expressions) if you prefer 2020-04-19T22:17:09Z luni joined #scheme 2020-04-19T22:29:23Z jcowan: zaifir: I am concerned about the applicability of maybe-contains? and maybe-sequence to the new world of multiple-valued Maybes 2020-04-19T22:29:33Z jcowan: what are your thoughts on this? 2020-04-19T22:33:38Z zaifir: jcowan: Agreed, they don't fit very well anymore, IMO. 2020-04-19T22:34:19Z jcowan: contain? is just a convenience, but sequence is an important function for applicative functors 2020-04-19T22:34:25Z jcowan: = sequencea 2020-04-19T22:34:42Z zaifir: jcowan: I was thinking that the -sequence functions might be sorely missed. 2020-04-19T22:35:04Z hugh_marera_ joined #scheme 2020-04-19T22:36:01Z jcowan: How about adding another argument which aggregates the multiple values of the Just/Right into an actual object? 2020-04-19T22:36:34Z jcowan: identity if you stick to 1-in/1-out per Haskell or ML 2020-04-19T22:36:49Z hugh_marera quit (Ping timeout: 264 seconds) 2020-04-19T22:36:50Z hugh_marera_ is now known as hugh_marera 2020-04-19T22:38:28Z zaifir: jcowan: That sounds plausible. Actually, it seems like it would be a small change to the current code, which uses the implicit identity success continuation of maybe-ref. 2020-04-19T22:39:46Z zaifir: So (maybe-sequence (list (just 1 2) (just 2 3)) map list) ; => 2020-04-19T22:42:27Z zaifir: Nice, I think. 2020-04-19T22:44:31Z zaifir: Presumably it's an error if the value-aggregating procedure doesn't accept the correct number of arguments. 2020-04-19T22:45:18Z jcowan nods 2020-04-19T22:45:26Z jcowan: I'm just going to drop contains?. 2020-04-19T22:46:44Z zaifir: Agreed. 2020-04-19T22:48:39Z jcowan: I'm also going to add that it's an error to mutate the result of maybe->list, whiuch makes it essentially free to call, and then you can apply any ordinary list function to that. 2020-04-19T22:49:23Z keep_learning joined #scheme 2020-04-19T22:49:28Z aeth: erkin: you should desaturate the red for not implementing withdrawn SRFIs so it doesn't look like a bad thing that implementations don't support them (or even add a button to hide those) 2020-04-19T22:51:01Z zaifir: jcowan: Excellent. What about (either->list (left ...)) ? 2020-04-19T22:51:52Z aeth: erkin: or even just have no color for not implementing a withdrawn SRFI 2020-04-19T22:52:22Z fadein joined #scheme 2020-04-19T22:53:53Z aeth: erkin: and this isn't on you, but (1) several SRFIs became part of R7RS-small without any clear indicator, including SRFI 30, which means that R7RSes like Chibi necessarily support SRFI 30 without even indicating the support, just by supporting R7RS-small 2020-04-19T22:54:39Z aeth: erkin: and (2) several SRFIs became superseded by R7RS-compatible SRFIs without being withdrawn, like SRFI 43 by SRFI 133. Again, no indicators anywhere. 2020-04-19T22:57:19Z aeth: For the most part, it's unclear which SRFIs are necessarily just for r5rs, r6rs, or r7rs. Only SRFI 133 and SRFI 172 have R7RS in the name 2020-04-19T22:59:02Z aeth: Amusingly, even Gleckler.pdf doesn't have Chibi down as supporting SRFI 30, even though my own notes (were they mistaken?) have SRFI 30 as part of R7RS-small 2020-04-19T23:01:23Z SGASAU: As for me, the first thing would be to ask the question what this comparison is useful for. 2020-04-19T23:01:47Z aeth: erkin: you should probably use a yellow or orange checkmark if the SRFI's available as a library, btw 2020-04-19T23:02:07Z Riastradh: maybe an orange clockwork 2020-04-19T23:03:11Z aeth: SGASAU: besides the withdrawn (marked) and the superseded-for-R7RS (marked nowhere! e.g. SRFI 0 is superseded by R7RS-small and SRFI 43 by SRFI 133), it's useful to see "completeness" 2020-04-19T23:03:31Z SGASAU: aeth: yellow is very dangerous colour, you should be very cautious when using it. 2020-04-19T23:03:49Z SGASAU: aeth: in most cases it is just a bad idea. 2020-04-19T23:04:48Z TCZ quit (Quit: Leaving) 2020-04-19T23:04:49Z aeth: SGASAU: the chart's useful in two directions: more SRFIs available = more possible to write portable rather than implementation-specific code; more implementations available for a SRFI = more able to use a given SRFI 2020-04-19T23:05:11Z aeth: but it's useless in both directions without libraries being marked 2020-04-19T23:05:32Z aeth: s/libraries/third party libraries/ 2020-04-19T23:06:07Z aeth: Few SRFIs require implementation support, so library vs. built-in is rarely a deciding factor 2020-04-19T23:07:35Z SGASAU: aeth: that has only theoretical value as for me. 2020-04-19T23:08:33Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-19T23:09:47Z aeth: SGASAU: Afaik there are two main groups of regulars in #scheme as opposed to #racket #guile etc. (1) People who write portable Scheme code (a minority in the Scheme universe) and (2) Scheme implementors. Both are potentially interested in finding out what the popular SRFIs are in terms of "I should use this" for #1 or "I should implement/bundle this" for #2. 2020-04-19T23:10:25Z Riastradh: aeth: don't forget Statler and Waldorf 2020-04-19T23:10:54Z gwatt: Statler and Waldorf are omnipresent 2020-04-19T23:12:48Z SGASAU: aeth: when I used Scheme for a project in industry, the number of SRFIs implemented was of the least concern. 2020-04-19T23:13:14Z SGASAU: If I ever do similar thing again, it will be the same. 2020-04-19T23:14:35Z SGASAU: (As of today, by the way, Racket is more appealing than anything "standard".) 2020-04-19T23:16:23Z zaifir: SGASAU: That's not a very informative argument. 2020-04-19T23:17:09Z aeth: SGASAU: As I said, writing portable Scheme is a minority view in the Scheme community. #scheme is a bit of an exception, probably because of its name/scope. 2020-04-19T23:17:54Z SGASAU: zaifir: which one exactly? 2020-04-19T23:18:30Z aeth: Portability is probably the biggest difference between the Common Lisp communtiy and the Scheme community. The CL community will practically disown you if you write for just one implementation... 2020-04-19T23:18:45Z aeth: Meanwhile, it makes perfect sense to e.g. exist solely within the Racket or Chicken universe. 2020-04-19T23:18:52Z zaifir: SGASAU: You seemed to be saying that a SRFI-implementation document wasn't helpful, because SRFIs weren't useful to you. 2020-04-19T23:20:14Z SGASAU: zaifir: no, that's not what I said. 2020-04-19T23:21:01Z SGASAU: What I'm saying is that comparison like this is most likely not useful in practice. 2020-04-19T23:22:01Z SGASAU: (What aeth says only reinforces that, by the way.) 2020-04-19T23:22:15Z zaifir: SGASAU: Could you explain why? 2020-04-19T23:22:26Z terpri joined #scheme 2020-04-19T23:22:45Z SGASAU: There're multiple reasons for that. 2020-04-19T23:22:58Z aeth: SGASAU: Someone writing portable Scheme wants to know what they can use based on what platforms they want to reach, someone implementing a Scheme may choose to implement SRFIs that everyone else implements as sort of an implicit part of the standard. Someone writing Racket probably doesn't care at all. 2020-04-19T23:23:03Z aeth: That's what I'm saying. 2020-04-19T23:23:05Z SGASAU: If you have some practical project in mind, comparison like that is not useful, because 2020-04-19T23:23:31Z zaifir: I've found it useful in the past to refer to a list of which SRFIs are supported by various Schemes, because it affects what I'm willing to use if I want to increase portability. 2020-04-19T23:23:33Z SGASAU: all those numbers of SRFIs implemented are most likely not relevant. 2020-04-19T23:23:33Z aeth: I mean, yeah, if you're making a website in Racket, it doesn't matter if it's a SRFI or a Racket library. 2020-04-19T23:24:05Z aeth: SRFIs implemented are more for authors of portable libraries than anything else. 2020-04-19T23:24:13Z SGASAU: aeth: wasn't there a requirement for reference implementation to provide along with SRFI itself? 2020-04-19T23:24:42Z SGASAU: I think, you both miss the point. 2020-04-19T23:25:00Z SGASAU: If I have a practical project in mind, what I need is convenient tool. 2020-04-19T23:25:32Z aeth: SGASAU: The reference implementation for the SRFI doesn't have to be portable. Not every SRFI can be implemented in Scheme itself, e.g. SRFI 170 POSIX API. https://srfi.schemers.org/srfi-170/srfi-170.html 2020-04-19T23:25:33Z SGASAU: If the tool is convenient and it lacks one library that has reference implementation, I will just adopt the library. 2020-04-19T23:25:44Z aeth: https://github.com/scheme-requests-for-implementation/srfi-170 2020-04-19T23:26:26Z SGASAU: aeth: POSIX API is not needed in its entirety. 2020-04-19T23:26:26Z zaifir: SGASAU: If you're writing a tool that only needs to run in one implementation ever, sure. 2020-04-19T23:26:39Z SGASAU: No. 2020-04-19T23:26:44Z zaifir: SGASAU: If you're writing a library, you might care about portability. 2020-04-19T23:26:46Z SGASAU: If I'm writing a practical tool. 2020-04-19T23:26:50Z aeth: It looks like SRFI 170 might be chibi-only in the reference 2020-04-19T23:26:54Z aeth: I'm not 100% sure 2020-04-19T23:27:08Z SGASAU: If I'm writing a library, I need it for something. 2020-04-19T23:27:38Z aeth: zaifir: It depends on if you're writing a Scheme library or a library for Racket or a library for Chicken, etc. 2020-04-19T23:27:42Z SGASAU: Even if only for experimentation. 2020-04-19T23:27:57Z SGASAU: Now you definitly miss the point. 2020-04-19T23:27:58Z aeth: zaifir: Racket and Chicken have more libraries available than portable R7RS does 2020-04-19T23:28:01Z SGASAU: Both of you. 2020-04-19T23:28:05Z zaifir: SGASAU: That's your approach, though. Other programmers develop libraries for general use, and it's silly to pretend that portable libraries aren't useful and important. 2020-04-19T23:28:47Z SGASAU: Alright. 2020-04-19T23:29:07Z SGASAU: Consider I'm implementing a plain web site for a blood-thirsty enterprise. 2020-04-19T23:29:07Z fradet joined #scheme 2020-04-19T23:29:22Z SGASAU: As in "Enterprise(TM)". 2020-04-19T23:29:26Z aeth: zaifir: As an implementor, portable libraries aren't particularly useful for me. I guess they could be useful if I wanted to take shortcuts to get a bunch of features added, but (1) they're probably using a different license than my implementation and now it becomes difficult to package in a way that makes this clear (and it's impossible to use if (A)GPL) 2020-04-19T23:29:39Z SGASAU: So that it must be in Java. 2020-04-19T23:29:46Z aeth: zaifir: and (2) they're probably not written with the performance characteristics of a specific implementation in mind, so even if they work, they won't work in an optimal way 2020-04-19T23:30:20Z zaifir: aeth: But you agree that there is utility in having a library that "just works" in your Scheme, yes? 2020-04-19T23:30:44Z SGASAU: If I'm given a choice of container, I may choose between full-blown EE, or web profile EE, or even micro-profile or whatever it is called. 2020-04-19T23:31:19Z SGASAU: If I'm not using SOAP, or RMI, or whatever else there was accumulated during 2 decades, 2020-04-19T23:31:33Z aeth: zaifir: I mean, maybe, maybe not. I certainly won't be writing portable Scheme because that defeats the whole point of writing a Scheme implementation. 2020-04-19T23:31:38Z SGASAU: it is just not relevant to me, whether some container supports them or not. 2020-04-19T23:31:57Z SGASAU: Even when you have portable reference implementations for all of them. 2020-04-19T23:32:55Z SGASAU: As one major consequence, the number of supported standards is not going to matter. 2020-04-19T23:32:57Z SGASAU: At all. 2020-04-19T23:32:58Z zaifir: SGASAU: Why is is it not relevant? 2020-04-19T23:33:29Z SGASAU: zaifir: because when I have a practical project in mind, I usually know what I'm not going to use. 2020-04-19T23:34:27Z SGASAU: In particular, even if I do need to access some lower level OS API, I'll most likely need better FFI than standard POSIX API layer. 2020-04-19T23:34:28Z zaifir: SGASAU: With portable libraries the number of things you can use increases. 2020-04-19T23:35:15Z zaifir: SGASAU: Standard interfaces are a great defence against insanity. 2020-04-19T23:35:25Z SGASAU: zaifir: if no Scheme implementation is going to provide pertinent features while Python is, I'll choose Python. 2020-04-19T23:35:39Z SGASAU: zaifir: seriously? 2020-04-19T23:36:27Z SGASAU: zaifir: let me know when linux gets rid of NFS in favour of SMB2. 2020-04-19T23:37:21Z aeth: I think Scheme vs. Python is a bit overrated. If you want to write Scheme, you're not going to settle for Python because Python is very dogmatic in an anti-FP way. Python makes it hard or impossible to write code in the same style. 2020-04-19T23:37:35Z aeth: Now, of course, there are other languages that can do things that Scheme can do, but Python explicitly can't. 2020-04-19T23:37:46Z SGASAU: (Note that I'm not asking about getting rid of sh, I understand that this is really tough.) 2020-04-19T23:38:08Z gwatt: On the other hand, python's list comprehensions are waaay more legible than the equivalent scheme expression 2020-04-19T23:38:23Z fadein quit (Ping timeout: 250 seconds) 2020-04-19T23:38:31Z gwatt: and can apply to any generator object 2020-04-19T23:39:04Z SGASAU: Python is really a horrible programming language. 2020-04-19T23:39:06Z aeth: In 2020, C++ afaik has a better lambda than Python does... There are probably a dozen scripting languages (obviously not C++) that you could settle for if you wanted to write Scheme but can't. I mean, if that's your primary concern. 2020-04-19T23:39:11Z SGASAU: Yet it is more popular. 2020-04-19T23:39:21Z aeth: Python is a horrible programming language for writing Scheme in. 2020-04-19T23:39:27Z xuxx quit (Ping timeout: 260 seconds) 2020-04-19T23:39:33Z aeth: Python's slightly less horrible for writing Java in, but the community will still hate you for it. 2020-04-19T23:39:43Z SGASAU: Python is horrible for virtually anything but student lab works. 2020-04-19T23:39:52Z zaifir: SGASAU: I'm not sure why you say "seriously?". We rely on standard interfaces and their specifications constantly. e.g. I trust that Freenode's servers speak TCP, and not some ad-hoc custom protocol that sort of works. 2020-04-19T23:40:00Z aeth: Python has a very opinionated way to write code. The advantage is that Python is incredibly readable, even if you haven't touched it in many years. The disadvantage is that you can't really "write Foo in Python" very well. 2020-04-19T23:40:37Z SGASAU: zaifir: this is because there's no alternative at all. 2020-04-19T23:40:49Z SGASAU: zaifir: consider something where alternatives exist. 2020-04-19T23:40:59Z SGASAU: zaifir: for instance, network file systems or user shells. 2020-04-19T23:41:18Z Oxyd: Every time you โ€œwrite Foo in Barโ€, you're doing it wrong, unless Foo = Bar. :P 2020-04-19T23:41:40Z SGASAU: Oxyd: Iron* do exist. :p 2020-04-19T23:43:33Z SGASAU: aeth: you have to admit though that Python did at least one really good thing. 2020-04-19T23:44:02Z aeth: Oxyd: I mean, yeah, I agree. On the other hand, it's incredibly popular and is probably one of the reasons why JavaScript is so popular. Like 90% of "modern JavaScript" is writing some paradigm/style/whatever that JavaScript wasn't meant for instead of the prototype-based OOP that JS is meant for. 2020-04-19T23:44:24Z aeth: I mean JS even has classes now, although FP-in-JS is probably the most popular language-abuse there 2020-04-19T23:45:12Z aeth: SGASAU: I mean, I did admit that. You give me a Python file written by anyone and as long as they didn't write in an incredibly nonconforming style, I can read it. Even though I rarely write any Python these days. 2020-04-19T23:45:38Z aeth: In a sense, the Python design philosophy is to try to make every file look like they were written by the same person. 2020-04-19T23:45:40Z SGASAU: aeth: I meant kicking Perl out. 2020-04-19T23:45:47Z fadein joined #scheme 2020-04-19T23:45:52Z aeth: That was probably a reaction to Perl, yes 2020-04-19T23:47:58Z zaifir: It boosted the mystique of the single-implementation, BDFL-led programming language. 2020-04-19T23:48:05Z aeth: Whether or not Python is better than Perl is up for debate. Perl did regex/etc. better, but it seems like a DSL for regex rather than a standalone language. Stuff that's easy in more recently popular scripting languages (like Python, Ruby, Lua, JS, etc., even though most of these are actually pretty old) is hard in Perl 2020-04-19T23:48:12Z aeth: e.g. arrays-of-arrays iirc (it's been years) 2020-04-19T23:49:09Z SGASAU still wonders if his colleagues have noticed multiple constructs like Arrays(Optional.ofNullable (that).orElse (those)).stream().filter (some::thing).map(another::thing).collect (Collectors.groupingBy(yet::anotherThing)). 2020-04-19T23:50:13Z aeth: zaifir: The problem with Python is that for years and years the evangalists pushed this whole narrative of expressiveness xor performance... I guess until high-performance JS implementations came along. 2020-04-19T23:50:16Z SGASAU has managed to cram Stream#flatMap in somewhere. 2020-04-19T23:50:41Z aeth: It's pretty hard to ignore a more expressive, more performant, more popular programming language so I havne't seen that expressiveness xor performance narrative in years 2020-04-19T23:50:47Z aeth: *haven't 2020-04-19T23:50:58Z zaifir: aeth: Also, it has feeble scoping. 2020-04-19T23:51:33Z TCZ joined #scheme 2020-04-19T23:52:27Z SGASAU: zaifir: JavaScript is, by the way, another example why being portable is not exactly the thing that matters. 2020-04-19T23:52:40Z aeth: zaifir: Lisps are the only languages that correctly do scoping because they make scope explicit, although in curly-braces languages you can often do your own new, let-like scope by just inserting arbitrary { ... }s in the middle of your program with no keyword before the {. 2020-04-19T23:52:57Z zaifir: SGASAU: Due to Chrome monoculture? 2020-04-19T23:53:25Z aeth: zaifir: And this is another rare area where Common Lisp is more elegant than Scheme, because Common Lisp requires things like LET, whereas Scheme lets you use (define ...) to magically create an implicit letrec* as long as it's at the top of a body. 2020-04-19T23:53:57Z aeth: (The other area I'm aware of is that Common Lisp nearly always returns a useful return value, making everything-as-an-expression more meaningful, unlike Scheme, where at least half of the return values are unspecified, usually interpreted to return the useless #) 2020-04-19T23:54:05Z zaifir: aeth: I'm not a huge fan of internal define. I'd rather just have the letrec*. 2020-04-19T23:54:13Z aeth: exactly. 2020-04-19T23:54:30Z SGASAU: aeth: MLs do that better. 2020-04-19T23:54:32Z aeth: (And to be fair, Common Lisp has a few odd features like &aux) 2020-04-19T23:54:41Z aeth: SGASAU: how so? 2020-04-19T23:54:48Z Riastradh: zaifir: Internal definition is much easier to read than a big pile of letrec clauses that are discernible only by their indentation. 2020-04-19T23:54:52Z Riastradh: er 2020-04-19T23:54:54Z Riastradh: Reading internal definitions is ... 2020-04-19T23:55:37Z SGASAU: aeth: because they do proper typing in addition to proper scoping. 2020-04-19T23:55:43Z konvertex quit (Ping timeout: 250 seconds) 2020-04-19T23:55:48Z aeth: SGASAU: what do you mean by proper typing? 2020-04-19T23:56:39Z SGASAU: I mean that types are determined during compilation rather than at run time. 2020-04-20T00:00:30Z aeth: SGASAU: There's nothing that stops a Lisp from doing type inference. SBCL (in the Common Lisp world) is particularly designed for this, and supports both declared and inferred types. 2020-04-20T00:00:47Z aeth: In the Scheme world, Stalin probably does this, to an extreme, where the compilation times were far too long for anyone to actually use Stalin 2020-04-20T00:01:09Z zaifir: SGASAU: Nowhere is it written that only compile-time typing is "proper". 2020-04-20T00:01:17Z SGASAU: Compilation time wasn't the issue that stopped me. 2020-04-20T00:02:25Z SGASAU: The primary problem with Stalin was that the implementation stuck in the past. 2020-04-20T00:05:07Z aeth: well, yes, it's an r4rs 2020-04-20T00:05:18Z aeth: but it probably never took off because of the 24-hour compilation times 2020-04-20T00:05:31Z SGASAU: In addition, it has the same "CS" disease as other "CS" projects. 2020-04-20T00:05:43Z zaifir: And the code is sort of incomprehensible. 2020-04-20T00:05:56Z SGASAU: "CS" disease. 2020-04-20T00:06:05Z ngz quit (Ping timeout: 272 seconds) 2020-04-20T00:06:08Z zaifir: I don't know what that is. 2020-04-20T00:06:20Z SGASAU: Computational science. 2020-04-20T00:06:40Z zaifir: I know what *that* is. :) 2020-04-20T00:06:42Z SGASAU: Ever looked into the code written by scientists? 2020-04-20T00:07:30Z Oxyd: What sort of scientists? 2020-04-20T00:07:39Z zaifir: I'm not particularly interested in determining which programmers are "scientists" and which aren't. 2020-04-20T00:07:48Z Oxyd: There's a massive difference between code written by physicistss and computer scientists. 2020-04-20T00:08:44Z SGASAU: Like the former write mostly in Fortran and C++ while the latter write in C and Python? 2020-04-20T00:09:11Z Oxyd: I'm not sure C is very popular by CS folk. I was thinking more Haskell. 2020-04-20T00:09:57Z SGASAU: I have never met in person a representative of CS folk who wrote in Haskell. 2020-04-20T00:10:11Z Oxyd: But I was more referring to my experience with physics code โ€“ it made me cry every time. 2020-04-20T00:10:13Z SGASAU: C, C++, C#, Java... 2020-04-20T00:10:55Z Oxyd: I don't think any of these are very interesting from a CS point of view. 2020-04-20T00:11:37Z SGASAU: Most of CS is involved into more pragmatical research than logic and programming languages. 2020-04-20T00:12:14Z zaifir: SGASAU: That would very much depend on where you go and whom you talk to. 2020-04-20T00:12:18Z SGASAU: Various kinds of NNs, non-parametric statistics, parallel computing. 2020-04-20T00:14:04Z zaifir: Philip Wadler's a pretty fantastic computer scientist, and his work these days seems to be pretty much entirely in the programming languages area. 2020-04-20T00:14:15Z Oxyd: Oh yeah, and Matlab. It has an entire โ€œtoolboxโ€ or whatever they call it for NNs. 2020-04-20T00:14:20Z SGASAU: zaifir: of all people I met who tried Haskell all were mathematicians except one who was quantum chemist. 2020-04-20T00:14:30Z seepel joined #scheme 2020-04-20T00:14:36Z SGASAU: Matlab and R. 2020-04-20T00:15:10Z zaifir: SGASAU: So what's the point? 2020-04-20T00:16:09Z SGASAU: My observation is that quality of the code coming from CS is significantly worse than industrial one. 2020-04-20T00:17:15Z SGASAU: (Code written by chemists and physisists is even worse but that's consequence of CS people "involvement".) 2020-04-20T00:17:47Z zaifir: SGASAU: I don't see any reason to believe that. 2020-04-20T00:18:28Z SGASAU: zaifir: you can do your own research on the topic. 2020-04-20T00:18:45Z SGASAU: It's not such a big deal today as it was two decades ago. 2020-04-20T00:22:00Z jcowan: There are people who care about writing clean code because they have to maintain it. 2020-04-20T00:22:34Z jcowan: And there are people who don't care what the code looks like; it just has to be correct (or sometimes nearly correct) because all that matters is the result. 2020-04-20T00:22:53Z jcowan: And then there is code that doesn't even have to compile, because all it's for is to establish a software patent. 2020-04-20T00:23:10Z SGASAU: jcowan: the only person who cares about writing the code there is an aspirant, who is also usually involved in teaching. 2020-04-20T00:23:26Z pjb: SGASAU: industrial code is written by people having been taught from CS departments. Furthermore, people get their diploma even when they fail half the time. 2020-04-20T00:23:31Z SGASAU: 3-4 years, and he leaves the group forever in most cases. 2020-04-20T00:23:42Z jcowan: Except my industrial code 2020-04-20T00:23:50Z jcowan: I am older than CS departments 2020-04-20T00:25:01Z SGASAU: pjb: what I have seen in a number of companies that those people were being taught new culture with stricter rules on the code than in CS department. 2020-04-20T00:25:45Z SGASAU: pjb: can you name one where you have mandatory code review by two other colleagues? 2020-04-20T00:25:53Z jcowan: Google. 2020-04-20T00:26:23Z SGASAU: jcowan: Google is a commercial company, it isn't CS department. :) 2020-04-20T00:26:47Z pjb: Well, we only have partial pictures. I would only note that since google was able to hire so many best programmers, the consequence is that in the rest of the industry, we must have subpar programmers leftโ€ฆ 2020-04-20T00:27:07Z jcowan: Plenty of subpar programmers at Google too 2020-04-20T00:27:24Z SGASAU: pjb: I'm not of high opinion of industrial code either. 2020-04-20T00:28:00Z SGASAU: Yet my observation is that the code coming from academia is more likely to have severely inferior quality. 2020-04-20T00:28:04Z jcowan: Code quality is in my experience orthogonal to where it is written. 2020-04-20T00:28:25Z pjb: That said I agree that code written by non-programmers is horrible. 2020-04-20T00:28:51Z jcowan: That is meaningful only if you define "programmer". 2020-04-20T00:29:08Z pjb: People who don't write horrible code? 2020-04-20T00:29:15Z jcowan shrugs 2020-04-20T00:29:18Z SGASAU: Do they exist? 2020-04-20T00:29:54Z jcowan: Better ask, are there people who sometimes write non-horrible code. 2020-04-20T00:29:58Z jcowan: Answer: yes, there are. 2020-04-20T00:30:03Z pjb: Well, I think it doesn't matter. all the code will be rewritten by the AIs once singurlarity occurs. 2020-04-20T00:30:42Z SGASAU: Microsoft has produced one already, hasn't it? 2020-04-20T00:32:06Z SGASAU: Anyway, I still maintain that the use of comparison by number or by set of SRFIs supported is dubious. 2020-04-20T00:32:45Z aeth: Google has been subpar for quite some time. Maybe since the Google+ days? That's almost 9 years now. 2020-04-20T00:32:53Z SGASAU: When you have practical project in mind, you have more important factors. 2020-04-20T00:33:50Z aeth: SGASAU: which SRFIs are popular is a useful metric that is hard to find out about 2020-04-20T00:33:55Z aeth: It's not *the* most useful thing 2020-04-20T00:35:41Z SGASAU: aeth: how do you extract that information from implementations? 2020-04-20T00:36:20Z SGASAU: Do you have code profile data gathered somewhere? 2020-04-20T00:37:26Z pjb: About code reviews, most of the time, it's only nitpicking about code coventions, instead of a real attention to logical bugs and architecture problems. 2020-04-20T00:41:23Z SGASAU: Sure, "no silver bullet." Or whatever you call it. 2020-04-20T00:43:54Z pjb: For example, one process I had quite some success with, is that when you find a bug in your code, you check all your code to find other occurences of the same kind of bugs. But this means, that you will often have global commits with changes in all (or a lot) of files. Unfortunately, this kinds of commits are very frowned upon in general, or merely impossible, when the code base has long-standing branchesโ€ฆ I've seen code ba 2020-04-20T00:43:54Z pjb: had branches that dated back several years, that needed to be merged, before we could do any such global commitsโ€ฆ 2020-04-20T00:49:44Z SGASAU: aeth: consider the following well-known case 2020-04-20T00:50:12Z SGASAU: Until relatively recently SUS and POSIX required "gets" in libc. 2020-04-20T00:50:23Z SGASAU: Nobody used it in his right mind. 2020-04-20T00:50:59Z SGASAU: Some mostly compatible operating systems ignored this requirement. 2020-04-20T00:51:41Z SGASAU: While neither POSIX nor SUS didn't require presence of a number of really useful API at the same conceptual level. 2020-04-20T00:52:09Z SGASAU: A number of mostly compatible operating systems just implemented wanted features. 2020-04-20T00:53:00Z pjb: POSIX just fixed the common libc and shell of unix systems. They didn't design any clean API. 2020-04-20T00:53:03Z SGASAU: At the same time neither POSIX nor SUS required standard location or a way to get location of standard command shell. 2020-04-20T00:54:32Z SGASAU: Judging by some comparison table, OpenBSD or even NetBSD or FreeBSD would be worse than Solaris with its broken /bin/sh and /usr/bin/awk. 2020-04-20T00:56:52Z pilne_ quit (Ping timeout: 265 seconds) 2020-04-20T00:57:24Z SGASAU: pjb: I have some background that makes me skeptical of quality of SRFIs and even R7RS in general. 2020-04-20T00:58:18Z pilne joined #scheme 2020-04-20T00:58:22Z pjb: framework design is even harder than programmingโ€ฆ 2020-04-20T00:58:33Z SGASAU: Since we may have involved persons on the channel, I'm not going to disclose or discuss that further. 2020-04-20T00:58:59Z SGASAU: I agree on that. 2020-04-20T01:00:06Z SGASAU: My opinion is that you've got to use proposed framework in practice at least yourself before bringing it forward as a standard. 2020-04-20T01:00:58Z tryte_ joined #scheme 2020-04-20T01:01:14Z SGASAU: In that sense C++ folks have, probably, the best approach. 2020-04-20T01:01:23Z tryte quit (Ping timeout: 240 seconds) 2020-04-20T01:03:34Z rain quit (Ping timeout: 240 seconds) 2020-04-20T01:08:02Z rain joined #scheme 2020-04-20T01:08:04Z SGASAU quit (Remote host closed the connection) 2020-04-20T01:08:46Z SGASAU joined #scheme 2020-04-20T01:11:55Z Tirifto quit (Quit: Leaving.) 2020-04-20T01:15:07Z TCZ quit (Quit: Leaving) 2020-04-20T01:16:45Z seepel quit (Ping timeout: 250 seconds) 2020-04-20T01:31:14Z hugh_marera quit (Ping timeout: 240 seconds) 2020-04-20T01:37:57Z foof: There are no frameworks for Scheme and likely never will be. Frameworks take away options while APIs add them. 2020-04-20T01:38:51Z foof: Languages with poor metaprogramming facilities introduce frameworks to reduce boilerplate. 2020-04-20T01:49:01Z lritter joined #scheme 2020-04-20T02:05:41Z drakonis quit (Quit: WeeChat 2.8) 2020-04-20T02:06:55Z jcowan: and of course what they do is *create* boilerplate as they evolve 2020-04-20T02:18:27Z jcowan: zaifir: I just pushed the multiple-values draft of SRFI 189 to github/johnwcowan/srfi-189. I've also asked Arthur to publis it as such. 2020-04-20T02:18:35Z jcowan: s/such/a new draft 2020-04-20T02:24:04Z turtleman quit (Ping timeout: 256 seconds) 2020-04-20T02:26:46Z rain quit (Ping timeout: 265 seconds) 2020-04-20T02:41:17Z turtleman joined #scheme 2020-04-20T02:45:59Z turtleman quit (Ping timeout: 258 seconds) 2020-04-20T03:00:19Z aeth: foof: huh? A software framework has "inversion of control", i.e. the control flow is handled by the framework rather than a normal library, which provides routines for the user to use. Any game engine (and there are some) is technically a software framework. 2020-04-20T03:00:36Z aeth: (Confusingly, there are both game frameworks and game engines, that largely overlap, but both are usually software frameworks, too.) 2020-04-20T03:00:51Z aeth: s/and there are some/and there are some in Scheme/ 2020-04-20T03:02:15Z aeth: The only option frameworks take away is the ability to control the program main loop (e.g. game loop) yourself, or to combine things from multiple frameworks (since you're giving up control of that loop) 2020-04-20T03:22:01Z torbo quit (Remote host closed the connection) 2020-04-20T03:27:53Z jcowan: But in a call/cc language you don't need inversion of control, though. 2020-04-20T03:28:48Z jcowan: Your code and the library code are effectively coroutines. 2020-04-20T03:34:26Z luni quit (Quit: Connection closed) 2020-04-20T03:37:53Z aeth: jcowan: Depends on the application. For a game, I'd absolutely want to just call a higher order function 50-100 times a second, to ensure the timing. 2020-04-20T03:38:37Z jcowan: just as when you invoke a syscall, the kernel is a coroutine of your whole program. 2020-04-20T03:38:38Z aeth: the HOF can do whatever, but it better do that in < 10 ms or there will be dropped frames 2020-04-20T03:39:05Z jcowan: That's an implementation rather than a design question, of course. 2020-04-20T03:39:35Z jcowan: In Chicken the cost to call a procedure or a continuation is the same, so the cost of call/cc is smeared out over all programs. 2020-04-20T03:52:28Z mdhughes: erkin: It'd be useful to list thunderchez next to Chez (and other R6's, since those are mostly from a portable implementation). And a bunch of the SRFIs are just "what R6RS did in library", but I dunno how to represent that. 2020-04-20T03:52:49Z SGASAU quit (Remote host closed the connection) 2020-04-20T03:53:30Z SGASAU joined #scheme 2020-04-20T03:55:58Z mdhughes: My game engine works by C-like logic: Top-level game loop, update/render functions bound to globals so I can swap states quickly. Coroutines wouldn't help, because everything is locked to that FPS timer. 2020-04-20T03:58:13Z mdhughes: It's not like a simulation or chess evaluator where the user can wait for a chain of calls to resolve. You have less than 16ms to finish each loop. 2020-04-20T03:59:47Z mdhughes: As for portable libraries, it's a nice ideal, but in practice I'm just porting my lib from one to another as needed. 90% is common code, and if I was really picky I'd move the 10% non-portable to its own file, but I haven't bothered. 2020-04-20T04:27:51Z pilne quit (Quit: I used to think I was indecisive, but now I'm not too sure.) 2020-04-20T04:29:58Z ayerhart joined #scheme 2020-04-20T05:10:12Z lockywolf__ joined #scheme 2020-04-20T05:43:42Z aeth: Again, on portability, it really depends on what you're doing. If you're writing code for The Scheme Languageโ„ข, then, yeah maybe you want portability. But if you're writing a Scheme implementation, you want to add nice things that probably aren't portable. 2020-04-20T05:45:21Z aeth: In a strange sense, implementors and portable-Scheme-authors are sort of adversaries, unless your Scheme implementation is small enough that portability brings you more benefit than features. 2020-04-20T05:54:11Z gravicappa joined #scheme 2020-04-20T05:55:04Z brendyyn joined #scheme 2020-04-20T06:19:19Z lockywolf_ joined #scheme 2020-04-20T06:21:06Z SGASAU quit (Remote host closed the connection) 2020-04-20T06:21:46Z SGASAU joined #scheme 2020-04-20T06:22:11Z lockywolf__ quit (Ping timeout: 258 seconds) 2020-04-20T06:24:18Z lockywolf__ joined #scheme 2020-04-20T06:26:47Z lockywolf_ quit (Ping timeout: 258 seconds) 2020-04-20T06:40:59Z ecraven: ;) 2020-04-20T06:42:27Z mdhughes: Yeah, I'd really rather that implementors try to follow the specs and do as little extra as they can get away with, and clearly label that stuff. 2020-04-20T06:53:30Z aeth: R7RS makes that easy. 2020-04-20T06:54:18Z jobol joined #scheme 2020-04-20T06:54:22Z aeth: besides exact-integer-sqrt, nothing else is specified (in R7RS-small) to return multiple values AFAIK 2020-04-20T06:54:48Z mdhughes: Because it doesn't specify enough to be a production language, and puts all that in the SRFIs? 2020-04-20T06:55:21Z aeth: quite a few of the procedures make sense with multiple return values (the CL versions often have them) e.g. in R7RS-small (floor 3.5) => 3 but in CL (floor 3.5) => (values 3 0.5) 2020-04-20T06:55:33Z aeth: (ignore for a second that the CL is using single float instead of double) 2020-04-20T06:55:46Z mdhughes: Doesn't it also have quotient-with-remainder? 2020-04-20T06:55:54Z aeth: but IMO multiple return values versions belong in other libraries, even with the same name 2020-04-20T06:56:01Z aeth: mdhughes: I don't think so? Maybe that one in particular too 2020-04-20T06:56:32Z mdhughes: Yes, floor/ and truncate/ 2020-04-20T06:56:36Z aeth: mdhughes: no, just quotient so either you're thinking of an implementation, R6RS, or R7RS-large 2020-04-20T06:57:12Z aeth: mdhughes: floor/ are for 2 input values, not 2 output values, although, yes CL also takes in an optional second value 2020-04-20T06:57:26Z mdhughes: "The procedures ending in / return two integers" 2020-04-20T06:57:27Z aeth: e.g. (floor 3 2) => (values 1 1) in CL 2020-04-20T06:57:28Z aeth: ah 2020-04-20T06:57:34Z aeth: I guess floor/ is exactly CL's FLOOR then 2020-04-20T06:59:04Z aeth: I'm guessing it's in a SRFI that's going into R7RS-large 2020-04-20T06:59:39Z mdhughes: It's div-and-mod and div0-and-mod0 in R6RS, which is more explicit. 2020-04-20T06:59:52Z aeth: SRFI 141 has floor/ 2020-04-20T06:59:56Z aeth: R7RS large. 2020-04-20T07:00:10Z aeth: https://srfi.schemers.org/srfi-141/srfi-141.html 2020-04-20T07:00:11Z mdhughes: floor/ is in the R7RS-small I have openโ€ฆ 2020-04-20T07:00:16Z aeth: huh? 2020-04-20T07:00:30Z epony quit (Quit: reconf) 2020-04-20T07:00:36Z aeth: Are you sure you don't have an R7RS-large draft? Or maybe my R7RS-small version is old 2020-04-20T07:00:44Z aeth: It's not in the index of my r7rs.pdf 2020-04-20T07:01:10Z mdhughes: Could be, it just says R7RS.pdf. 2020-04-20T07:01:19Z mdhughes: Oh, Oct 6, 2017 2020-04-20T07:01:46Z aeth: hmm, I think I might have been using the wrong source material 2020-04-20T07:02:16Z mdhughes: Which is the one I get at r7rs.org 2020-04-20T07:02:21Z aeth: yes, you're right 2020-04-20T07:03:28Z mdhughes: And seems to have the errata inserted. 2020-04-20T07:04:40Z aeth: errata inserted is probably new... and it's not in https://small.r7rs.org/attachment/r7rs.pdf at least not as a text search 2020-04-20T07:04:46Z aeth: but I'm not sure what I had open that didn't have a floor/ 2020-04-20T07:05:37Z aeth: I had since closed and reopened it a few dozen times as the conversation progressed, and my copy of r7rs.pdf (not from there) has it 2020-04-20T07:06:16Z mdhughes: I have h4xx0r3d yr R7RS 2020-04-20T07:06:56Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-20T07:07:15Z keep_learning joined #scheme 2020-04-20T07:07:21Z mdhughes: Looking at R5RS, it had values/let-values, but I don't know of anything that used it. quotient-and-remainder was an extension. 2020-04-20T07:10:00Z aeth: yes, I might have accidentally r5rsed when I looked for floor/? but that would've been weird 2020-04-20T07:34:51Z SGASAU quit (Read error: Connection reset by peer) 2020-04-20T07:35:32Z SGASAU joined #scheme 2020-04-20T07:50:17Z skapata quit (Quit: ฤœis!) 2020-04-20T08:04:44Z CyDefect joined #scheme 2020-04-20T08:23:54Z konvertex joined #scheme 2020-04-20T08:49:05Z xuxx joined #scheme 2020-04-20T08:53:13Z mdhughes: jcowan: Request for SRFI: UUID generator. 2020-04-20T08:57:03Z mdhughes: I suppose I don't generate them in tight loops, so for my needs (system "uuidgen") and some jiggery-pokery to get output is enough, but that's obviously not portable. 2020-04-20T08:58:55Z mdhughes: Someone already did a swing and miss: https://srfi.schemers.org/srfi-84/srfi-84.html 2020-04-20T09:02:45Z wasamasa: well, this one discredits UUIDs 2020-04-20T09:02:56Z wasamasa: and aimed for UIDs, whatever that may mean 2020-04-20T09:06:47Z lockywolf_ joined #scheme 2020-04-20T09:09:34Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-20T09:17:46Z mdhughes: It means non-portable, useless if you need to talk to something that requires a UUID. 2020-04-20T09:18:42Z mdhughes: For just a random symbol, gensym is fine. But you leave your computer, you need to follow RFCs. 2020-04-20T09:20:34Z mdhughes: I'll put it on my own todo list, tho. The problem area is getting secure random bits, which needs FFI access in many Schemes. 2020-04-20T09:21:07Z wasamasa: don't we have a SRFI for that? 2020-04-20T09:21:17Z wasamasa: https://srfi.schemers.org/srfi-27/srfi-27.html 2020-04-20T09:25:53Z mdhughes: It's just using the system clock for entropy, that's not suitable for a UUID. 2020-04-20T09:26:02Z wasamasa: that's a suggestion 2020-04-20T09:26:45Z mdhughes: "with the notable exception of security related programs" 2020-04-20T09:28:31Z mdhughes: Also can't get a MAC address, which is a useful way of isolating it to one machine; randomizing there is not ideal. 2020-04-20T09:30:36Z mdhughes: "Anyone who attempts to generate random numbers by deterministic means is, of course, living in a state of sin." โ€”John von Neumann 2020-04-20T09:34:12Z ecraven: I totally disagree ;) 2020-04-20T09:34:23Z ecraven: for example in games, there are good reasons to run an RNG deterministically 2020-04-20T09:34:54Z mdhughes: Videogames are definitionally a state of sin, sloth. 2020-04-20T09:36:08Z wasamasa: and in fuzzing, too 2020-04-20T09:36:23Z aeth: People work harder in video games than in anywhere else, see: Minecraft. 2020-04-20T09:36:40Z wasamasa: or generation of serial numbers 2020-04-20T09:38:24Z mdhughes: You don't want serial numbers to be reproducible by just having the same clock again. That's exactly the case where a UUID or similar unique hash is important. 2020-04-20T09:39:41Z ecraven: the point is determinism, not clock seeding 2020-04-20T09:39:59Z mdhughes: Note that von Neumann wrote that just before explaining his PRNG system. But he wasn't dealing with crypto applications; Turing would've used very different systems. 2020-04-20T09:45:23Z tdammers: "with the notable exception of security related programs" -- these days, that excludes practically all software 2020-04-20T09:46:11Z ayerhart_ joined #scheme 2020-04-20T09:46:26Z ayerhart quit (Read error: Connection reset by peer) 2020-04-20T10:01:03Z SGASAU quit (Remote host closed the connection) 2020-04-20T10:01:44Z SGASAU joined #scheme 2020-04-20T10:13:42Z hugh_marera joined #scheme 2020-04-20T10:14:47Z zig: 2 2020-04-20T10:14:53Z zig: oops sorry 2020-04-20T10:14:58Z zig: morning ;) 2020-04-20T10:15:38Z lockywolf_ quit (Ping timeout: 258 seconds) 2020-04-20T10:19:38Z mdhughes: 4 2020-04-20T10:19:44Z TCZ joined #scheme 2020-04-20T10:33:06Z brendyyn quit (Ping timeout: 256 seconds) 2020-04-20T10:58:21Z shakdwipeea joined #scheme 2020-04-20T11:03:41Z zaifir: jcowan: Thanks, the new draft looks good. 2020-04-20T11:04:44Z jcowan: Great! 2020-04-20T11:04:58Z jcowan: mdhughes: I'm working on a UUID draft even as we speak. 2020-04-20T11:05:19Z mdhughes: Thank you for anticipating my needs. 2020-04-20T11:05:41Z mdhughes: Now, where are you getting the crypto-quality entropy? 2020-04-20T11:06:48Z ecraven: from the OS? 2020-04-20T11:08:27Z lockywolf_ joined #scheme 2020-04-20T11:08:48Z jcowan: The draft says "should be cryptographically strong" 2020-04-20T11:09:12Z zerous quit (Quit: WeeChat 2.0.1) 2020-04-20T11:09:15Z jcowan: A good place to get it would be seeded from CPU timing loops. 2020-04-20T11:11:19Z jcowan: But /dev/random is also reasonable if it exists. 2020-04-20T11:17:42Z mdhughes: Right. Trouble is there's no API for that yet. C FFI or hunt thru the library for your impl. 2020-04-20T11:18:55Z lritter quit (Ping timeout: 265 seconds) 2020-04-20T11:23:40Z jcowan: Okay, please review https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/Uuid.md (it's short). The only external requirement is the random number source. 2020-04-20T11:29:38Z siraben: jcowan: Nice draft! What do Schemes currently do to implement UUID generation? 2020-04-20T11:29:54Z weinholt: jcowan, you can base the reference implementation on https://github.com/weinholt/uuid if that is convenient for you, it looks pretty close to what you have there 2020-04-20T11:30:03Z jcowan: I'll look into that when I change the pre-SRFI to a SRFI. 2020-04-20T11:30:08Z ecraven: jcowan: looks good, but I'm no expert on UUIDs :-/ 2020-04-20T11:30:52Z jcowan: Thanks all 2020-04-20T11:33:22Z lritter joined #scheme 2020-04-20T11:33:58Z jcowan: weinholt: Looks good. I may adopt your names. I recommend that you remove time-uuid and md5-uuid, however, on privacy grounds. 2020-04-20T11:35:25Z lockywolf__ joined #scheme 2020-04-20T11:36:17Z weinholt: jcowan, i'll add recommendations to not use them 2020-04-20T11:37:18Z jcowan: time-uuid also makes the implementation dependent on a time source. 2020-04-20T11:38:11Z weinholt: indeed, i like scaling down the API for the SRFI 2020-04-20T11:38:37Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-20T11:39:49Z weinholt: an interesting note on dependencies: there are UUID libraries that use uuidd, a local daemon that issues UUIDs. i'm not sure how relevant it is today. 2020-04-20T11:41:41Z mdhughes: jcowan: That seems all right. There are uses for version 1, but they can be shoehorned into version 5, so it's fine. 2020-04-20T11:42:33Z jcowan: indeed, version 5 is very general 2020-04-20T11:43:31Z jcowan: For an application I am designing, every datum will be identified by a version 5 UUID 2020-04-20T11:44:21Z jcowan: systemwide ones based on a UUID based on the URL of the system, user-specific ones based on a mailto: URL representing the user 2020-04-20T11:44:27Z lockywolf_ joined #scheme 2020-04-20T11:44:48Z jcowan: and some random UUIDs as well 2020-04-20T11:45:10Z jcowan: this gives reproducibility for system UUIDs and uniqueness for user-specific ones 2020-04-20T11:47:10Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-20T11:50:43Z hugh_marera quit (Ping timeout: 260 seconds) 2020-04-20T11:53:49Z SGASAU quit (Remote host closed the connection) 2020-04-20T11:58:49Z SGASAU joined #scheme 2020-04-20T12:11:46Z turtleman joined #scheme 2020-04-20T12:14:50Z epony joined #scheme 2020-04-20T12:22:00Z raingloom joined #scheme 2020-04-20T12:24:34Z lritter quit (Ping timeout: 256 seconds) 2020-04-20T12:25:42Z turtleman quit (Ping timeout: 256 seconds) 2020-04-20T12:30:40Z jcowan: What are people's views about UUID *as* bytevector vs UUID as opaque object wrapping a bytevector? The weinholt lib takes the first view, the pre-SRFI takes the second view and allows conversion to and from bytevectors. 2020-04-20T12:33:22Z ecraven: personally, I'd just use a bytevector, and provide something to convert it to/from a string 2020-04-20T12:33:40Z ecraven: though if you want uuid?, then you'd need a proper wrapper 2020-04-20T12:35:13Z jcowan: The advantage to the wrapper is that it can't be mutated. 2020-04-20T12:36:42Z weinholt: a wrapper also lets you see that it's supposed to be a UUID, which could be an advantage, and implementations can define custom printers for them to make them look nice 2020-04-20T12:39:51Z ecraven: but you can't print it or read it 2020-04-20T12:40:13Z luni joined #scheme 2020-04-20T12:40:14Z ecraven: I'd be all for a wrapper if that didn't mean we need tons of new monomorphic functions :-/ 2020-04-20T12:44:46Z jcowan: There's not much you can do with a UUID, that's part of the point of it. I don't even have any accessors except to get the version. 2020-04-20T12:45:04Z wraithoftheropes joined #scheme 2020-04-20T12:45:40Z wasamasa: what about the hex representation 2020-04-20T12:46:45Z wasamasa: in clojure the .toString() method turns a UUID object into that 2020-04-20T12:47:56Z wasamasa: ouch: https://docs.oracle.com/javase/7/docs/api/java/util/UUID.html#method_summary 2020-04-20T12:48:01Z wasamasa: way more methods than expected 2020-04-20T12:49:52Z SGASAU quit (Remote host closed the connection) 2020-04-20T12:52:16Z ecraven: jcowan: well, you want at least to turn it into a string and back. also read/write it 2020-04-20T12:52:53Z ecraven: so read-uuid, write-uuid, uuid->string and string->uuid :-/ 2020-04-20T12:52:55Z SGASAU joined #scheme 2020-04-20T12:54:17Z jcowan: The kast two, certainly. I don't know of any proposed lexical syntax for uuids, though. 2020-04-20T12:54:20Z jcowan: s/kast/last 2020-04-20T12:54:33Z jcowan: I already have conversions to and from strings and bytevectors. 2020-04-20T12:55:16Z ecraven: no, I mean (read-uuid binary-input-port) and (write-uuid uuid binary-output-port) 2020-04-20T12:55:51Z jcowan: Oh. 2020-04-20T12:56:12Z ecraven: though I'm not sure whether binary or textual is the more usual format for uuids :-/ 2020-04-20T12:56:56Z wraithoftheropes quit (Quit: leaving) 2020-04-20T12:58:03Z jcowan: write-bytevector and read-bytevector should suffice for binary 2020-04-20T13:03:13Z ecraven: yes, but maybe they should work on textual ports, not binary ports.. not sure which is more useful 2020-04-20T13:04:35Z ecraven: sorry, misread.. so you'd wrap uuids, but provide access to the underlying bytevector for io? 2020-04-20T13:07:58Z civodul joined #scheme 2020-04-20T13:12:22Z jcowan: Just so, or rather a copy of it. 2020-04-20T13:12:36Z jcowan: (Copying 16-byte bytevectors is not a big deal.) 2020-04-20T13:12:48Z ecraven: so you'd do something like (bytevector->uuid (read-bytevector 16)) for reading? 2020-04-20T13:13:29Z jcowan: Exactly 2020-04-20T13:15:33Z weinholt: i love how complicated 16 random bytes can be made... but on a detailed reading of RFC 4122 there actually isn't just one binary representation of UUIDs, because three of the fields have an endianness and big endian is suggested "In the absence of explicit application or presentation protocol specification to the contrary". this favors an opaque type. 2020-04-20T13:22:03Z lockywolf__ joined #scheme 2020-04-20T13:24:49Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-20T13:41:32Z TCZ quit (Quit: Leaving) 2020-04-20T13:41:57Z SGASAU quit (Remote host closed the connection) 2020-04-20T13:42:35Z SGASAU joined #scheme 2020-04-20T13:43:15Z jcowan: Network byte order (big-endian) is the only thing that makes sense, as nobody interprets UUIDs as integers. 2020-04-20T13:44:38Z wasamasa: what does microsoft do with their GUIDs? 2020-04-20T13:44:45Z weinholt: cue RFC 4122: "then treating the two UUIDs as 128-bit unsigned integers" 2020-04-20T13:45:06Z weinholt: i'm not going to object to using big endian though :) 2020-04-20T13:45:17Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-20T13:47:06Z SGASAU quit (Remote host closed the connection) 2020-04-20T13:47:15Z wasamasa: > Variant 2 UUIDs, historically used in Microsoft's COM/OLE libraries, use a mixed-endian format, whereby the first three components of the UUID are little-endian, and the last two are big-endian. 2020-04-20T13:47:51Z SGASAU joined #scheme 2020-04-20T13:49:12Z weinholt: additionally, using VAX-endian unlocks an achievement 2020-04-20T13:58:02Z lockywolf_ joined #scheme 2020-04-20T14:00:08Z ayerhart__ joined #scheme 2020-04-20T14:00:50Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-20T14:01:29Z zig quit (Quit: WeeChat 1.9.1) 2020-04-20T14:02:42Z jcowan is not bothering with variants other than RFC 2020-04-20T14:03:44Z ayerhart_ quit (Ping timeout: 265 seconds) 2020-04-20T14:04:03Z tdammers: people conceptually treat UUIDs as large integers all the time, it's just not practical to implement them as machine ints verbatim, because most machines don't have large enough machine words 2020-04-20T14:04:28Z jcowan: What would you do with a UUID-as-integer? 2020-04-20T14:07:18Z jcowan: I've just added a comparator that allows both ordering and hashing. 2020-04-20T14:08:22Z tdammers: cryptography, storage, comparison 2020-04-20T14:08:59Z tdammers: and again, *conceptually*. the implementation is often to just represent it as a sequence of bytes and do the equivalent integer operations in a byte-wise fashion 2020-04-20T14:09:42Z tdammers: but it's actually useful to think of it as an integer, because that hints at the correctness of various optimizations, such as chopping the UUID into machine-word-sized chunks instead of individual bytes, which means you can process 8 bytes at a time instead of 1 2020-04-20T14:19:51Z jcowan: crypto works on bytes anyway; comparison is good and I've incorporated it; storage, what would that entail? 2020-04-20T14:20:45Z gaqwas joined #scheme 2020-04-20T14:25:42Z tdammers: again, it's *conceptual* 2020-04-20T14:25:49Z tdammers: and conceptually, a lot of crypto works on integers, not bytes 2020-04-20T14:26:11Z tdammers: as far as crypto theory is concerned, things like keys and hashes and messages and such are all more or less viewed as large integers 2020-04-20T14:33:55Z jcowan: Would you recommend the addition of integer->uuid and uuid->integer functions, since we do have bignums? 2020-04-20T14:34:58Z tdammers: idk; I guess the "treating as integer" part is generally something you'd do on the library side; on the consumer side, you usually treat them as opaque identifies. then again, I don't see much harm in providing such functions 2020-04-20T14:35:39Z jcowan: I don't want to increase the API size unless I can see a use case for these functions. 2020-04-20T14:36:27Z jcowan: Python doesn't provide it; on the other hand Clojure has functions for extracting the high-order and low-order halves as uint64. 2020-04-20T14:36:39Z tdammers: hmhm 2020-04-20T14:36:51Z tdammers: extracting halves sounds like a worst-of-both-worlds kind of thing to me 2020-04-20T14:38:14Z jcowan: In any case the R6RS/R7RS bytevector lib lets you grab uint64s (or any other standard int type) from bytevectors or parts of them, so that is probably enough. 2020-04-20T14:38:29Z jcowan: I'll leave it out. 2020-04-20T14:38:58Z tdammers: ah yes 2020-04-20T14:39:16Z tdammers: only proper reason I can think of would be to make the byte ordering unambiguous 2020-04-20T14:39:29Z tdammers: as in, the library decides on byte order rather than the caller 2020-04-20T14:40:09Z gravicappa quit (Ping timeout: 250 seconds) 2020-04-20T14:42:56Z mdhughes: jcowan: UUID should be an object, bytevector's an implementation detail. 2020-04-20T14:43:13Z tdammers: "yes, but, but, unadultered data!" 2020-04-20T14:44:33Z lucasb joined #scheme 2020-04-20T14:44:34Z evhan quit (Quit: De IRC non curat rex...) 2020-04-20T14:44:48Z evhan joined #scheme 2020-04-20T14:45:22Z luni quit (Quit: Connection closed) 2020-04-20T14:46:22Z mdhughes: And yeah, once we can get bytevector, no need for every bitrange to have its own method. 2020-04-20T14:46:28Z jcowan: mdhughes: thanks, that's what I'm doing now. 2020-04-20T14:49:09Z whiteline quit (Remote host closed the connection) 2020-04-20T14:49:45Z whiteline joined #scheme 2020-04-20T14:50:09Z X-Scale` joined #scheme 2020-04-20T14:52:04Z X-Scale quit (Ping timeout: 265 seconds) 2020-04-20T14:52:04Z X-Scale` is now known as X-Scale 2020-04-20T14:58:11Z X-Scale` joined #scheme 2020-04-20T14:59:37Z X-Scale quit (Ping timeout: 264 seconds) 2020-04-20T14:59:38Z X-Scale` is now known as X-Scale 2020-04-20T15:01:45Z zig joined #scheme 2020-04-20T15:02:03Z gravicappa joined #scheme 2020-04-20T15:06:52Z TCZ joined #scheme 2020-04-20T15:13:08Z whiteline quit (Remote host closed the connection) 2020-04-20T15:14:00Z whiteline joined #scheme 2020-04-20T15:15:26Z Riastradh: jcowan: I agree with ecraven's proposal: use strings or byte vectors as is appropriate, and provide an easy conversion between them. I see no value in using an integer representation, or a structure of integers. 2020-04-20T15:16:44Z jcowan: Riastradh: I'm currently proposing a disjoint type which can be converted to/from a string/bytevector. 2020-04-20T15:24:36Z raingloom quit (Ping timeout: 258 seconds) 2020-04-20T15:28:17Z longshi joined #scheme 2020-04-20T15:30:25Z dmiles quit (Ping timeout: 250 seconds) 2020-04-20T15:30:51Z logicmoo joined #scheme 2020-04-20T15:38:43Z tryte_ quit (Ping timeout: 240 seconds) 2020-04-20T15:40:51Z z-memory quit (Quit: Connection closed for inactivity) 2020-04-20T15:41:02Z tryte joined #scheme 2020-04-20T15:46:10Z ayerhart__ left #scheme 2020-04-20T16:24:24Z sp1ff quit (Ping timeout: 258 seconds) 2020-04-20T16:26:41Z sp1ff joined #scheme 2020-04-20T16:35:34Z hugh_marera joined #scheme 2020-04-20T16:39:45Z xuxx quit (Ping timeout: 250 seconds) 2020-04-20T16:43:32Z hugh_marera quit (Ping timeout: 256 seconds) 2020-04-20T16:44:46Z joast quit (Quit: Leaving.) 2020-04-20T16:46:35Z gravicappa quit (Ping timeout: 260 seconds) 2020-04-20T16:47:14Z gravicappa joined #scheme 2020-04-20T16:50:02Z TCZ quit (Quit: Leaving) 2020-04-20T16:52:14Z joast joined #scheme 2020-04-20T16:56:33Z drakonis joined #scheme 2020-04-20T17:03:41Z hugh_marera joined #scheme 2020-04-20T17:12:04Z raingloom joined #scheme 2020-04-20T17:15:00Z longshi: ,suspend 2020-04-20T17:15:05Z longshi: sorry for that 2020-04-20T17:17:53Z konvertex quit (Quit: quit) 2020-04-20T17:27:12Z zmt00 quit (Quit: Leaving) 2020-04-20T17:28:38Z zig: rudybot: are there yet? 2020-04-20T17:28:40Z rudybot: zig: Are we there yet? 2020-04-20T17:28:47Z zig: rudybot: are we there yet? 2020-04-20T17:28:48Z rudybot: zig: my point is that there are huge areas of science that have not yet mined the easy areas. We may not care about them as much , so they will lag behind other areas in terms of resources, but they'll also be the areas underrepresented in patent counts 2020-04-20T17:29:12Z zig: agreed 2020-04-20T17:31:28Z zig: this make me think about the graph diagram of co-citations they happen (only) as a circle between fields. 2020-04-20T17:31:29Z corpix joined #scheme 2020-04-20T17:31:37Z zig: unlike a more general graph... 2020-04-20T17:36:58Z zmt00 joined #scheme 2020-04-20T17:39:57Z zig: that is there is big hole in the graph, it looks like a torus. 2020-04-20T17:40:13Z zig: or a tokamak if you prefer ;) 2020-04-20T17:40:31Z zig: or a ring :D 2020-04-20T18:01:58Z lockywolf__ joined #scheme 2020-04-20T18:04:41Z lockywolf_ quit (Ping timeout: 250 seconds) 2020-04-20T18:08:28Z SGASAU quit (Remote host closed the connection) 2020-04-20T18:09:11Z SGASAU joined #scheme 2020-04-20T18:32:25Z skapata joined #scheme 2020-04-20T18:41:08Z kwmiebach quit (Ping timeout: 245 seconds) 2020-04-20T18:42:10Z kwmiebach joined #scheme 2020-04-20T18:42:45Z gaqwas quit (Read error: Connection reset by peer) 2020-04-20T19:07:51Z lavaflow quit (Quit: WeeChat 2.8) 2020-04-20T19:08:54Z travv0 quit (Ping timeout: 265 seconds) 2020-04-20T19:09:41Z travv0 joined #scheme 2020-04-20T19:18:23Z CyDefect quit (Ping timeout: 265 seconds) 2020-04-20T19:20:49Z lavaflow joined #scheme 2020-04-20T19:21:09Z theseb joined #scheme 2020-04-20T19:21:51Z theseb: Are there any limitations to symbol (variable) names? I mean...could you do stuff like redefine numbers and booleans? That sounds bad 2020-04-20T19:23:15Z wasamasa: have you consulted the scheme grammar yet? 2020-04-20T19:24:52Z ecraven: are numbers and booleans symbols? 2020-04-20T19:26:27Z jcowan: You can define the symbol |32|, but that doesn't affect the constant 32. 2020-04-20T19:29:13Z klovett_ quit 2020-04-20T19:32:58Z CyDefect joined #scheme 2020-04-20T19:36:27Z theseb: ecraven: can they be? 2020-04-20T19:36:42Z theseb: ecraven: (define 4 '5) ? 2020-04-20T19:37:43Z CyDefect quit (Ping timeout: 265 seconds) 2020-04-20T19:38:16Z abralek joined #scheme 2020-04-20T19:49:04Z aeth: In a typical Lisp, any string is a symbol, but not everything is read as a symbol 2020-04-20T19:49:30Z aeth: So you can't (define 4 5) but you can (define |4| 5) as jcowan mentioned 2020-04-20T19:50:06Z aeth: Since the reader is reading 4 as the constant number 4 rather than a symbol, but |4| escapes 2020-04-20T19:50:21Z theseb: ok thanks 2020-04-20T19:50:32Z aeth: You also need to do that to e.g. get spaces. 2020-04-20T19:50:44Z aeth: I'm not sure if this is fully specified in Scheme, though, since it leaves a lot unspecified. 2020-04-20T19:50:54Z aeth: It does behave like this in Racket, though. 2020-04-20T19:52:10Z aeth: (It's also the same in Common Lisp, with the additional qualification that this |Foo| escaping is the normal way to get case-sensitivity in Common Lisp) 2020-04-20T19:52:17Z aeth: (So it goes beyond Schemes) 2020-04-20T19:53:10Z aeth: s/any string is a symbol/any string can become a symbol/ 2020-04-20T19:57:28Z aeth: Some toy/experimental Lisps might go beyond this and let you redefine numbers. This is probably a bad idea both for reliability and performance, but it might be seen as more elegant. Sort of like how Scheme lets you do (let ((+ -)) (+ 1 1)) => 0 2020-04-20T19:57:46Z aeth: But it's incompatible with how most Lisps work, including Scheme. 2020-04-20T19:58:45Z aeth: You'd basically ask the implementors to implement a path that deoptimizes numbers (potentially all of the time) for a feature that people generally won't want 2020-04-20T20:01:18Z aeth: (Unless you just mean redefine 4 when it's being read as a constant... which is just weird.) 2020-04-20T20:01:54Z lockywolf_ joined #scheme 2020-04-20T20:04:29Z wasamasa: java allows this 2020-04-20T20:04:47Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-20T20:05:27Z aeth: heh 2020-04-20T20:06:07Z aeth: On the one hand, you don't expect a static language to do this. On the other hand, Java is in some sense more dynamic than Scheme is permitted to be since Java is (essentially) a JIT language, while Scheme needs to permit a wide range of possibilities from JIT to AOT to hardware. 2020-04-20T20:06:26Z pinoaffe: aeth: redefining constants could be neat for playing aroudn with church encoding, but I don't think there's a sensible application :) 2020-04-20T20:07:37Z aeth: pinoaffe: yeah, but as I brought up, there are two things. First (define 4 5) could just redefine the constant (now variable) 4. So (+ 4 5) is now 10 but (* 2 2) is still 4 (though the return value in the REPL would be weird, how would it be written?) and (+ (* 2 2) 5) is 9. 2020-04-20T20:07:59Z aeth: On the other hand (define 4 5) could now make 4 into 5. So... what's that do to the arithmetic system? 2020-04-20T20:08:52Z aeth: (define 5 4) is a bit easier to potentially do weird things with. You could essentially now assume that the number system is 1 2 3 4 6 7 8 9... or something. 2020-04-20T20:09:10Z gravicappa quit (Ping timeout: 256 seconds) 2020-04-20T20:10:38Z ecraven: well, you can't even redefine + so that the redefinition works for internal functions :-/ 2020-04-20T20:10:57Z wasamasa: https://stackoverflow.com/questions/52098502/java-how-to-redefine-fundamental-int-value 2020-04-20T20:11:10Z aeth: Well, you can already redefine + 2020-04-20T20:11:27Z pinoaffe: aeth: I'd assume (* 2 2) would still be printed as 4, assuming you don't redefine * 2020-04-20T20:12:02Z pinoaffe: (and don't alter the "P" of the repl) 2020-04-20T20:22:08Z izh_ joined #scheme 2020-04-20T20:23:05Z ecraven: aeth: not usefully, it won't have any effect on implementation-internal code 2020-04-20T20:23:40Z ecraven: for example, if your implementation has a function `sum' that uses + internally, you redefining + won't change what sum does 2020-04-20T20:31:13Z aeth: ecraven: probably not, mainly because of how libraries/etc. are probably implemented 2020-04-20T20:31:36Z aeth: afaik, you can assume that imported symbols are in effect new bindings 2020-04-20T20:32:18Z aeth: so it's sort of like your library being wrapped in a big (let ((+ %+) (- %-) (/ %/) (* %*)) ...) 2020-04-20T20:32:40Z aeth: It also means that you can't assume that other libraries/modules globals can be set by you... procedure names are just one kind of global 2020-04-20T20:34:49Z ecraven: which makes "redefining" a bit more useless 2020-04-20T20:35:05Z ecraven: things like adding new domains to + might actually be useful 2020-04-20T20:35:57Z okojild joined #scheme 2020-04-20T20:37:52Z aeth: It's probably best to do that in your own + rather than the implementation's +, though. The disadvantage is that other people's code won't be able to use your + unless they use your API explicitly. The advantage is that you can't mess up + and break things. 2020-04-20T20:38:10Z aeth: Redefining built-ins and messing up in your redefinitions is probably unrecoverable 2020-04-20T20:46:01Z klovett joined #scheme 2020-04-20T20:47:12Z ecraven: aeth: many things are unrecoverable. but in the end, this is not a direction that Scheme has taken, so not much use debating it. 2020-04-20T21:08:13Z nckx quit (Quit: Updating my Guix System โ€” https://guix.gnu.org) 2020-04-20T21:08:32Z nckx joined #scheme 2020-04-20T21:19:35Z jobol quit (Quit: Leaving) 2020-04-20T21:36:10Z torbo joined #scheme 2020-04-20T21:39:59Z izh_ quit (Quit: Leaving) 2020-04-20T21:47:30Z corpix quit (Quit: Leaving) 2020-04-20T21:52:14Z turtleman joined #scheme 2020-04-20T21:56:01Z TCZ joined #scheme 2020-04-20T22:03:35Z theseb quit (Quit: Leaving) 2020-04-20T22:06:53Z TCZ quit (Read error: Connection reset by peer) 2020-04-20T22:07:13Z TCZ joined #scheme 2020-04-20T22:14:43Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-20T22:39:02Z logicmoo quit (Read error: Connection reset by peer) 2020-04-20T22:42:21Z dmiles joined #scheme 2020-04-20T22:43:35Z sarna quit (Quit: bye) 2020-04-20T22:44:16Z sarna joined #scheme 2020-04-20T22:45:47Z SGASAU quit (Remote host closed the connection) 2020-04-20T22:46:29Z SGASAU joined #scheme 2020-04-20T22:50:32Z zaifir: jcowan: I'm working on implementing the new SRFI 189 draft. I think maybe/either-fold need to be changed: "If maybe/either is a Just/Right, kons is invoked on its payload and nil...". What does that look like with a multiple-value payload? 2020-04-20T22:51:48Z jcowan: zaifir: I think it means "the values of the payload plus nil" 2020-04-20T22:52:21Z jcowan: One approach would be to define a version of + that adds not only numbers but boxes containing them. 2020-04-20T22:54:02Z zaifir: jcowan: Ok. That's somewhat similar to maybe->lisp-values where, IIUC, we get back the values of the payload plus #t. 2020-04-20T22:54:13Z jcowan: Yes. 2020-04-20T22:55:21Z jcowan: but this is what the HOF gets rather than returns 2020-04-20T22:56:47Z deuill joined #scheme 2020-04-20T22:57:28Z zaifir: So in (maybe-fold kons nil (just x1 ... xn)), kons must take n + 1 arguments, since it's applied (kons x1 ... xn nil). 2020-04-20T22:58:50Z TCZ quit (Quit: Leaving) 2020-04-20T23:06:28Z lockywolf__ joined #scheme 2020-04-20T23:08:33Z jcowan: Just so 2020-04-20T23:08:49Z lockywolf_ quit (Ping timeout: 258 seconds) 2020-04-20T23:10:23Z madage quit (Ping timeout: 240 seconds) 2020-04-20T23:11:30Z madage joined #scheme 2020-04-20T23:14:31Z zaifir: jcowan: Also, the `inner-constructor' argument of maybe/either-sequence is required? I was under the impression that it would default to identity. 2020-04-20T23:15:20Z jcowan: I thought about that, but if there are multiple values in the container, identity will fail with an arity error. 2020-04-20T23:16:46Z zaifir: jcowan: Thanks for explaining. 2020-04-20T23:23:43Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-20T23:27:33Z corpix joined #scheme 2020-04-20T23:28:30Z TCZ joined #scheme 2020-04-20T23:33:49Z aeth: In Common Lisp, #'values and multiple-value-call can be used instead of #'identity and funcall when there are multiple values involved iirc 2020-04-20T23:35:08Z keep_learning joined #scheme 2020-04-20T23:36:26Z zaifir: Are there known issues with mutating a lambda-bound argument list? 2020-04-20T23:39:03Z hugh_marera_ joined #scheme 2020-04-20T23:40:57Z hugh_marera quit (Ping timeout: 250 seconds) 2020-04-20T23:40:57Z hugh_marera_ is now known as hugh_marera 2020-04-20T23:42:51Z longshi quit (Ping timeout: 272 seconds) 2020-04-20T23:43:56Z corpix quit (Quit: corpix) 2020-04-20T23:46:10Z zaifir: Just curious. R7 says `args' in (lambda args ...) is newly-allocated, so mutating it should be fine, I suppose. 2020-04-20T23:50:50Z corpix joined #scheme 2020-04-20T23:56:07Z SGASAU quit (Remote host closed the connection) 2020-04-20T23:56:46Z SGASAU` joined #scheme 2020-04-20T23:58:51Z SGASAU` quit (Client Quit) 2020-04-20T23:59:34Z SGASAU joined #scheme 2020-04-21T00:02:56Z lockywolf_ joined #scheme 2020-04-21T00:05:58Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-21T00:08:23Z lockywolf_ quit (Ping timeout: 265 seconds) 2020-04-21T00:10:51Z daviid quit (Ping timeout: 260 seconds) 2020-04-21T00:16:23Z madage quit (Ping timeout: 240 seconds) 2020-04-21T00:21:26Z SGASAU quit (Ping timeout: 265 seconds) 2020-04-21T00:21:43Z madage joined #scheme 2020-04-21T00:24:55Z SGASAU joined #scheme 2020-04-21T00:59:32Z hugh_marera quit (Quit: hugh_marera) 2020-04-21T01:23:33Z erkin: zaifir: Wow, I didn't even know you could do that. 2020-04-21T01:25:06Z erkin: ((lambda args (set-car! args 'fnord) args) 'foo) => (fnord) 2020-04-21T01:25:31Z raingloom quit (Ping timeout: 260 seconds) 2020-04-21T01:28:33Z lockywolf joined #scheme 2020-04-21T02:02:55Z TCZ quit (Quit: Leaving) 2020-04-21T02:09:40Z madage quit (Remote host closed the connection) 2020-04-21T02:09:58Z madage joined #scheme 2020-04-21T02:22:02Z turtleman quit (Ping timeout: 256 seconds) 2020-04-21T02:36:51Z shakdwipeea quit (Ping timeout: 256 seconds) 2020-04-21T02:42:58Z daviid joined #scheme 2020-04-21T03:28:05Z jcowan: Yes, the rest argument list is copied so it can be mutated, hence th eproblem with variadic recursion. 2020-04-21T03:36:08Z pilne joined #scheme 2020-04-21T03:43:08Z vmhost quit (Ping timeout: 256 seconds) 2020-04-21T03:44:55Z okojild left #scheme 2020-04-21T03:48:16Z pilne quit (Quit: Hello, 911? Yeah, it's caught in the window this time.) 2020-04-21T03:48:40Z ArthurStrong joined #scheme 2020-04-21T03:52:20Z lritter joined #scheme 2020-04-21T04:03:21Z torbo quit (Remote host closed the connection) 2020-04-21T04:37:35Z pjb` joined #scheme 2020-04-21T04:39:15Z pjb quit (Ping timeout: 272 seconds) 2020-04-21T05:17:14Z gravicappa joined #scheme 2020-04-21T05:23:11Z drakonis quit (Quit: WeeChat 2.8) 2020-04-21T05:31:59Z skapata quit (Quit: ฤœis!) 2020-04-21T06:19:19Z CyDefect joined #scheme 2020-04-21T06:34:09Z longshi joined #scheme 2020-04-21T06:39:05Z jobol joined #scheme 2020-04-21T06:39:31Z CyDefect quit (Quit: Verlassend) 2020-04-21T06:48:48Z brendyyn joined #scheme 2020-04-21T06:51:11Z ecraven: ;t 2020-04-21T06:55:31Z Fare joined #scheme 2020-04-21T07:04:07Z siraben: zaifir: Looks like that's been around since at least R5RS, too, according to the semantics. 2020-04-21T07:22:56Z lockywolf: Sorry, not entirely a scheme question, but why doesn't scheme have "dynamically-bound functions"? 2020-04-21T07:23:12Z lockywolf: I mean, binding is important at the moment of application, where is determines which objects are visible to the function body. I can easily imagine (define) defining functions that have access to the definition environment, (defun) to define ones that access runtime-environment objects, and, say (defpure) for functions that only have access to opencoded primitives. 2020-04-21T07:26:38Z longshi quit (Quit: WeeChat 2.8) 2020-04-21T07:26:56Z longshi joined #scheme 2020-04-21T07:28:32Z siraben: lockywolf: From wikipedia; "The impetus to incorporate lexical scoping, which was an unusual scoping model in the early 1970s, into their new version of Lisp, came from Sussman's studies of ALGOL. " 2020-04-21T07:32:01Z Menchers quit (Ping timeout: 264 seconds) 2020-04-21T07:32:06Z siraben: So it seems it was a concious design choice unlike other lisps at the time. 2020-04-21T07:33:07Z lockywolf: siraben, this I understand 2020-04-21T07:33:37Z siraben: Dynamic binding would convolute issues of scoping. 2020-04-21T07:33:49Z lockywolf: lexical scope is a useful thing, and if I had to choose between the two, I would choose the lexical 2020-04-21T07:34:22Z FareTower joined #scheme 2020-04-21T07:34:57Z lockywolf: siraben, are you using "dynamic binding" and "dynamic scoping" interchangeably? 2020-04-21T07:35:10Z Fare: Where is the best place to discuss compiler implementation? 2020-04-21T07:35:27Z lockywolf: Fare, icfp? 2020-04-21T07:35:40Z Fare: assuming it isn't cancelled. 2020-04-21T07:35:46Z siraben: lockywolf: Oops, I meant scoping8 2020-04-21T07:35:46Z siraben: scoping* 2020-04-21T07:35:56Z Fare: and I can afford the trip + fees + accommodation 2020-04-21T07:37:03Z lockywolf: siraben, I mean, "dynamically defined" subroutines are not without advantages 2020-04-21T07:37:40Z siraben: Right. 2020-04-21T07:38:20Z lockywolf: for example, I can throw a dynamically bound function over a network without caring about serialization and something like that 2020-04-21T07:38:33Z lockywolf: *without caring too much 2020-04-21T07:38:47Z lockywolf: or, shall I say "dynamically defined" 2020-04-21T07:39:22Z FareTower quit (Remote host closed the connection) 2020-04-21T07:40:10Z siraben: True, but then at that rate can't one just pass the quoted structure across the network? 2020-04-21T07:40:56Z lockywolf: siraben, possible, but (define) is not a function 2020-04-21T07:41:18Z lockywolf: I cannot do (let a (define (receive))) 2020-04-21T07:41:29Z lockywolf: I cannot do (let a (define (receive)) (a "hello") 2020-04-21T07:42:19Z Fare: But yeah, *if* ICFP happens, I'll likely join. 2020-04-21T07:42:46Z siraben: Fare: there's also plenty of books and so forth on compiler implementation. 2020-04-21T07:43:03Z pjb` quit (Quit: renaming) 2020-04-21T07:43:43Z pjb joined #scheme 2020-04-21T07:46:12Z zig: Fare: hello, Fare do you know some C? 2020-04-21T07:47:47Z zig: There is LISP in Small Pieces, otherwise if you know some C, I recommend you read that: https://github.com/akeep/scheme-to-c 2020-04-21T07:48:44Z Fare: zig: too much. Do you know a way to unlearn it? 2020-04-21T07:48:55Z lockywolf: SICP chapter 5.5 speaks about compilers. 2020-04-21T07:49:19Z TCZ joined #scheme 2020-04-21T07:49:21Z zig: Fare: doing lot of scheme code :) 2020-04-21T07:50:30Z SGASAU quit (Remote host closed the connection) 2020-04-21T07:51:08Z siraben: SICP is a great way to learn compilation. 2020-04-21T07:51:52Z SGASAU joined #scheme 2020-04-21T07:52:00Z siraben: Fare: Ben Lynn has an excellent blog post series on compiling a lazy functional language 2020-04-21T07:52:01Z siraben: https://crypto.stanford.edu/~blynn/compiler/ 2020-04-21T07:53:52Z Fare: my language is not lazy :-/ 2020-04-21T07:54:46Z zig: go through scheme-to-c code it is easy. 2020-04-21T07:54:57Z SGASAU quit (Remote host closed the connection) 2020-04-21T07:54:59Z zig: there is also a presentation. 2020-04-21T07:55:04Z lockywolf: Fare, just remove all the promises from the lazy code 2020-04-21T07:56:20Z SGASAU joined #scheme 2020-04-21T08:21:05Z vmhost joined #scheme 2020-04-21T08:26:33Z cpressey joined #scheme 2020-04-21T08:30:56Z sammich_ joined #scheme 2020-04-21T08:31:32Z sammich_ quit (Client Quit) 2020-04-21T08:31:33Z Blkt quit (Read error: Connection reset by peer) 2020-04-21T08:31:49Z Blkt joined #scheme 2020-04-21T08:39:41Z zig: apparantly duckduckgo (via nginx) support http/2 and http/1 and if you send a request that is http/0 it will reply http/1 but compatible with http/0 2020-04-21T08:42:03Z cpressey quit (Quit: WeeChat 1.9.1) 2020-04-21T08:42:17Z zig: I write 'apparantly' because I only tested with curl -0 and curl rewrite the reponse body to be one piece so I can not tell whether the actual response is chunked or not. 2020-04-21T09:03:24Z tdammers: wait what - http/0 is a thing? 2020-04-21T09:03:57Z wraithoftheropes joined #scheme 2020-04-21T09:10:45Z wraithoftheropes left #scheme 2020-04-21T09:11:09Z TCZ quit (Quit: Leaving) 2020-04-21T09:15:49Z zig: http/0.9 yes 2020-04-21T09:16:32Z zig: it is simpler than http/1, the drawback is that you need to open/close socket for each req/rep 2020-04-21T09:18:11Z tdammers: huh 2020-04-21T09:18:15Z tdammers: I thought that was HTTP/1.1 2020-04-21T09:18:18Z tdammers: 1.0* 2020-04-21T09:18:27Z tdammers: 1.1 introducing keep-alive 2020-04-21T09:19:17Z zig: I do no know about keep-alive. When I noted http/1 I mean http/1.1 2020-04-21T09:19:49Z mdhughes: You can request most sites with just telnet: GET / HTTP/1.0\r\nHost: whatever\r\n\r\n 2020-04-21T09:20:23Z fizzie: AIUI, HTTP/0.9 and HTTP/1.0 both need a new connection per request, but HTTP/0.9 has no headers at all (the request is just "GET /whatever.html\r\n" and nothing else), while HTTP/1.0 looks... like the above. 2020-04-21T09:20:51Z zig: oh maybe then mixing http/1.0 and http/0.9 2020-04-21T09:20:58Z zig: I am mixing... 2020-04-21T09:21:48Z fizzie: google.com answers to HTTP/0.9-style "GET /\r\n" line with HTTP/1.0 200 OK as well. 2020-04-21T09:22:19Z mdhughes: Yeah, I used 0.9 when www came out, but probably haven't typed one in 28 years or so. 2020-04-21T09:23:07Z mdhughes: https://www.w3.org/Protocols/HTTP/AsImplemented.html 2020-04-21T09:23:18Z mdhughes: Also didn't have query parameters, only a search string after ? 2020-04-21T09:23:44Z srandon111 joined #scheme 2020-04-21T09:24:23Z manualcrank quit (Quit: WeeChat 1.9.1) 2020-04-21T09:24:44Z srandon111: guys can somebody explain why here https://www.youtube.com/watch?v=x7f1j163LFU&list=PL6NenTZG6Krr0dFUqFm5IFOehFOmBrJwg&index=2 the professor introduces graphs by using the "shared" keyword? unluckily he does not give too much context... so when should i use it and why? is it necessary to build graphs ? or are there alternative ways ? 2020-04-21T09:25:53Z mdhughes: srandon111: I dunno, look in the Racket docs, that's not a Scheme-ism. 2020-04-21T09:28:33Z srandon111: mdhughes, ok so how would you define a graph? 2020-04-21T09:32:09Z srandon111: mdhughes, i did and i did not understand that's why i am asking here 2020-04-21T09:33:53Z terpri quit (Quit: Leaving) 2020-04-21T09:34:20Z terpri joined #scheme 2020-04-21T09:35:27Z terpri_ joined #scheme 2020-04-21T09:38:42Z mdhughes: Well, either a node has an index or a direct reference. So with an index, I'd keep a set of lists (data connections), where connections is a list of indices or references to other nodes. 2020-04-21T09:39:58Z mdhughes: I often use hashtables for the set, with the index as key, but list or vector might make more sense for your use. 2020-04-21T09:42:05Z tdammers: ah, right, yeah, 0.9 is the one without headers 2020-04-21T09:42:46Z terpri_ quit (Ping timeout: 240 seconds) 2020-04-21T09:42:46Z terpri quit (Ping timeout: 240 seconds) 2020-04-21T09:42:46Z tdammers: zig: keep-alive means the socket connection is kept open at the end of the request, and the client can then send another request over the same connection, rather than having to open a new socket connection 2020-04-21T09:49:40Z civodul joined #scheme 2020-04-21T09:49:54Z mdhughes: Watched some of the video, that's a bizarre way to write the structure, but he's trying to do direct references where A -> B and B -> A, so has to remember "B" even though it hasn't been defined yet, and a back-reference to "A". Using an index instead of direct reference there is much clearer. 2020-04-21T09:50:54Z mdhughes: If you're really fussy about having direct references, you can use indices during definition, then a second pass replaces them. 2020-04-21T09:51:40Z Fare quit (Ping timeout: 258 seconds) 2020-04-21T09:58:25Z TCZ joined #scheme 2020-04-21T10:05:13Z hugh_marera joined #scheme 2020-04-21T10:09:54Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-21T10:25:21Z coffeeturtle joined #scheme 2020-04-21T10:25:56Z coffeeturtle quit (Client Quit) 2020-04-21T10:28:06Z rbarraud quit (Remote host closed the connection) 2020-04-21T10:31:04Z brendyyn quit (Ping timeout: 256 seconds) 2020-04-21T10:42:15Z zig: tdammers: tx 2020-04-21T10:44:43Z srandon111: mdhughes, indeed i woulddo the same.. just saving the indexes.. so i dont understnad why this complexity is inntroduced with shared 2020-04-21T10:54:09Z motersen joined #scheme 2020-04-21T10:59:24Z smallick joined #scheme 2020-04-21T11:00:07Z r1b quit (Quit: Connection closed for inactivity) 2020-04-21T11:02:34Z v_m_v joined #scheme 2020-04-21T11:14:58Z lockywolf joined #scheme 2020-04-21T11:28:55Z raingloom joined #scheme 2020-04-21T11:30:07Z smallick quit (Quit: bye) 2020-04-21T11:33:08Z motersen quit (Quit: rcirc on GNU Emacs 26.3) 2020-04-21T11:33:53Z terpri joined #scheme 2020-04-21T11:35:12Z Zenton quit (Read error: Connection reset by peer) 2020-04-21T11:36:03Z Zenton joined #scheme 2020-04-21T11:36:04Z TCZ quit (Quit: Leaving) 2020-04-21T11:42:46Z rain joined #scheme 2020-04-21T11:44:17Z TCZ joined #scheme 2020-04-21T11:45:08Z raingloom quit (Ping timeout: 258 seconds) 2020-04-21T11:54:25Z SGASAU quit (Remote host closed the connection) 2020-04-21T11:56:27Z lockywolf_ joined #scheme 2020-04-21T11:58:20Z SGASAU joined #scheme 2020-04-21T11:58:54Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-21T12:19:27Z v_m_v quit (Remote host closed the connection) 2020-04-21T12:21:54Z SGASAU quit (Remote host closed the connection) 2020-04-21T12:22:25Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-21T12:25:24Z SGASAU joined #scheme 2020-04-21T12:32:28Z turtleman joined #scheme 2020-04-21T12:34:55Z SGASAU quit (Remote host closed the connection) 2020-04-21T12:35:37Z SGASAU joined #scheme 2020-04-21T12:38:33Z lockywolf_ joined #scheme 2020-04-21T12:41:37Z SGASAU quit (Remote host closed the connection) 2020-04-21T12:42:32Z SGASAU joined #scheme 2020-04-21T12:43:01Z rain quit (Ping timeout: 258 seconds) 2020-04-21T12:46:59Z v_m_v joined #scheme 2020-04-21T12:47:20Z SGASAU quit (Remote host closed the connection) 2020-04-21T12:50:24Z SGASAU joined #scheme 2020-04-21T12:51:49Z v_m_v quit (Ping timeout: 264 seconds) 2020-04-21T12:52:34Z turtleman quit (Ping timeout: 240 seconds) 2020-04-21T12:53:08Z SGASAU quit (Remote host closed the connection) 2020-04-21T12:53:53Z SGASAU joined #scheme 2020-04-21T12:54:30Z zig quit (Quit: WeeChat 1.9.1) 2020-04-21T12:56:48Z zig joined #scheme 2020-04-21T12:59:47Z lockywolf_ quit (Read error: Connection reset by peer) 2020-04-21T13:00:01Z lockywolf_ joined #scheme 2020-04-21T13:04:30Z v_m_v joined #scheme 2020-04-21T13:06:47Z zig: rudybot: how do you meditate? 2020-04-21T13:06:53Z rudybot: zig: how the f*** do you meditate? 2020-04-21T13:06:58Z wasamasa: rude 2020-04-21T13:07:20Z zig: And off topic. Sorry. 2020-04-21T13:08:53Z TCZ quit (Quit: Leaving) 2020-04-21T13:09:15Z v_m_v quit (Ping timeout: 260 seconds) 2020-04-21T13:09:17Z wasamasa: the bot's name is there for a reason 2020-04-21T13:14:32Z SGASAU quit (Remote host closed the connection) 2020-04-21T13:15:12Z SGASAU joined #scheme 2020-04-21T13:26:01Z xuxx joined #scheme 2020-04-21T13:26:13Z ArthurStrong quit (Quit: leaving) 2020-04-21T13:28:18Z SGASAU quit (Remote host closed the connection) 2020-04-21T13:29:15Z SGASAU joined #scheme 2020-04-21T13:29:37Z v_m_v joined #scheme 2020-04-21T13:29:45Z TCZ joined #scheme 2020-04-21T13:35:53Z hugh_marera quit (Quit: hugh_marera) 2020-04-21T13:39:41Z lockywolf__ joined #scheme 2020-04-21T13:39:53Z rain joined #scheme 2020-04-21T13:42:06Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-21T13:44:47Z v_m_v quit (Remote host closed the connection) 2020-04-21T13:46:28Z lockywolf_ joined #scheme 2020-04-21T13:48:55Z lockywolf__ quit (Ping timeout: 260 seconds) 2020-04-21T13:50:07Z lockywolf joined #scheme 2020-04-21T13:51:40Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-21T13:54:51Z SGASAU quit (Remote host closed the connection) 2020-04-21T13:55:29Z lockywolf_ joined #scheme 2020-04-21T13:55:50Z zooey_ joined #scheme 2020-04-21T13:55:55Z SGASAU joined #scheme 2020-04-21T13:56:24Z zooey quit (Quit: quit) 2020-04-21T13:57:40Z lockywolf_ quit (Read error: Connection reset by peer) 2020-04-21T13:58:09Z lockywolf_ joined #scheme 2020-04-21T13:58:15Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-21T13:59:01Z lockywolf_ quit (Remote host closed the connection) 2020-04-21T13:59:26Z ahungry joined #scheme 2020-04-21T14:18:43Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-21T14:25:54Z rain quit (Ping timeout: 240 seconds) 2020-04-21T14:29:17Z longshi quit (Quit: WeeChat 2.8) 2020-04-21T14:32:10Z abralek quit (Quit: Quit) 2020-04-21T14:51:50Z xuxx quit (Quit: Lost terminal) 2020-04-21T14:58:33Z TCZ quit (Quit: Leaving) 2020-04-21T14:59:13Z X-Scale` joined #scheme 2020-04-21T14:59:44Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-21T14:59:51Z X-Scale` is now known as X-Scale 2020-04-21T15:20:14Z SGASAU` joined #scheme 2020-04-21T15:21:17Z SGASAU quit (Ping timeout: 250 seconds) 2020-04-21T15:25:08Z siraben: rudybot: why so angry? 2020-04-21T15:25:11Z rudybot: siraben: why so angry?? 2020-04-21T15:25:45Z siraben: rudybot: why so angry?? 2020-04-21T15:25:45Z rudybot: siraben: permalinkparentamotherfuckingpanda 1 point2 points3 points 9 hours ago[+] (0 children)amotherfuckingpanda 1 point2 points3 points 9 hours ago[-]Which is why they are so angry. 2020-04-21T15:26:01Z siraben: this bot needs a filter 2020-04-21T15:26:24Z jcowan: Luckily, none of us have set out to corrupt him. 2020-04-21T15:35:58Z wasamasa: I remember a few incidents where rudybot shared a pornographic fantasy 2020-04-21T15:36:21Z wasamasa: followed by its owner removing it 2020-04-21T15:36:49Z Oddity quit (Ping timeout: 264 seconds) 2020-04-21T15:40:12Z balkamos quit (Ping timeout: 260 seconds) 2020-04-21T15:41:14Z balkamos joined #scheme 2020-04-21T15:44:37Z rain joined #scheme 2020-04-21T16:06:05Z valjda joined #scheme 2020-04-21T16:12:36Z valjda quit (Quit: WeeChat 2.8) 2020-04-21T16:14:31Z turtleman joined #scheme 2020-04-21T16:15:30Z jobol quit (Quit: Leaving) 2020-04-21T16:24:31Z Fare joined #scheme 2020-04-21T16:29:37Z X-Scale` joined #scheme 2020-04-21T16:29:46Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-21T16:30:22Z X-Scale` is now known as X-Scale 2020-04-21T16:33:10Z xelxebar quit (Read error: Connection reset by peer) 2020-04-21T16:33:30Z xelxebar joined #scheme 2020-04-21T16:33:39Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-21T16:34:30Z SGASAU joined #scheme 2020-04-21T16:37:14Z kwmiebach quit (Ping timeout: 246 seconds) 2020-04-21T16:37:35Z timwis quit (Ping timeout: 246 seconds) 2020-04-21T16:38:05Z fowlduck quit (Ping timeout: 272 seconds) 2020-04-21T16:38:16Z lritter quit (Ping timeout: 256 seconds) 2020-04-21T16:39:09Z f8l quit (Remote host closed the connection) 2020-04-21T16:40:28Z f8l joined #scheme 2020-04-21T16:40:30Z kwmiebach joined #scheme 2020-04-21T16:41:51Z fowlduck joined #scheme 2020-04-21T16:41:53Z stephe quit (Ping timeout: 272 seconds) 2020-04-21T16:42:34Z jyc_ quit (Ping timeout: 256 seconds) 2020-04-21T16:42:47Z fowlduck quit (Max SendQ exceeded) 2020-04-21T16:42:56Z kwmiebach quit (Max SendQ exceeded) 2020-04-21T16:43:32Z timwis joined #scheme 2020-04-21T16:43:33Z Duns_Scrotus quit (Ping timeout: 246 seconds) 2020-04-21T16:43:42Z stephe joined #scheme 2020-04-21T16:44:03Z zig: srandon111: btw with srfi-168 you can have a graphical database. 2020-04-21T16:44:07Z kwmiebach joined #scheme 2020-04-21T16:44:21Z zig: https://srfi.schemers.org/srfi-168/srfi-168.html 2020-04-21T16:44:38Z jyc_ joined #scheme 2020-04-21T16:44:39Z zig: srandon111: I have been into graphdbs for a long time and settled with srfi-168 2020-04-21T16:45:27Z Duns_Scrotus joined #scheme 2020-04-21T16:45:41Z conjunctive quit (Ping timeout: 265 seconds) 2020-04-21T16:46:16Z jyc_ quit (Max SendQ exceeded) 2020-04-21T16:46:56Z kwmiebach quit (Max SendQ exceeded) 2020-04-21T16:47:28Z kwmiebach joined #scheme 2020-04-21T16:47:37Z jyc_ joined #scheme 2020-04-21T16:47:43Z fowlduck joined #scheme 2020-04-21T16:48:16Z conjunctive joined #scheme 2020-04-21T16:51:07Z zig: a graph srfi possibly on top of it would be nice. 2020-04-21T16:51:38Z zig: I mean it does necessarly have to be on top of srfi-168, you get a way wish hash tables. 2020-04-21T16:52:19Z zig: I am not sure what are shared structure, I seems to me they are useful in a resources constrained environments. 2020-04-21T16:52:22Z wraithoftheropes joined #scheme 2020-04-21T17:02:55Z turtleman quit (Ping timeout: 258 seconds) 2020-04-21T17:03:18Z klovett quit (Remote host closed the connection) 2020-04-21T17:25:00Z euvhwh joined #scheme 2020-04-21T17:33:16Z teardown quit (Read error: Connection reset by peer) 2020-04-21T17:33:39Z teardown joined #scheme 2020-04-21T17:40:21Z klovett joined #scheme 2020-04-21T17:44:29Z Oddity joined #scheme 2020-04-21T17:49:54Z v_m_v joined #scheme 2020-04-21T17:54:23Z Fare quit (Ping timeout: 260 seconds) 2020-04-21T17:54:31Z v_m_v quit (Remote host closed the connection) 2020-04-21T17:57:09Z Fare joined #scheme 2020-04-21T17:58:30Z aos quit (Ping timeout: 258 seconds) 2020-04-21T17:59:15Z aos joined #scheme 2020-04-21T18:03:49Z aos quit (Ping timeout: 264 seconds) 2020-04-21T18:05:23Z aos joined #scheme 2020-04-21T18:07:35Z v_m_v joined #scheme 2020-04-21T18:10:08Z aos quit (Ping timeout: 256 seconds) 2020-04-21T18:15:22Z v_m_v quit (Remote host closed the connection) 2020-04-21T18:16:05Z v_m_v joined #scheme 2020-04-21T18:32:40Z klovett quit 2020-04-21T18:34:18Z klovett joined #scheme 2020-04-21T18:39:57Z izh_ joined #scheme 2020-04-21T18:43:06Z zaifir: siraben: You're our resident Scheme-semantics wizard :) 2020-04-21T18:52:29Z wraithoftheropes left #scheme 2020-04-21T18:59:17Z skapata joined #scheme 2020-04-21T19:12:12Z v_m_v quit (Remote host closed the connection) 2020-04-21T19:15:22Z acarrico joined #scheme 2020-04-21T19:16:53Z euvhwh quit (Read error: Connection reset by peer) 2020-04-21T19:21:33Z euvhwh joined #scheme 2020-04-21T19:46:21Z zig: it is always nice to be surrounded by smart people 2020-04-21T19:51:56Z tdammers: technically, not *always* 2020-04-21T19:58:27Z f8l quit (Remote host closed the connection) 2020-04-21T19:59:23Z corpix quit (Quit: corpix) 2020-04-21T20:00:03Z f8l joined #scheme 2020-04-21T20:01:01Z zig: how so? 2020-04-21T20:01:38Z corpix joined #scheme 2020-04-21T20:09:02Z drakonis joined #scheme 2020-04-21T20:11:54Z gravicappa quit (Ping timeout: 240 seconds) 2020-04-21T20:12:13Z SGASAU: zig: crows are smart birds. 2020-04-21T20:12:16Z SGASAU: Very smart. 2020-04-21T20:12:34Z SGASAU: Ever had to deal with problems arising? 2020-04-21T20:15:01Z seepel joined #scheme 2020-04-21T20:17:04Z aos joined #scheme 2020-04-21T20:28:20Z izh_ quit (Quit: Leaving) 2020-04-21T20:28:23Z seepel quit (Ping timeout: 260 seconds) 2020-04-21T20:32:04Z f8l quit (Remote host closed the connection) 2020-04-21T20:33:46Z f8l joined #scheme 2020-04-21T20:35:47Z pilne joined #scheme 2020-04-21T20:37:43Z wasamasa quit (Quit: ZNC - https://znc.in) 2020-04-21T20:38:01Z jcowan: With crows? No. 2020-04-21T20:38:05Z tdammers: crows aren't people though 2020-04-21T20:38:31Z tdammers: but if I had to be held hostage by a bunch of armed terrorists, I'd probably prefer it if they were dumb as bricks 2020-04-21T20:38:55Z wasamasa joined #scheme 2020-04-21T20:39:48Z jcowan: Not I. They might shoot me without justification even from their own point of view. At which point the leader would scream "YOU MORON!!", but that wouldn't help me any. 2020-04-21T20:40:52Z C-Keen: lol 2020-04-21T20:44:45Z wasamasa quit (Quit: ZNC - https://znc.in) 2020-04-21T20:45:55Z wasamasa joined #scheme 2020-04-21T20:47:15Z Lysandros quit (Remote host closed the connection) 2020-04-21T20:50:13Z v_m_v joined #scheme 2020-04-21T20:56:23Z aeth: If I had to be held hostage by a group, I'd probably prefer it if they were literally house cats. Even if they were very smart house cats. Haha, I found a loophole! 2020-04-21T20:57:16Z aeth: (And saying that house cats aren't people is probably why the cats started taking hostages in the first place.) 2020-04-21T20:58:47Z f8l quit (Remote host closed the connection) 2020-04-21T21:00:03Z f8l joined #scheme 2020-04-21T21:00:15Z pjb: tdammers: https://advanced.jhu.edu/wp-content/uploads/2013/07/The-Basic-Laws-of-Human-Stupidity.pdf 2020-04-21T21:01:05Z pjb: tdammers: if you have to be held hostage, it'd better be by somebody smart. 2020-04-21T21:03:33Z rain quit (Quit: Leaving) 2020-04-21T21:03:43Z rain joined #scheme 2020-04-21T21:05:07Z rain quit (Client Quit) 2020-04-21T21:05:44Z raingloom joined #scheme 2020-04-21T21:10:49Z hugh_marera joined #scheme 2020-04-21T21:11:06Z ahungry quit (Remote host closed the connection) 2020-04-21T21:11:45Z seepel joined #scheme 2020-04-21T21:12:34Z f8l quit (Remote host closed the connection) 2020-04-21T21:13:58Z f8l joined #scheme 2020-04-21T21:16:13Z Andros joined #scheme 2020-04-21T21:25:12Z f8l quit (Remote host closed the connection) 2020-04-21T21:26:37Z f8l joined #scheme 2020-04-21T21:27:17Z daviid quit (Ping timeout: 265 seconds) 2020-04-21T21:27:38Z aeth: What about infants? Infants aren't smart, but if I was held hostage by a group of them, I think I could escape. 2020-04-21T21:27:47Z aeth: (This is how you test software!) 2020-04-21T21:28:49Z tdammers: pjb: this is fantastic reading, in any case 2020-04-21T21:28:51Z pjb: aeth: I wouldn't be so sure. Depends on their "weapons". 2020-04-21T21:29:42Z aeth: That's why I said infants, not toddlers, I'm not sure if toddlers would win with enough numbers and weapons 2020-04-21T21:32:47Z pjb: For example: https://www.youtube.com/watch?v=GhxqIITtTtU 2020-04-21T21:32:57Z tdammers: relevant: https://www.nerdtests.com/mq/uttake.php?id=109440 2020-04-21T21:35:50Z Andros quit (Quit: Leaving) 2020-04-21T21:37:35Z pjb: My Result: 20 Children :-) 2020-04-21T21:38:48Z nikita` joined #scheme 2020-04-21T21:40:56Z xelxebar quit (Remote host closed the connection) 2020-04-21T21:41:13Z xelxebar joined #scheme 2020-04-21T21:42:06Z turtleman joined #scheme 2020-04-21T21:52:05Z SGASAU quit (Remote host closed the connection) 2020-04-21T21:52:49Z SGASAU joined #scheme 2020-04-21T22:07:07Z f8l quit (Remote host closed the connection) 2020-04-21T22:08:30Z f8l joined #scheme 2020-04-21T22:11:08Z seepel quit (Ping timeout: 256 seconds) 2020-04-21T22:28:06Z v_m_v quit (Remote host closed the connection) 2020-04-21T22:31:06Z civodul quit (Read error: Connection reset by peer) 2020-04-21T22:34:38Z ngz joined #scheme 2020-04-21T22:38:33Z seepel joined #scheme 2020-04-21T22:44:08Z seepel quit (Ping timeout: 265 seconds) 2020-04-21T23:08:13Z v_m_v joined #scheme 2020-04-21T23:12:14Z v_m_v quit (Ping timeout: 240 seconds) 2020-04-21T23:36:40Z hugh_marera quit (Quit: hugh_marera) 2020-04-21T23:36:54Z hugh_marera joined #scheme 2020-04-21T23:37:12Z hugh_marera quit (Client Quit) 2020-04-21T23:40:06Z keep_learning joined #scheme 2020-04-22T00:00:28Z xelxebar quit (Remote host closed the connection) 2020-04-22T00:00:30Z edgar-rft quit (Ping timeout: 256 seconds) 2020-04-22T00:00:51Z xelxebar joined #scheme 2020-04-22T00:08:23Z ngz quit (Ping timeout: 272 seconds) 2020-04-22T00:12:11Z edgar-rft joined #scheme 2020-04-22T00:16:25Z tryte quit (Quit: _) 2020-04-22T00:16:40Z tryte joined #scheme 2020-04-22T00:20:25Z SGASAU quit (Remote host closed the connection) 2020-04-22T00:21:05Z SGASAU joined #scheme 2020-04-22T00:29:41Z SGASAU` joined #scheme 2020-04-22T00:29:59Z edgar-rft quit (Ping timeout: 265 seconds) 2020-04-22T00:30:16Z SGASAU quit (Ping timeout: 258 seconds) 2020-04-22T00:34:36Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-22T00:34:39Z klovett quit (Ping timeout: 250 seconds) 2020-04-22T00:35:32Z SGASAU joined #scheme 2020-04-22T00:37:46Z edgar-rft joined #scheme 2020-04-22T00:47:54Z seepel joined #scheme 2020-04-22T00:52:28Z seepel quit (Ping timeout: 256 seconds) 2020-04-22T00:56:01Z klovett joined #scheme 2020-04-22T01:04:45Z madage quit (Remote host closed the connection) 2020-04-22T01:05:03Z madage joined #scheme 2020-04-22T01:10:38Z SGASAU quit (Remote host closed the connection) 2020-04-22T01:11:23Z SGASAU joined #scheme 2020-04-22T01:12:46Z srandon111: artanis 2020-04-22T01:43:11Z torbo joined #scheme 2020-04-22T01:53:23Z siraben: zaifir: Hehe, the semantics works so well as an interpreter they must have implemented it in ML/Haskell at some point! 2020-04-22T01:54:02Z siraben: If anyone wants to see my translation to Haskell: https://github.com/siraben/r5rs-denot 2020-04-22T01:55:58Z siraben: Unfortunately trying to untangle the store-passing continuation-passing interpreter (so that one can have monadic evaluator) has proven somewhat difficult. 2020-04-22T01:56:05Z siraben: s/have/have a 2020-04-22T01:57:09Z Riastradh: siraben: Possibly of interest: https://mumble.net/~campbell/tmp/Scheme.hs 2020-04-22T01:58:06Z siraben: Riastradh: Ooh, interesting! Will check it out. 2020-04-22T02:03:55Z turtleman quit (Ping timeout: 260 seconds) 2020-04-22T02:04:27Z jeanbeurre joined #scheme 2020-04-22T02:08:51Z euvhwh quit (Quit: Leaving) 2020-04-22T02:12:24Z seepel joined #scheme 2020-04-22T02:25:09Z choas quit (Ping timeout: 250 seconds) 2020-04-22T02:27:50Z seepel quit (Ping timeout: 256 seconds) 2020-04-22T02:41:59Z choas joined #scheme 2020-04-22T02:50:07Z raingloom quit (Ping timeout: 260 seconds) 2020-04-22T03:08:37Z drakonis quit (Quit: WeeChat 2.8) 2020-04-22T03:11:39Z Fare quit (Ping timeout: 258 seconds) 2020-04-22T03:14:22Z pilne quit (Quit: Life without danger is a waste of oxygen) 2020-04-22T03:41:41Z lockywolf_ joined #scheme 2020-04-22T03:45:39Z jeanbeurre quit (Ping timeout: 260 seconds) 2020-04-22T03:57:20Z lockywolf__ joined #scheme 2020-04-22T04:00:07Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-22T04:20:02Z daviid joined #scheme 2020-04-22T04:21:01Z xlei quit (Ping timeout: 256 seconds) 2020-04-22T04:23:33Z xlei joined #scheme 2020-04-22T04:43:34Z skapata quit (Remote host closed the connection) 2020-04-22T05:00:40Z _apg quit (Ping timeout: 256 seconds) 2020-04-22T05:07:43Z lockywolf_ joined #scheme 2020-04-22T05:08:14Z luni joined #scheme 2020-04-22T05:10:53Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-22T05:17:14Z lockywolf_ quit (Quit: Leaving) 2020-04-22T05:27:41Z lritter joined #scheme 2020-04-22T05:35:34Z jobol joined #scheme 2020-04-22T05:37:57Z gravicappa joined #scheme 2020-04-22T05:39:46Z brendyyn joined #scheme 2020-04-22T05:45:00Z luni quit (Quit: Connection closed) 2020-04-22T05:57:46Z ecraven: ;) 2020-04-22T06:00:06Z nly quit (Ping timeout: 265 seconds) 2020-04-22T06:16:39Z torbo quit (Remote host closed the connection) 2020-04-22T06:35:40Z aeth quit (Read error: Connection reset by peer) 2020-04-22T06:36:50Z aeth joined #scheme 2020-04-22T06:38:05Z skapata joined #scheme 2020-04-22T07:09:28Z v_m_v joined #scheme 2020-04-22T07:29:30Z tdammers: ContT StateT World m a -- or something like that? 2020-04-22T07:35:59Z v_m_v quit (Remote host closed the connection) 2020-04-22T08:05:52Z v_m_v joined #scheme 2020-04-22T08:29:23Z webshinra quit (Remote host closed the connection) 2020-04-22T08:41:04Z webshinra joined #scheme 2020-04-22T08:42:00Z SGASAU quit (Remote host closed the connection) 2020-04-22T08:42:45Z SGASAU joined #scheme 2020-04-22T08:45:39Z zig: hello #scheme 2020-04-22T08:52:33Z v_m_v quit (Remote host closed the connection) 2020-04-22T08:52:47Z SGASAU quit (Remote host closed the connection) 2020-04-22T08:53:41Z SGASAU joined #scheme 2020-04-22T08:54:49Z Riastradh quit (Ping timeout: 264 seconds) 2020-04-22T08:56:18Z wraithoftheropes joined #scheme 2020-04-22T09:04:34Z v_m_v joined #scheme 2020-04-22T09:15:14Z zig: SGASAU: they are many crows (or sort of crows) in my area, it seems more each year. No gifts as of yet. 2020-04-22T09:19:18Z wasamasa: rudybot: gifts for the crow god 2020-04-22T09:19:29Z rudybot: wasamasa: ie: someone is caught with doing it with someone above the 14yo line, both parties say it's consensual, cops/lawyers find out/prove the "minor" accepted due to incentives like money/gifts then it's illegal because the 14yo age is deemed invalid and said minor is still under 18/21 (do i make myself clear?) 2020-04-22T09:19:48Z wasamasa: cursed 2020-04-22T09:25:05Z C-Keen: wtf? 2020-04-22T09:27:43Z wasamasa: I've contacted its owner 2020-04-22T09:29:09Z C-Keen: rudybot: have you been talking to Tai again? 2020-04-22T09:29:18Z rudybot: C-Keen: ,order-drink mai-tai-no-salt \#emacs 2020-04-22T09:30:59Z siraben: tdammers: I'll try that. I think I got myself into trouble trying to mix Cont and Except... 2020-04-22T09:31:52Z siraben: I guess to exit in invalid circumstances, I'll just return an Answer value with some sort of indication that the computation failed. 2020-04-22T09:35:51Z wraithoftheropes left #scheme 2020-04-22T09:44:05Z skapata quit (Remote host closed the connection) 2020-04-22T09:45:26Z v_m_v quit (Remote host closed the connection) 2020-04-22T10:02:34Z v_m_v joined #scheme 2020-04-22T10:07:05Z v_m_v quit (Ping timeout: 265 seconds) 2020-04-22T10:12:40Z tdammers: siraben: stacking order may matter 2020-04-22T10:13:07Z siraben: Yeah, it's likely State over Cont in this case, since we want the store to be preseved. 2020-04-22T10:13:19Z siraben: Also, I was considering having Reader as well, since functions need an environment to run. 2020-04-22T10:13:24Z siraben: State over Cont over Reader. 2020-04-22T10:14:58Z tdammers: personally, I would probably capture the state and reader parts in a single type var with constraints MonadReader e and MonadState s 2020-04-22T10:15:20Z tdammers: and possibly implement exceptions in terms of Cont 2020-04-22T10:15:31Z siraben: Hm. Makes sense. 2020-04-22T10:15:50Z siraben: So something like Scheme e s a? Reader e, state s, answer a 2020-04-22T10:16:11Z tdammers: then you're left with just (MonadReader SchemeEnv m, MonadState SchemeState m) => ContT m a 2020-04-22T10:16:25Z tdammers: the s and e are determined by your interpreter 2020-04-22T10:16:27Z siraben: I see. I'll try that 2020-04-22T10:17:12Z tdammers: the user only provides a type m of their choice that has to meet MonadReader SchemeEnv (i.e., it can provide an environment for your interpreter) and MonadState SchemeState (i.e., it can manage the interpreter state) 2020-04-22T10:17:34Z tdammers: then again, you may prefer handling the State part yourself, that depends 2020-04-22T10:18:13Z siraben: One tricky bit that occured also was storing procedures in the store, procedures have type (L, [E] -> K -> C), where L is the location and the second part is the monadic action 2020-04-22T10:18:31Z siraben: So in this case, the second component has (MonadReader SchemeEnv m, MonadState SchemeState m) => ContT m a 2020-04-22T10:18:51Z siraben: Haskell doesn't like those constraints on data 2020-04-22T10:22:51Z siraben: Perhaps, it would be better to rewrite the interpreter completely without trying to stick to exactly how the formal semantics would have it. 2020-04-22T10:24:28Z zig: wasamasa: tx! 2020-04-22T10:27:33Z TCZ joined #scheme 2020-04-22T10:31:20Z Ekho quit (Quit: An alternate universe was just created where I didn't leave. But here, I left you. I'm sorry.) 2020-04-22T10:46:25Z uplime quit (Remote host closed the connection) 2020-04-22T10:46:38Z uplime joined #scheme 2020-04-22T10:46:57Z Ekho joined #scheme 2020-04-22T10:50:19Z uplime- joined #scheme 2020-04-22T10:52:00Z uplime quit (Read error: Connection reset by peer) 2020-04-22T10:59:13Z zig: google is very useless to search for scheme libraries... 2020-04-22T11:01:58Z SGASAU quit (Remote host closed the connection) 2020-04-22T11:03:00Z SGASAU joined #scheme 2020-04-22T11:16:25Z SGASAU quit (Ping timeout: 264 seconds) 2020-04-22T11:17:43Z raingloom joined #scheme 2020-04-22T11:18:28Z SGASAU` joined #scheme 2020-04-22T11:21:03Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-22T11:23:48Z SGASAU joined #scheme 2020-04-22T11:25:50Z SGASAU` joined #scheme 2020-04-22T11:28:34Z SGASAU quit (Ping timeout: 240 seconds) 2020-04-22T11:30:45Z tdammers: siraben: Haskell doesn't like constraints on data in general; put those constraints on functions instead 2020-04-22T11:31:25Z tdammers: see, for an example, Data.Map - Map needs Ord on the keys for most of its operations, but the constraint is always declared on the operation, not on the data type 2020-04-22T11:31:44Z siraben: So currently, type F = (L, [E] -> K -> C), and one of the data clauses for expressed values is data E = ... | Ef F 2020-04-22T11:31:49Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-22T11:31:58Z siraben: Ah, hm. 2020-04-22T11:32:12Z tdammers: ah, oh, hmm 2020-04-22T11:32:15Z siraben: Somehow I need to make it so that the function value in the store has no constraints. 2020-04-22T11:32:28Z SGASAU joined #scheme 2020-04-22T11:32:42Z tdammers: you probably want one or more out of GADTs, ExistentialQuantification, and RankNTypes 2020-04-22T11:32:46Z siraben: One approach I tried was keep [E] -> K -> C, then convert to/from the monadic values as needed. 2020-04-22T11:33:07Z tdammers: you could do that, but then you lose those MonadSomething generalizations 2020-04-22T11:34:08Z siraben: I see 2020-04-22T11:36:39Z siraben: tdammers: There would be a lot to change, too, the semantics has a function called twoarg which turns a function in the metalanguage (Haskell) into a Scheme procedure. https://github.com/siraben/r5rs-denot/blob/32417193dd4c32ee46eb8ccf2c5fd0b3dbe8bd69/src/SchemeEval.hs#L160 2020-04-22T11:37:00Z tdammers: yeah, that's probably the trickiest part 2020-04-22T11:37:09Z siraben: The RHS would not be easily written as ฮถ ฮต1 ฮต2 ฮบ, too 2020-04-22T11:37:31Z tdammers: frankly, I haven't quite decided how I want to solve that part 2020-04-22T11:37:33Z siraben: The types essentially explode, hm. 2020-04-22T11:37:54Z tdammers: what I tentatively did was define a set of scheme primops and defunctionalize those 2020-04-22T11:38:04Z siraben: Are you writing a Scheme interpreter as well? 2020-04-22T11:38:09Z siraben: I could try backing down and write an smaller interpreter with the store and monadic evaluation. 2020-04-22T11:38:11Z tdammers: toying with one, yes 2020-04-22T11:38:20Z siraben: Ah, what language? 2020-04-22T11:38:25Z tdammers: haskell, obv 2020-04-22T11:38:36Z siraben: Haha, is it public? 2020-04-22T11:39:07Z tdammers: "hell no" 2020-04-22T11:39:27Z siraben: I see. Well, it's good that it makes two of us. 2020-04-22T11:39:31Z tdammers: no, it's really just a toy project somewhere deep down my priority list 2020-04-22T11:40:04Z siraben: I was hoping that a sort of easy rewrite into a monadic style would allow for adding IO, so I could add ports and so on 2020-04-22T11:40:07Z tdammers: the long-term dream is to have a reasonable, small, sandboxable scripting language for all sorts of applications 2020-04-22T11:41:08Z siraben: Ah, I think I had a similar idea to your defunctionalization, so essentially defer evaluation until the end. 2020-04-22T11:41:16Z tdammers: right, so the way I intend to do that would be to have some sort of MonadSchemePrimop typeclass, with execPrimop :: Primop -> Value -> SchemeT m Value or something like that 2020-04-22T11:41:28Z siraben: Then adding new effects is easy because all you need to do is add new priomops. 2020-04-22T11:41:29Z siraben: Right 2020-04-22T11:41:36Z siraben: class MonadSchemePrimop where 2020-04-22T11:41:36Z siraben: lookup :: ... 2020-04-22T11:41:43Z tdammers: this would allow expressing an entire scheme program in an interpretation-agnostic way 2020-04-22T11:41:43Z siraben: assign, update, etc. 2020-04-22T11:41:51Z siraben: I see. 2020-04-22T11:41:55Z siraben: At that point, it becomes essentially a compiler! 2020-04-22T11:42:02Z tdammers: kind of, yes 2020-04-22T11:42:24Z tdammers: or rather, you could fit both a compiler and an interpreter into the same set of typeclasses 2020-04-22T11:42:25Z siraben cues Graham Hutton's work on calculating compilers 2020-04-22T11:42:33Z siraben: Right. 2020-04-22T11:42:52Z tdammers: and when you get to macros and optimizations, this is probably going to be insanely useful 2020-04-22T11:43:00Z siraben: tdammers: You might be interested https://siraben.github.io/2020/02/26/translating_cl.html 2020-04-22T11:43:16Z siraben: The FracComp typeclass is sort of the primops as you described 2020-04-22T11:43:31Z tdammers: will definitely read 2020-04-22T11:43:35Z siraben: Then also the typeclass constraints are put into the typeclass declaration, too, so no problems with data 2020-04-22T11:43:52Z turtleman joined #scheme 2020-04-22T11:44:17Z tdammers: something I'm currently struggling with a bit is getting the nuances of scoping right 2020-04-22T11:44:32Z siraben: In Scheme? 2020-04-22T11:44:53Z siraben: Extending the environment is done by https://github.com/siraben/r5rs-denot/blob/32417193dd4c32ee46eb8ccf2c5fd0b3dbe8bd69/src/SchemeEval.hs#L89 2020-04-22T11:45:15Z tdammers: let vs. letrec vs let* vs. letrec& 2020-04-22T11:45:24Z tdammers: s/&/* 2020-04-22T11:45:54Z siraben: Ah, heh I cheated and just desugared to lambdas 2020-04-22T11:46:05Z tdammers: maybe I should do that then 2020-04-22T11:46:20Z siraben: https://github.com/siraben/r5rs-denot/blob/32417193dd4c32ee46eb8ccf2c5fd0b3dbe8bd69/src/SchemeParser.hs#L215 2020-04-22T11:46:22Z siraben: I'm looking forward to implementing unhygienic macros this summer, using the mark/antimark algorithm 2020-04-22T11:46:54Z siraben: Per this paper; https://legacy.cs.indiana.edu/~dyb/pubs/LaSC-5-4-pp295-326.pdf 2020-04-22T11:47:07Z siraben: Then I'll drop the ad-hoc let and letrec expanders 2020-04-22T11:48:08Z siraben: Funnily enough, R5RS says that define can be implemented in terms of set!, as long as the identifer is let-bound (or equivalent), so I pass through the entire program and make all the lets at the top, then define becomes set! 2020-04-22T11:49:22Z siraben: Some Scheme implementations just bite the bullet and put everything into IO https://hackage.haskell.org/package/husk-scheme 2020-04-22T11:55:03Z SGASAU quit (Remote host closed the connection) 2020-04-22T11:55:51Z SGASAU joined #scheme 2020-04-22T12:00:48Z tdammers: yeah, but I want mine to be fully sandboxable 2020-04-22T12:01:07Z tdammers: i.e., the host determines what the guest can and cannot do, via a type-based whitelist 2020-04-22T12:02:41Z siraben: Have you considered using an effect library, i.e. polysemy? 2020-04-22T12:03:27Z SGASAU quit (Remote host closed the connection) 2020-04-22T12:04:08Z SGASAU joined #scheme 2020-04-22T12:04:15Z tdammers: not really, no 2020-04-22T12:05:05Z siraben: I tried using effect libraries, got some progress but the whole no constraints on datatypes ordeal made me give up the whole thing 2020-04-22T12:05:24Z tdammers: constraints on data types is the wrong mindset 2020-04-22T12:05:31Z tdammers: you want constraints on functions 2020-04-22T12:05:39Z siraben: Right right 2020-04-22T12:05:48Z siraben: So a full rewrite may be needed. 2020-04-22T12:06:28Z brendyyn quit (Ping timeout: 265 seconds) 2020-04-22T12:09:36Z uplime- quit (Read error: Connection reset by peer) 2020-04-22T12:09:48Z uplime joined #scheme 2020-04-22T12:18:46Z SGASAU quit (Remote host closed the connection) 2020-04-22T12:19:36Z SGASAU joined #scheme 2020-04-22T12:20:00Z q3d joined #scheme 2020-04-22T12:23:14Z SGASAU quit (Remote host closed the connection) 2020-04-22T12:24:04Z SGASAU joined #scheme 2020-04-22T12:37:39Z SGASAU quit (Remote host closed the connection) 2020-04-22T12:38:35Z SGASAU joined #scheme 2020-04-22T12:52:11Z srandon111: guys is there a general way to write C bindings for any scheme? or each scheme has its own way? 2020-04-22T12:54:21Z turtleman quit (Ping timeout: 250 seconds) 2020-04-22T13:03:05Z q3d quit (Remote host closed the connection) 2020-04-22T13:06:17Z zig: each scheme has its own way, and there is https://github.com/ktakashi/r6rs-pffi 2020-04-22T13:06:38Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-22T13:09:09Z zig: srandon111: ^ 2020-04-22T13:26:50Z TCZ quit (Quit: Leaving) 2020-04-22T13:28:19Z pilne joined #scheme 2020-04-22T13:28:34Z civodul joined #scheme 2020-04-22T13:31:01Z v_m_v_ joined #scheme 2020-04-22T13:37:12Z SGASAU quit (Remote host closed the connection) 2020-04-22T13:37:57Z SGASAU joined #scheme 2020-04-22T13:46:43Z gravicappa quit (Ping timeout: 260 seconds) 2020-04-22T13:49:51Z ahungry joined #scheme 2020-04-22T13:51:38Z TCZ joined #scheme 2020-04-22T13:55:18Z gravicappa joined #scheme 2020-04-22T13:56:40Z v_m_v_ quit (Ping timeout: 265 seconds) 2020-04-22T14:23:40Z wraithoftheropes joined #scheme 2020-04-22T14:28:54Z TCZ quit (Quit: Leaving) 2020-04-22T14:29:11Z TCZ joined #scheme 2020-04-22T14:29:59Z TCZ quit (Remote host closed the connection) 2020-04-22T14:30:19Z TCZ joined #scheme 2020-04-22T14:46:04Z lockywolf joined #scheme 2020-04-22T14:46:23Z madage quit (Ping timeout: 240 seconds) 2020-04-22T14:46:43Z tryte quit (Ping timeout: 240 seconds) 2020-04-22T14:46:43Z xelxebar quit (Ping timeout: 240 seconds) 2020-04-22T14:46:43Z corpix quit (Ping timeout: 240 seconds) 2020-04-22T14:46:44Z cantstanya quit (Ping timeout: 240 seconds) 2020-04-22T14:47:00Z lockywolf quit (Max SendQ exceeded) 2020-04-22T14:47:03Z zooey_ quit (Ping timeout: 240 seconds) 2020-04-22T14:47:36Z drakonis joined #scheme 2020-04-22T14:47:39Z lockywolf joined #scheme 2020-04-22T14:48:34Z lockywolf quit (Max SendQ exceeded) 2020-04-22T14:49:17Z lockywolf joined #scheme 2020-04-22T14:50:10Z lockywolf quit (Remote host closed the connection) 2020-04-22T14:50:38Z lockywolf joined #scheme 2020-04-22T14:51:33Z lockywolf quit (Max SendQ exceeded) 2020-04-22T14:52:02Z lockywolf joined #scheme 2020-04-22T14:53:09Z lockywolf quit (Remote host closed the connection) 2020-04-22T14:53:36Z lockywolf joined #scheme 2020-04-22T14:54:30Z lockywolf quit (Max SendQ exceeded) 2020-04-22T14:59:28Z corpix joined #scheme 2020-04-22T14:59:37Z xelxebar joined #scheme 2020-04-22T15:00:06Z tryte joined #scheme 2020-04-22T15:00:07Z madage joined #scheme 2020-04-22T15:00:22Z zooey joined #scheme 2020-04-22T15:04:13Z lucasb joined #scheme 2020-04-22T15:04:49Z cantstanya joined #scheme 2020-04-22T15:05:34Z raingloom quit (Ping timeout: 240 seconds) 2020-04-22T15:18:04Z TCZ quit (Quit: Leaving) 2020-04-22T15:18:26Z TCZ joined #scheme 2020-04-22T15:22:55Z hugh_marera joined #scheme 2020-04-22T15:24:41Z raingloom joined #scheme 2020-04-22T15:30:36Z TCZ quit (Quit: Leaving) 2020-04-22T15:30:46Z turtleman joined #scheme 2020-04-22T15:33:28Z zig: seems like github got into NLP or something, at last they give me relevant repo reco 2020-04-22T15:34:15Z zig: (no scheme tho) 2020-04-22T15:37:34Z turtleman quit (Ping timeout: 240 seconds) 2020-04-22T15:38:16Z raingloom quit (Remote host closed the connection) 2020-04-22T15:39:08Z lritter quit (Ping timeout: 265 seconds) 2020-04-22T15:41:43Z wraithoftheropes left #scheme 2020-04-22T15:43:02Z SGASAU quit (Remote host closed the connection) 2020-04-22T15:51:57Z Riastradh joined #scheme 2020-04-22T16:11:58Z X-Scale` joined #scheme 2020-04-22T16:14:02Z X-Scale quit (Ping timeout: 258 seconds) 2020-04-22T16:14:03Z X-Scale` is now known as X-Scale 2020-04-22T16:40:14Z SGASAU joined #scheme 2020-04-22T16:43:09Z hugh_marera quit (Read error: Connection reset by peer) 2020-04-22T16:53:20Z nly joined #scheme 2020-04-22T17:22:18Z _apg joined #scheme 2020-04-22T17:24:01Z xlei quit (Ping timeout: 265 seconds) 2020-04-22T17:25:28Z xlei joined #scheme 2020-04-22T17:28:33Z srandon111: guys i am at the lecture about the henderson - escher example... (i think it's lecture 5), and i can't understand what the professor mean when he says that by building hiis data as a function (when talking about piictures) he has all the procedures for free and can create simply an embedded language... i didn't understand how implementing pictures as functions allows this... can somebody explain? 2020-04-22T17:29:49Z wasamasa: only if you promise to stop cross-posting 2020-04-22T17:31:12Z aeth: hah, it's in 3 channels in a row 2020-04-22T17:31:39Z wasamasa: #chicken, #scheme and? 2020-04-22T17:32:31Z wasamasa: let me guess, #racket 2020-04-22T17:33:05Z aeth: 4 channels for me, then, because #racket is way over there for me -----> 2020-04-22T17:33:11Z srandon111: wasamasa, ok sorry 2020-04-22T17:33:13Z aeth: #lisp #clschool #racket and here 2020-04-22T17:33:13Z aeth: anyway 2020-04-22T17:33:16Z mario-goulart: #chez too. :-) 2020-04-22T17:33:16Z wasamasa: wow 2020-04-22T17:33:19Z aeth: this is the place where the question belongs the most 2020-04-22T17:33:26Z aeth: so I find it strange that this is where the complaining is :-) 2020-04-22T17:33:32Z wasamasa: six channels 2020-04-22T17:33:47Z wasamasa: seriously, stop, nobody can keep track of answers on that many channels 2020-04-22T17:33:49Z srandon111: aeth, wasamasa sorry guys i saw the channels quite dead so i hoped to get a reply... didn't think it annoyed you so much... sorry for that 2020-04-22T17:34:04Z gwatt: also posted in #chez 2020-04-22T17:34:07Z wasamasa: it doesn't help many people are on several on these 2020-04-22T17:34:21Z srandon111: wasamasa, don't worry on many of these channels there aren't so many replies / traffic 2020-04-22T17:34:51Z wasamasa: you do realize that this kind of behavior gets you on the /ignore list? 2020-04-22T17:35:05Z wasamasa: have some patience 2020-04-22T17:35:15Z wasamasa: it's not the first time either 2020-04-22T17:35:40Z aeth: For future reference, try to limit yourself to 2-3 channels. 2020-04-22T17:35:58Z wasamasa: and wait like an hour between each 2020-04-22T17:36:16Z srandon111: aeth, ok thanks for the suggestion! 2020-04-22T17:36:21Z aeth: no, 2 at the same time is fine, just word them very slightly differently so wasamasa doesn't get annoyed :-) 2020-04-22T17:36:31Z srandon111: ahahah okok aeth :D 2020-04-22T17:37:03Z aeth: like, #lisp and #scheme are both justified because it's a Scheme book but you want to do the exercises in CL 2020-04-22T17:37:12Z aeth: but I doubt #chez would help 2020-04-22T17:37:49Z aeth: or, rather, anyone who could help there is also here 2020-04-22T17:38:13Z wasamasa: I kind of have my doubts srandon111 plans to do these in CL, let alone realized #lisp is not about scheme 2020-04-22T17:38:28Z aeth: there's ##lisp for that as well 2020-04-22T17:38:33Z SGASAU quit (Read error: Connection reset by peer) 2020-04-22T17:38:39Z aeth: for when you just want to talk about Lisps in general 2020-04-22T17:38:45Z aeth: It's... a quiet channel, though. 2020-04-22T17:41:29Z srandon111: ok thanks for the suggestion aeth wasamasa 2020-04-22T17:41:35Z srandon111: wasamasa, don't be mistrusting 2020-04-22T17:42:16Z SGASAU joined #scheme 2020-04-22T17:46:04Z SGASAU: srandon111: search the web for "how to ask questions the smart way." 2020-04-22T17:46:04Z SGASAU: srandon111: I don't like to point to that, but your case just prompts for this. 2020-04-22T17:47:03Z srandon111: ok SGASAU thanks for the helP! 2020-04-22T17:51:56Z SGASAU: For the reference, you've got an advice on #lisp that suggests that you really want to read what is written in "how to ask questions the smart way", do that very carefully and understand what is written and why. 2020-04-22T17:53:53Z SGASAU: It's not just a number of Scheme channels. You're going to end up being ignored by a lot more people, if you continue. 2020-04-22T17:58:26Z SGASAU: srandon111: and the last thing. 2020-04-22T17:58:55Z SGASAU: Now really useful one and frequently (as it turns out) not taught one. 2020-04-22T17:59:43Z SGASAU: When I attended university, a lot of our docents and professors were explaining us that higher education differs from elementary in one important aspect. 2020-04-22T18:00:10Z SGASAU: Higher education assumes that besides understanding what you're told explicitly 2020-04-22T18:00:27Z SGASAU: you are to learn using other available materials. 2020-04-22T18:01:01Z wasamasa: TIL both SICP and PWK are higher education 2020-04-22T18:01:15Z SGASAU: Merely visiting lectures (or watching them on video recording) is not enough. 2020-04-22T18:01:28Z SGASAU: Especially when you have questions remaining. 2020-04-22T18:01:49Z SGASAU: You are to search for side channels of acquiring necessary information. 2020-04-22T18:02:09Z SGASAU: _Yourself._ 2020-04-22T18:03:12Z SGASAU: The primary sign of that you have done all you could is the way you pose your questions to your professor or docent. 2020-04-22T18:04:15Z SGASAU: "You're saying so and so, but others say that. I consider these contradictory because so and so. What is going on?" 2020-04-22T18:04:52Z SGASAU: It is different from "I have watched a lecture of some professor and do not understand what he means." 2020-04-22T18:05:08Z zaifir: ESR's "How To Ask Questions" is massive, monumentally arrogant and condescending, IMO. It can be summed up as "Don't bother asking, we won't help." 2020-04-22T18:05:16Z SGASAU: E.g. I have absolutely no clue which professor you're talking about. 2020-04-22T18:05:26Z wasamasa: zaifir: I prefer https://mikeash.com/getting_answers.html 2020-04-22T18:06:12Z SGASAU: zaifir: as much as it is arrogant, it gives some explanation why some people just do not even bother answering. 2020-04-22T18:06:16Z zaifir: SGASAU: Please don't lecture people for asking questions. 2020-04-22T18:06:41Z SGASAU: zaifir: I do not lecture people, I'm telling that one particular person. 2020-04-22T18:07:03Z SGASAU: Unfortunately, I have to do this on public channel so that others involved know the fact. 2020-04-22T18:08:26Z SGASAU: zaifir: if you disagree on ethics, we can discuss it too. :) 2020-04-22T18:08:32Z Riastradh: SGASAU: What you're doing comes off as lecturing, whether you mean it that way or not. 2020-04-22T18:09:38Z zaifir: SGASAU: I can recall asking lots of questions in an unclear way, but people on IRC have generally born with me, and that's been extremely helpfule. I'd like it if people could ask questions freely here. 2020-04-22T18:09:59Z SGASAU: Riastradh: I'm not going to discuss this with a member of essentially nazist community. 2020-04-22T18:10:06Z zaifir: *borne 2020-04-22T18:10:07Z Riastradh: okbye 2020-04-22T18:10:10Z ChanServ has set mode +o Riastradh 2020-04-22T18:10:17Z SGASAU [~riastradh@netbsd/developer/riastradh] has been kicked from #scheme by Riastradh (SGASAU) 2020-04-22T18:10:19Z Riastradh has set mode -o Riastradh 2020-04-22T18:10:24Z dioxirane joined #scheme 2020-04-22T18:10:30Z dioxirane is now known as luni 2020-04-22T18:17:32Z friscosam: 2020-04-22T18:20:40Z Riastradh: (there's a private back story behind that exchange which apparently ASau wanted to relitigate) 2020-04-22T18:21:22Z SGASAU joined #scheme 2020-04-22T18:24:38Z SGASAU` joined #scheme 2020-04-22T18:24:48Z SGASAU` quit (Remote host closed the connection) 2020-04-22T18:25:06Z friscosam: +1 2020-04-22T18:25:26Z SGASAU` joined #scheme 2020-04-22T18:25:28Z SGASAU` quit (Remote host closed the connection) 2020-04-22T18:25:54Z SGASAU quit (Ping timeout: 256 seconds) 2020-04-22T18:27:05Z SGASAU joined #scheme 2020-04-22T18:40:56Z SGASAU quit (Remote host closed the connection) 2020-04-22T18:41:21Z SGASAU` joined #scheme 2020-04-22T18:41:52Z SGASAU` quit (Remote host closed the connection) 2020-04-22T18:42:33Z SGASAU joined #scheme 2020-04-22T18:47:01Z mdhughes: Normally, I go "what the fuck is the op I'm ignoring doing", but uh, well. This time correctly done. 2020-04-22T18:48:21Z mdhughes: Altho I'm a big fan of ESR's howto; the dude's weird, but don't take that as a strike against his work. 2020-04-22T18:52:44Z gravicappa quit (Ping timeout: 258 seconds) 2020-04-22T19:04:27Z drakonis: mdhughes: what work? 2020-04-22T19:05:20Z mdhughes: He's written a lot of useful essays, maintained the Jargon file for the last 30 years, some useful code. 2020-04-22T19:05:34Z fradet quit (Ping timeout: 256 seconds) 2020-04-22T19:06:10Z drakonis: to be fair, the jargon file as he maintained was terrible 2020-04-22T19:06:33Z drakonis: and useful code is honestly kinda questionable 2020-04-22T19:06:52Z drakonis: the only noteworthy essay was the cathedral and the bazaar 2020-04-22T19:07:12Z drakonis: and then he went to become persona non grata across the board 2020-04-22T19:07:13Z wasamasa: go read the original jargon file 2020-04-22T19:07:33Z wasamasa: it's not an eye sore and actually educational 2020-04-22T19:08:12Z mdhughes: Terminology's changed since the VAX users who mostly wrote the original. 2020-04-22T19:08:21Z Riastradh: heh `VAX users' 2020-04-22T19:08:22Z wasamasa: the kind of maintainership that doesn't even fix encoding errors is a joke 2020-04-22T19:08:26Z drakonis: i'm pretty sure vax users was after it 2020-04-22T19:08:38Z wasamasa: the original thing documents MIT culture and lisp things 2020-04-22T19:08:50Z drakonis: vax users was under esr's rule 2020-04-22T19:08:53Z mdhughes: Currently he's on, what, reposurgeon? That's useful. 2020-04-22T19:08:58Z drakonis: lol reposurgeon isnt useful 2020-04-22T19:09:13Z Riastradh: PDP-6 and PDP-10 more like, but don't let facts and experience get in the way of mdhughes' strongly voiced opinions. 2020-04-22T19:09:13Z wasamasa: no reposurgeon, not emacs on git 2020-04-22T19:09:45Z drakonis: he went and shopped for people to buy him free ram to move gcc off svn 2020-04-22T19:09:49Z drakonis: and rewrote it in go 2020-04-22T19:10:00Z wasamasa: the core devs hate it, but at least the rest of the world can properly deal with the repo now 2020-04-22T19:10:02Z drakonis: the quality of the code is specially questionable 2020-04-22T19:10:21Z Riastradh: Anyway, let's try to stay away from topics unfit for polite conversation. 2020-04-22T19:10:23Z zig: apparantly the code before was questionable too 2020-04-22T19:12:07Z drakonis: yes 2020-04-22T19:12:40Z drakonis: well, i oughta reboot real quick 2020-04-22T19:13:24Z drakonis quit (Quit: WeeChat 2.8) 2020-04-22T19:27:13Z v_m_v_ joined #scheme 2020-04-22T19:44:28Z jobol quit (Remote host closed the connection) 2020-04-22T19:46:21Z drakonis joined #scheme 2020-04-22T19:51:12Z zaifir: Most of my favorite bits of the Hacker's Dictionary come from the Guy Steele version, but I do think ESR had the right idea in adding vocabulary from UNIX and Linux culture. 2020-04-22T19:52:04Z aeth: A general "here's how you should ask questions" guide doesn't really work, even for something as specific as Lisp-related channels on IRC. What's expected from different channels varies too much. e.g. #emacs is noisy and tolerates tons of off-topic. 2020-04-22T19:53:25Z zaifir: Indeed. Asking a question in an unfamiliar channel can be very intimidating as a result. 2020-04-22T19:53:35Z aeth: On the other hand, sufficient people complained about the same newbie questions over and over in #lisp that there's a more tolerant/patient #clschool for those things. 2020-04-22T19:54:18Z aeth: I don't think #scheme has ever gotten to that point, though I've noticed that the seasonal Scheme-related homework questions seem to have gone down in quantity over time. Either Scheme being used less, or IRC, or both. 2020-04-22T19:54:38Z aeth: I guess there's now Discord for all of the ultra-low-quality chat. :-p 2020-04-22T19:54:57Z mdhughes: I haven't dared look in the Scheme discord. 2020-04-22T19:55:33Z aeth: Oh, it can't possibly be good because Discord is not a good medium for serious communication, since it targets the gamer niche and doesn't have a good backlog search/exploration functionality. 2020-04-22T19:55:45Z aeth: Younger audience, too. 2020-04-22T19:56:14Z aeth: The only thing it has over IRC is that you can paste code blocks in instead of having to use a pastebin 2020-04-22T19:56:18Z zaifir: I wonder if there's a Scheme presence on Matrix. 2020-04-22T19:56:37Z aeth: Most, but not all, Matrix Lisp channels are just Freenode bridges 2020-04-22T19:57:16Z zaifir: Ah, that's not surprising. I know that Kooda wrote a Matrix client in Scheme, so there's at least one Schemer on there. 2020-04-22T19:58:05Z aeth: Speaking of good backlog search, grep is like magic on IRC logs if you have local IRC logs (non technical people can be amazed how quickly you can find obscure things) but... grep has ben broken on huge log files because all it needs is one invalid character and then it'll say "Binary file foo.log matches" instead of giving you the lines 2020-04-22T19:58:07Z fradet joined #scheme 2020-04-22T19:58:13Z mdhughes: I would expect a Slack might be OK. The Racket one's passable but slow, and they're not really equipped for my kind of compile/link/FFI problems. 2020-04-22T19:58:18Z zaifir: It still looks like an overcomplicated IRC to me, but I find it a more bearable future than Discord and Slack. 2020-04-22T19:58:20Z aeth: Fortunately, someone posted a solution to grepping logs on HN the other day: https://news.ycombinator.com/item?id=22932031 2020-04-22T19:58:25Z aeth: "If you use GNU grep on text files, use the -a (--text) option" 2020-04-22T19:58:37Z aeth: Apparently, it has been "broken" since 2014-09-16. 2020-04-22T19:59:02Z aeth: I've just been piping tail into grep to avoid this flaw. 2020-04-22T19:59:21Z zaifir: What is -a ? It's a GNU extension, it seems. 2020-04-22T19:59:34Z aeth: zaifir: Yes, a GNU extension to work around a GNU flaw. :-) 2020-04-22T19:59:39Z zaifir: aeth: Of course! 2020-04-22T20:00:42Z mdhughes: Yeah, the Mac/BSD grep/egrep works fine on binary crud. It doesn't even try to parse it. 2020-04-22T20:01:02Z zaifir: Right, GNU grep tries to detect binary files. 2020-04-22T20:01:16Z aeth: which used to be fine 2020-04-22T20:01:47Z aeth: But now it's not good because if someone pastes an invalid character into an IRC log, or a tiny part of your logfile gets partially corrupted (like your power went out)... well, now 95% of your file is "binary" 2020-04-22T20:02:18Z zaifir: It's like libmagic all over again... 2020-04-22T20:03:04Z aeth: What it does is (when (give-up? character) (set! this-is-now-and-forever-a-binary #t)) 2020-04-22T20:03:17Z aeth: So maybe it gives up on the last line, or maybe on the 10th, and now "Binary file foo.log matches" 2020-04-22T20:04:17Z zaifir: It seems like it would have been vastly simpler to treat everything as text (per POSIX) unless some mandatory --binary option were passed. 2020-04-22T20:04:19Z aeth: But, anyway, any serious chat has to compete with the power of using grep (or similar tools) on IRC logs... which most don't, which is why IRC is going to continue to be the place where serious chat communication happens. 2020-04-22T20:05:05Z hugh_marera joined #scheme 2020-04-22T20:05:35Z SGASAU: zaifir: that's one of multitude reasons to keep logs in some form that is more resistant to failures than "plain text". 2020-04-22T20:05:43Z aeth: I can even get the day that something happened as simply as adding in a search for "\(the query\)\|\(Day changed\)" and finding out what two days it's between 2020-04-22T20:05:53Z zaifir: aeth: IMO that's a symptom of a much deeper problem. "Serious chat" has to work with the tools that our OSs give us, in general. As Joe Armstrong said, "you can't compose modern apps". 2020-04-22T20:06:51Z aeth: zaifir: Worse than that, modern apps don't give you configurability. Apparently, Discord is configurable, but only through the language locale! I can't use 24-hour time, or ISO 8601 dates, because who would want that? 2020-04-22T20:07:05Z zaifir: Ouch. 2020-04-22T20:07:29Z aeth: I've almost certainly gotten some off-by-2 errors from Discord timestamps because I'm imperfect, and I always write everything down myself in 24-hour time. 2020-04-22T20:07:37Z aeth: Sure, I can get it right most of the time, but I'm human. 2020-04-22T20:08:36Z aeth: On the other hand, if an IRC client doesn't give me what I want, I can just read the RFCs and implement my own. 2020-04-22T20:08:42Z skapata joined #scheme 2020-04-22T20:09:06Z aeth: But, no, if a modern chat did that, then how will they insert ads 5 years later after they're done growing and need to monetize? 2020-04-22T20:10:24Z zaifir: It's not much better with standard-based protocols like Matrix. Unlike the average RFC, the spec is so massive that it's not something you could implement casually, like IRC. 2020-04-22T20:10:53Z aeth: Stuff like Discord always claim they'll find some novel way to monetize a $0 consumer-facing app, and they always fail, and they always eventually resort to ads. And those ads fail so they have to get more and more intrusive, until people leave for the next, magical, no-strings-attached $0 app with no ads. 2020-04-22T20:11:29Z aeth: Open protocols are the only way you can avoid this. Assuming that the commercial providers don't close it up again, like Google Talk and XMPP 2020-04-22T20:11:54Z zaifir: Are those no longer compatible? 2020-04-22T20:12:00Z mdhughes: Finally got Riot to load up so I can see Matrix again. Looks like there's just Chicken's gateway, Gambit, and a general "lisp". 2020-04-22T20:12:08Z luni quit (Quit: Connection closed) 2020-04-22T20:12:13Z aeth: zaifir: According to Wikipedia, Google Talk abandoned XMPP in 2013. I thought it was more recent. Time flies. I haven't used it since then. 2020-04-22T20:12:25Z zaifir: aeth: Right, I see that. 2020-04-22T20:12:42Z mdhughes: I liked gchat, but I also liked, uh, not wave but the other one they did. 2020-04-22T20:13:02Z aeth: They shut down Wave before I could even try it. 2020-04-22T20:13:05Z zaifir: "In May 2013, Google announced its plan to drop support for the open XMPP standard in favor of proprietary Google+ Hangouts." :-/ 2020-04-22T20:13:21Z mdhughes: But that was back when "Don't be evil" was in their charter, instead of "Immanentize the Eschaton". 2020-04-22T20:13:31Z zaifir: mdhughes: My thought exactly. 2020-04-22T20:15:04Z zaifir: Reading the early history of Google Talk, I'm thinking "wow, remember that time when Google was doing cool stuff that used open protocols?". 2020-04-22T20:15:12Z aeth: I don't know what the next big chat protocol is, but I know that it needs to use DSSSL for styling. :-p 2020-04-22T20:15:15Z aeth: https://en.wikipedia.org/wiki/Document_Style_Semantics_and_Specification_Language 2020-04-22T20:16:27Z zaifir: DSSSL is really cool. 2020-04-22T20:16:55Z drakonis quit (Quit: WeeChat 2.8) 2020-04-22T20:16:57Z aeth: It's the first place where I encountered the foo: keyword syntax, whihc I guess is a bit more intuitive for outsiders. 2020-04-22T20:17:03Z aeth: s/whihc/which/ 2020-04-22T20:17:32Z hugh_marera quit (Ping timeout: 256 seconds) 2020-04-22T20:17:37Z aeth: I think most are CL-style :foo or the slight #:foo variant, although foo: is also pretty common by jcowan's survey 2020-04-22T20:18:51Z Riastradh: ...DSSSL: JavaScript for SGML... 2020-04-22T20:20:07Z aeth: more CSS's role than JS afaik 2020-04-22T20:20:57Z drakonis joined #scheme 2020-04-22T20:21:20Z v_m_v_ quit (Remote host closed the connection) 2020-04-22T20:21:31Z SGASAU quit (Ping timeout: 260 seconds) 2020-04-22T20:21:48Z v_m_v_ joined #scheme 2020-04-22T20:23:22Z aeth: That people now use JS for styling shows that maybe the CSS approach wasn't as good as the DSSSL approach 2020-04-22T20:24:02Z gwatt: Or that when all you have is a hammer, everything looks like a thumb 2020-04-22T20:24:23Z Riastradh: shoulda used TeX 2020-04-22T20:24:49Z gwatt: but my thumbs are so sore already 2020-04-22T20:26:19Z v_m_v_ quit (Ping timeout: 250 seconds) 2020-04-22T20:27:51Z aeth: TeX wouldn't have been a good format for web pages because the web needs to (1) not necessarily be trusted, (2) render differently than a per-page model, (3) still render with reduced capabilities if e.g. scripting is disabled 2020-04-22T20:28:35Z SGASAU joined #scheme 2020-04-22T20:28:38Z aeth: It also needs to be parsed by machines, other than "just execute it and see what results", although I guess JS web apps force you into that situation 2020-04-22T20:28:51Z gwatt: Does TeX (1) require trust to render, (2) only reliably render print sizes, (3) require any scripting at all to render? 2020-04-22T20:29:14Z aeth: gwatt: Isn't TeX a scripting language? 2020-04-22T20:29:24Z aeth: And it would have to be heavily customized to render web pages. 2020-04-22T20:29:28Z Riastradh: TeX is not a scripting language TeX is a way of life 2020-04-22T20:29:33Z aeth: Also, TeX is batch, not real time. 2020-04-22T20:29:38Z aeth: A website should be instant. 2020-04-22T20:30:37Z mdhughes: LaTeX is Turing-complete: https://www.overleaf.com/learn/latex/Articles/LaTeX_is_More_Powerful_than_you_Think_-_Computing_the_Fibonacci_Numbers_and_Turing_Completeness 2020-04-22T20:30:37Z rudybot: https://teensy.info/qYYbwGCjY8 2020-04-22T20:30:45Z gwatt: I thought TeX is a typesetting language, not a general purpose scripting language (i.e., less programmability than postscript) 2020-04-22T20:30:49Z zig quit (Ping timeout: 264 seconds) 2020-04-22T20:31:04Z Riastradh: heh 2020-04-22T20:31:23Z gwatt: aeth: Is the batch part a necessity or just the current implementation? 2020-04-22T20:31:25Z Riastradh: PostScript is a subset of TeX! 2020-04-22T20:31:38Z gwatt: I ... did not know that 2020-04-22T20:31:40Z Riastradh: \input pstricks 2020-04-22T20:32:01Z aeth: gwatt: Consider a website, though, especially on the old internet. It starts rendering before all of the content is in. You can still see this if your connection unexpectedly slows down, especially with image loading. 2020-04-22T20:32:21Z aeth: TeX is built on a whole-document model afaik 2020-04-22T20:32:22Z Riastradh: aeth: TeX starts rendering pages before all of the source code is in. 2020-04-22T20:32:28Z aeth: ah 2020-04-22T20:32:34Z aeth: It's more advanced there than I thought, then 2020-04-22T20:32:54Z Riastradh: TeX was designed to be lean and mean on an '80s machine. 2020-04-22T20:33:17Z Riastradh: No way is it going to hold an entire book in memory before producing the first byte of output! 2020-04-22T20:34:36Z aeth: Yeah but is it designed with networks in mind? 2020-04-22T20:35:51Z Riastradh: gwatt: I am exaggerating a little bit about PostScript being a subset of TeX -- not every TeX back end supports pstricks per se (which lets you embed raw PostScript in the output), but you can get essentially the same effect. 2020-04-22T20:36:18Z Riastradh: aeth: \usepackage{url}, what more do you need? 2020-04-22T20:36:25Z jcowan: TeX is Turing-complete, but any language that supports arbitrary-length strings and can take them apart and put them back together again is Turing-complete because it is a Post reduction system. 2020-04-22T20:36:26Z SGASAU quit (Remote host closed the connection) 2020-04-22T20:36:33Z gwatt: aeth: Does that really matter? SGML/XML weren't designed with networks in mind, but HTML seems to be doing alright for itself 2020-04-22T20:36:51Z Riastradh: jcowan: I AM NOT a Turing-tarpitist! What I am saying goes SLIGHTLY deeper than that. 2020-04-22T20:36:55Z SGASAU joined #scheme 2020-04-22T20:38:59Z Riastradh: gwatt: There's more options than just pstricks for general vector graphics, too. There's Metapost, which is derived from Metafont but nicer, and there's TikZ, which is a whole 'nother kettle of worms that will eat your life. 2020-04-22T20:39:49Z gwatt: I really should learn tex one of these days 2020-04-22T20:40:05Z SGASAU quit (Remote host closed the connection) 2020-04-22T20:40:15Z Riastradh: gwatt: TeX is fun! 2020-04-22T20:40:31Z SGASAU joined #scheme 2020-04-22T20:40:39Z bandali: for some definition of fun :-p 2020-04-22T20:41:13Z mdhughes: I was a troff guy back in the day, and MultiMarkdown's replaced that. 2020-04-22T20:42:01Z Riastradh: gwatt: Might pick up the TeXbook and work through it. 2020-04-22T20:44:44Z gwatt: Riastradh: this guy: http://www.ctex.org/documents/shredder/src/texbook.pdf ? 2020-04-22T20:44:52Z SGASAU quit (Remote host closed the connection) 2020-04-22T20:45:25Z SGASAU joined #scheme 2020-04-22T20:50:27Z Riastradh: gwatt: Mostly! That one is missing some of the pictures, at least on the chapter start pages. 2020-04-22T20:51:08Z gwatt: Cool. I will take a look at it. 2020-04-22T20:55:56Z keep_learning joined #scheme 2020-04-22T21:07:27Z v_m_v_ joined #scheme 2020-04-22T21:10:51Z TCZ joined #scheme 2020-04-22T21:12:39Z turtleman joined #scheme 2020-04-22T21:16:52Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-22T21:20:25Z ahungry quit (Remote host closed the connection) 2020-04-22T21:23:02Z zig joined #scheme 2020-04-22T21:34:12Z vmhost quit (Ping timeout: 256 seconds) 2020-04-22T21:46:57Z hive-mind quit (Ping timeout: 265 seconds) 2020-04-22T21:47:26Z eMBee quit (Ping timeout: 265 seconds) 2020-04-22T21:47:26Z gnomon quit (Ping timeout: 265 seconds) 2020-04-22T21:47:26Z ohama quit (Ping timeout: 265 seconds) 2020-04-22T21:47:43Z eMBee joined #scheme 2020-04-22T21:47:55Z acarrico quit (Ping timeout: 265 seconds) 2020-04-22T21:47:55Z ozzloy quit (Ping timeout: 265 seconds) 2020-04-22T21:48:04Z hive-mind joined #scheme 2020-04-22T21:48:11Z gnomon joined #scheme 2020-04-22T21:48:22Z ohama joined #scheme 2020-04-22T21:48:34Z ozzloy joined #scheme 2020-04-22T21:48:34Z ozzloy quit (Changing host) 2020-04-22T21:48:34Z ozzloy joined #scheme 2020-04-22T21:51:46Z acarrico joined #scheme 2020-04-22T21:51:46Z SGASAU quit (Remote host closed the connection) 2020-04-22T21:51:53Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-22T21:52:16Z SGASAU joined #scheme 2020-04-22T22:03:06Z SGASAU quit (Remote host closed the connection) 2020-04-22T22:03:39Z SGASAU joined #scheme 2020-04-22T22:23:03Z madage quit (Ping timeout: 240 seconds) 2020-04-22T22:33:49Z webshinra quit (Remote host closed the connection) 2020-04-22T22:34:15Z webshinra joined #scheme 2020-04-22T22:36:23Z madage joined #scheme 2020-04-22T22:39:25Z v_m_v_ quit (Remote host closed the connection) 2020-04-22T22:39:55Z v_m_v_ joined #scheme 2020-04-22T22:42:40Z v_m_v_ quit (Read error: No route to host) 2020-04-22T22:43:05Z v_m_v_ joined #scheme 2020-04-22T22:49:38Z whiteline quit (Read error: Connection reset by peer) 2020-04-22T22:50:18Z TCZ quit (Quit: Leaving) 2020-04-22T22:51:28Z whiteline joined #scheme 2020-04-22T22:52:16Z v_m_v_ quit (Remote host closed the connection) 2020-04-22T22:52:43Z v_m_v_ joined #scheme 2020-04-22T22:57:26Z SGASAU quit (Remote host closed the connection) 2020-04-22T22:57:30Z v_m_v_ quit (Ping timeout: 256 seconds) 2020-04-22T22:57:40Z SGASAU` joined #scheme 2020-04-22T22:57:57Z stultulo joined #scheme 2020-04-22T22:58:25Z f8l quit (Ping timeout: 250 seconds) 2020-04-22T22:58:32Z stultulo is now known as f8l 2020-04-22T22:59:31Z pierpa joined #scheme 2020-04-22T22:59:53Z pilne_ joined #scheme 2020-04-22T23:00:05Z pilne_ quit (Client Quit) 2020-04-22T23:02:01Z pilne quit (Ping timeout: 264 seconds) 2020-04-22T23:02:28Z SGASAU` quit (Remote host closed the connection) 2020-04-22T23:02:57Z SGASAU` joined #scheme 2020-04-22T23:06:43Z SGASAU` quit (Remote host closed the connection) 2020-04-22T23:07:32Z SGASAU` joined #scheme 2020-04-22T23:07:53Z keep_learning joined #scheme 2020-04-22T23:16:19Z SGASAU` quit (Remote host closed the connection) 2020-04-22T23:16:44Z SGASAU` joined #scheme 2020-04-22T23:57:27Z f8l quit (Remote host closed the connection) 2020-04-22T23:58:50Z f8l joined #scheme 2020-04-23T00:03:38Z pilne joined #scheme 2020-04-23T00:17:52Z ArthurStrong joined #scheme 2020-04-23T00:31:54Z kjak quit (Ping timeout: 240 seconds) 2020-04-23T00:35:30Z SGASAU` quit (Remote host closed the connection) 2020-04-23T00:35:58Z SGASAU` joined #scheme 2020-04-23T00:42:07Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-23T00:54:06Z Riastradh: gwatt: Speaking of PostScript, I used PostScript to embed plots in MIT Scheme's reference 2020-04-23T00:54:20Z Riastradh: ...manual last year without adding any new toolchain dependencies into the documentation build. 2020-04-23T00:55:10Z Riastradh: That is, no gnuplot or anything, so I had to cook up a scheme to plot the functions involved (which are the condition numbers -- and maybe later branch cuts -- of various numerical functions), 2020-04-23T00:56:01Z Riastradh: and just sampling them at a lot of points wasn't very satisfying, so MIT Scheme's manual now has an embedded automatic differentiation system in PostScript to generate cubic spline approximations of the condition numbers of various numerical functions. 2020-04-23T00:59:09Z Riastradh: UNFORTUNATELY I ran out of round tuits to make it a higher-order AD system, so it doesn't simultaneously differentiate the function whose condition number you need to plot, _and_ differentiate the condition number to compute the cubic spline control points; you have to symbolically compute an expression for the condition number first. 2020-04-23T00:59:25Z Riastradh: But that might be a fun exercise later. 2020-04-23T01:02:35Z gwatt: That sounds very fancy 2020-04-23T01:05:19Z SGASAU` quit (Remote host closed the connection) 2020-04-23T01:05:51Z SGASAU` joined #scheme 2020-04-23T01:09:10Z Riastradh: https://git.savannah.gnu.org/cgit/mit-scheme.git/tree/doc/ref-manual/fig, https://mumble.net/~campbell/tmp/20200422/mit-scheme-ref.pdf (pp. 72 and onward) 2020-04-23T01:10:41Z Riastradh: Hmm, I should fix the colour scheme to be colourblind-friendlier. 2020-04-23T01:27:19Z jeanbeurre joined #scheme 2020-04-23T01:31:11Z kjak joined #scheme 2020-04-23T01:48:21Z jeanbeurre quit (Quit: I've got nothin' to say!) 2020-04-23T01:56:48Z drakonis quit (Quit: WeeChat 2.8) 2020-04-23T01:58:11Z SGASAU` quit (Remote host closed the connection) 2020-04-23T01:59:07Z SGASAU` joined #scheme 2020-04-23T02:09:44Z torbo joined #scheme 2020-04-23T02:30:49Z torbo quit (Remote host closed the connection) 2020-04-23T02:31:00Z torbo joined #scheme 2020-04-23T02:49:03Z madage quit (Ping timeout: 240 seconds) 2020-04-23T02:49:25Z turtleman quit (Ping timeout: 264 seconds) 2020-04-23T02:51:47Z ahungry joined #scheme 2020-04-23T03:00:03Z pierpa quit (Remote host closed the connection) 2020-04-23T03:07:42Z fradet quit (Quit: leaving) 2020-04-23T03:10:33Z madage joined #scheme 2020-04-23T03:10:35Z duncanm: Riastradh: so you wrote the code in PostScript? 2020-04-23T03:10:59Z duncanm: I've been writing my own PostScript interpreter, it's real good fun 2020-04-23T03:11:40Z Riastradh: duncanm: yep 2020-04-23T03:12:04Z duncanm: programming in PostScript has some similarities with a Lisp 2020-04-23T03:13:19Z Riastradh: See doc/ref-manual/fig for the PostScript code. 2020-04-23T03:13:29Z duncanm: cool, i'll definitely take a look 2020-04-23T03:15:32Z Riastradh: Friend of mine did his numerical algorithms problem sets in grad school using PostScript. The grader was very confused at first -- `Your plots are beautiful, but where is the source code?'. 2020-04-23T03:20:22Z aeth: next year, directly write a PDF 2020-04-23T03:28:26Z pilne quit (Quit: Few women admit their age. Few men act theirs.) 2020-04-23T04:21:16Z torbo quit (Remote host closed the connection) 2020-04-23T04:41:29Z lritter joined #scheme 2020-04-23T05:19:27Z drot quit (Ping timeout: 260 seconds) 2020-04-23T05:20:31Z drot joined #scheme 2020-04-23T05:23:39Z gravicappa joined #scheme 2020-04-23T05:24:46Z lockywolf joined #scheme 2020-04-23T05:26:13Z lockywolf: Is there an idiomatic way to transform (a b c d) into (a , b , c , d) ? 2020-04-23T05:26:41Z Riastradh: What do you mean by the latter? 2020-04-23T05:27:43Z lockywolf: Riastradh, I am trying to generate C function argument string 2020-04-23T05:28:08Z lockywolf: (1 2 3) -> "1, 2, 3" 2020-04-23T05:28:14Z Riastradh: So when you say `,' do you mean a string of a single comma, or a comma and a space? 2020-04-23T05:28:30Z lockywolf: Riastradh, does it matter? 2020-04-23T05:29:10Z lockywolf: if I can (zip lst just-enough-commas), I can as well (zip lst just-enough-spaces) 2020-04-23T05:29:16Z Riastradh: Well, if taken literally i nScheme notation, what you wrote is the same as (a (unquote b) (unquote c) (unquote d)). 2020-04-23T05:29:44Z lockywolf: sorry, this is not what I meant 2020-04-23T05:29:47Z Riastradh: Which is a curious thing to transform (a b c d) into. But it sounds like you really want to take something like ("a" "b" "c" "d") and transform it into "a, b, c, d". 2020-04-23T05:30:06Z lockywolf: Riastradh, yes, you are correct 2020-04-23T05:30:27Z ahungry quit (Remote host closed the connection) 2020-04-23T05:30:59Z lockywolf: I have never heard of "unquote" before. SICP doesn't get into implementing quasiquote and the thing that splices in values within the quasiquote 2020-04-23T05:31:25Z Riastradh: `(foo ,bar) is shorthand for (quasiquote (foo (unquote bar))) 2020-04-23T05:31:43Z Riastradh: and evaluates like (list 'foo bar) 2020-04-23T05:31:56Z lockywolf: makes sense. Thank you for explaining 2020-04-23T05:31:58Z Riastradh: `(foo ,@bar baz) is shorthand for (quasiquote (foo (unquote-splicing bar))) and evaluates like (append '(foo) bar '(baz)). 2020-04-23T05:32:03Z Riastradh: er 2020-04-23T05:32:10Z Riastradh: shorthand for (quasiquote (foo (unquote-splicing bar) baz)) 2020-04-23T05:33:37Z lockywolf: understood 2020-04-23T05:36:09Z lockywolf: still, is there a simple way to make a comma-separated string out of a list of symbols? 2020-04-23T05:37:49Z Riastradh: No widely accepted standard name for the operation, but in SRFI 13 it's spelled (string-join '("foo" "bar" "baz") ", "); in MIT Scheme it's spelled (decorated-string-append "" ", " "" '("foo" "bar" "baz")) [the "" and "" arguments are for a prefix and suffix]. 2020-04-23T05:38:00Z Riastradh: (Well, maybe the R7RS has adopted a name for it, I dunno.) 2020-04-23T05:39:32Z aeth: Well, SRFI 13 isn't in R7RS-large yet (idk if it ever is, or if a replacement will be instead) 2020-04-23T05:40:47Z aeth: I guess it would be SRFI 130 if it gets in, idk if there is/was a vote on it 2020-04-23T05:42:52Z lockywolf: hardness distribution is SICP is not uniform :( 2020-04-23T05:46:10Z lockywolf: scheme is a sinful language. 2020-04-23T05:46:33Z lockywolf: gives you a fake feeling of almightiness 2020-04-23T05:46:51Z seepel joined #scheme 2020-04-23T05:47:00Z Riastradh: ...not making a joke about the sin function...not making a joke about the sin function... 2020-04-23T05:47:20Z lockywolf: you have co-sinned 2020-04-23T05:51:19Z seepel quit (Ping timeout: 260 seconds) 2020-04-23T05:52:41Z lockywolf: eh, just wrote another implementation of string-join... made the world a worse place to be 2020-04-23T05:55:05Z brendyyn joined #scheme 2020-04-23T05:55:39Z lockywolf: speaking of sins 2020-04-23T05:55:41Z lockywolf: https://github.com/8051Enthusiast/regex2fat 2020-04-23T05:57:00Z aeth: ftfy s/another implementation of string-join/another partial implementation of SRFI 13/ 2020-04-23T05:59:11Z lockywolf: aeth, and even so I'm still not as sinful as 8051Enthusiast 2020-04-23T06:00:14Z aeth: I'm going to do a full SRFI 13 implementation, probably 2020-04-23T06:05:26Z jobol joined #scheme 2020-04-23T06:19:56Z luni joined #scheme 2020-04-23T06:50:30Z fadein quit (Ping timeout: 256 seconds) 2020-04-23T06:56:11Z SGASAU` quit (Remote host closed the connection) 2020-04-23T06:56:44Z SGASAU` joined #scheme 2020-04-23T06:57:33Z skapata quit (Remote host closed the connection) 2020-04-23T07:17:39Z fadein joined #scheme 2020-04-23T07:42:16Z v_m_v_ joined #scheme 2020-04-23T08:34:12Z v_m_v_ quit (Remote host closed the connection) 2020-04-23T08:34:38Z v_m_v_ joined #scheme 2020-04-23T08:35:06Z ArthurStrong quit (Ping timeout: 265 seconds) 2020-04-23T08:36:52Z ArthurStrong joined #scheme 2020-04-23T08:39:18Z v_m_v_ quit (Ping timeout: 256 seconds) 2020-04-23T08:41:48Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-23T08:42:31Z SGASAU joined #scheme 2020-04-23T08:49:02Z lockywolf_ joined #scheme 2020-04-23T08:51:39Z lockywolf quit (Ping timeout: 250 seconds) 2020-04-23T08:52:57Z barodaret joined #scheme 2020-04-23T08:53:04Z lockywolf_ quit (Remote host closed the connection) 2020-04-23T08:53:33Z lockywolf_ joined #scheme 2020-04-23T08:54:57Z barodaret: Hello. I have a question about dialects and libraries. Let's say there's a library written for GNU Guile that I want to use in racket (or visa versa). What would that process be like? And what if it's a library written for commonlisp and I want to use it in either guile or racket? 2020-04-23T08:55:30Z barodaret: I know y'all have probably heard that question a million times by now, but google ain't helping 2020-04-23T08:55:45Z wasamasa: then you've got some rewriting to do 2020-04-23T08:55:57Z barodaret: In either case? 2020-04-23T08:56:00Z wasamasa: yes 2020-04-23T08:56:23Z barodaret: ok, understandable, thanks 2020-04-23T08:56:26Z wasamasa: scheme libraries tend to not run unmodified across implementations 2020-04-23T08:56:51Z aeth: It basically has to use SRFIs alone, and even then there might be a few things 2020-04-23T08:56:52Z wasamasa: common lisp is an entirely different language, the only way that would work would be if you used a scheme with CL interop 2020-04-23T08:57:10Z aeth: As for Common Lisp, yeah, that's a totally different language 2020-04-23T08:57:26Z wasamasa: but if you stuck to common lisp implementations, chances are good you can use the library unmodified 2020-04-23T08:57:38Z wasamasa: and if not, adding compatibility shims is easier than with scheme 2020-04-23T08:57:53Z aeth: You have to go out of your way to write unportable code in CL 2020-04-23T08:58:23Z aeth: probably Unicode-related 2020-04-23T08:59:09Z aeth: Sharing a library between CL and a Scheme just isn't a thing. And even if it were, it would be a Scheme, not all Schemes. 2020-04-23T08:59:38Z barodaret: It would be nice though 2020-04-23T08:59:39Z wasamasa: now's the time to pitch your project 2020-04-23T08:59:57Z wasamasa: barodaret: that's like claiming you can run JS libraries in a java codebase 2020-04-23T09:00:00Z barodaret: No lol, I'm just some idiot, I don't have a project to pitch 2020-04-23T09:00:03Z aeth: You would basically either have to write CL in Scheme or Scheme in CL, and the latter is way easier. 2020-04-23T09:00:16Z aeth: But Scheme-in-CL wouldn't get you Guile-CL interop 2020-04-23T09:00:36Z wasamasa: I'm speaking of this aeth project: https://gitlab.com/mbabich/airship-scheme/-/tree/master#why-use-this-project 2020-04-23T09:01:00Z aeth: Racket interop would be possible, if you implemented R6RS and then ported Racket-on-Chez to Racket-on-some-other-R6RS 2020-04-23T09:01:28Z SGASAU: barodaret: interoperation with Common Lisp is nearly impossible these days. 2020-04-23T09:01:30Z zig quit (Quit: WeeChat 1.9.1) 2020-04-23T09:02:17Z SGASAU: Even if you manage to get around differences in languages, there's fundamental difference in module systems remaining. 2020-04-23T09:02:52Z aeth: That's more about the difference between Scheme module systems than the difference between Scheme-and-CL 2020-04-23T09:03:11Z aeth: Scheme's sufficiently underspecified that there's still interop possible, just specified in a way that would probably be incompatible with Guile and Racket. 2020-04-23T09:04:00Z aeth: s/just specified/just implemented/ 2020-04-23T09:04:27Z barodaret: Makes sense. I've just been reading about lisp the last few days and was curious about the extent of compatibility among the different dialects/implementations. What I was reading made it sound like each implementation just had its own libraries and if you wanted to use that library, you had to use that implementation. 2020-04-23T09:04:49Z aeth: It depends on the Lisp. 2020-04-23T09:04:51Z wasamasa: barodaret: the lisp family is like the algol family, there's superficial syntactic similarity 2020-04-23T09:05:25Z aeth: With Common Lisp, you have to go out of your way to write unportable (to other CL implementations) code, as I said. With Scheme, you have to go out of your way to write portable (to other Schemes) code 2020-04-23T09:05:29Z SGASAU: wasamasa: good comparison! 2020-04-23T09:05:42Z aeth: And most Lisps that aren't CL or Scheme are single-implementation, or at least with one dominant implementation 2020-04-23T09:05:57Z wasamasa: barodaret: think of my example with java and JS, it makes little sense to run JS in java because you cannot access the interesting JS runtime stuff anyway 2020-04-23T09:06:52Z aeth: You could probably write code that's bilingual between Emacs Lisp and Common Lisp, but there's not much of a point in doing that. 2020-04-23T09:06:54Z SGASAU: wasamasa: you can run JS in Java up until Java 11 (or maybe even later). :D 2020-04-23T09:07:10Z wasamasa: barodaret: heavyweight solutions are an option of course, but not nearly as practical as using available libraries 2020-04-23T09:08:15Z aeth: barodaret: As far as the Lisp family goes in general, anything that's not Emacs Lisp, Common Lisp, or Scheme is either dead or incredibly incompatible. 2020-04-23T09:08:26Z wasamasa: barodaret: now, there's some schemes that have good interop with another language like C or java and some schemes where people ported interesting libraries for 2020-04-23T09:08:46Z SGASAU: aeth: Standard Lisp is actually part of Reduce. 2020-04-23T09:09:04Z SGASAU: It is sort of living. 2020-04-23T09:10:29Z aeth: I see. "Sort of" indeed. Emacs Lisp is application-specific but it's a very popular application to the point where it's probably the most popular Lisp 2020-04-23T09:10:38Z wasamasa: on github at least 2020-04-23T09:10:42Z aeth: I'm not sure Standard Lisp's one use counts. 2020-04-23T09:11:21Z SGASAU: It has two implementations! 2020-04-23T09:11:36Z xelxebar_ joined #scheme 2020-04-23T09:11:43Z xelxebar quit (Remote host closed the connection) 2020-04-23T09:12:53Z lockywolf_ quit (Remote host closed the connection) 2020-04-23T09:12:53Z wasamasa: is that it: http://user.ceng.metu.edu.tr/~ucoluk/research/lisp/generalinfo.html 2020-04-23T09:13:02Z wasamasa: shareware, seriously 2020-04-23T09:13:35Z aeth: wasamasa: not just on Github, also in terms of installs, and a few other popularity metrics 2020-04-23T09:13:41Z lockywolf joined #scheme 2020-04-23T09:15:40Z SGASAU: wasamasa: can't check it right now, yet in Reduce's repository (or around it) you can find two implementations. 2020-04-23T09:15:46Z wasamasa: ok 2020-04-23T09:15:54Z SGASAU: Both under BSD terms, IIRC. 2020-04-23T09:17:02Z wasamasa: https://reduce-algebra.sourceforge.io/lisp-docs/sl.pdf doesn't look sexpy 2020-04-23T09:17:16Z SGASAU: R-Lisp is another thing. :) 2020-04-23T09:18:07Z wasamasa: lol, at the very end they show how it translates 2020-04-23T09:18:27Z SGASAU: If you think that it is good idea to frighten engineers with prefix notation, I have bad news for you. :) 2020-04-23T09:19:05Z SGASAU: Notation differences cause really a lot of headache. 2020-04-23T09:19:05Z wasamasa: is that how the application is written? 2020-04-23T09:19:18Z aeth: SGASAU: any old engineer swears by the postfix HP graphing calculators 2020-04-23T09:19:24Z aeth: maybe young engineers are just weak :-p 2020-04-23T09:20:46Z SGASAU: aeth: no idea about HP calculators, programmable MK calculators were seen as a necessary pain because otherwise you'd be doing those things with pencil and paper. 2020-04-23T09:20:57Z SGASAU: A LOT slower! 2020-04-23T09:21:58Z SGASAU: ะœะš or ะ‘3, whatever, mostly depends on how old you are and which part of the country you come from. 2020-04-23T09:22:35Z aeth: it looks like the programming language was mostly infix. https://en.wikipedia.org/wiki/RPL_(programming_language) 2020-04-23T09:22:50Z aeth: "RPL control blocks are not strictly postfix. Although there are some notable exceptions, the control block structures appear as they would in a standard infix language. The calculator manages this by allowing the implementation of these blocks to skip ahead in the program stream as necessary." 2020-04-23T09:24:10Z aeth: I'm guessing by the "ะ‘" that you wouldn't have had easy access to HP calculators, though 2020-04-23T09:24:57Z SGASAU: aeth: once you manage through parsers, you understand that being prefix or postfix doesn't bring you a lot. 2020-04-23T09:26:59Z SGASAU: aeth: I suspect that it wouldn't give you a lot in late 70s. 2020-04-23T09:31:07Z SGASAU: aeth: I wonder if anyone uses those postfix calculators today (not counting old users). 2020-04-23T09:31:24Z aeth 2020-04-23T09:32:06Z aeth: https://play.google.com/store/apps/details?id=org.ab.x48 2020-04-23T09:32:40Z SGASAU: May I wonder what for? 2020-04-23T09:33:26Z SGASAU: (I'm almost sure that it is possible to use Python which would be definitely more powerful.) 2020-04-23T09:34:17Z aeth: Python's a great calculator if you have a keyboard, but not on a touchscreen 2020-04-23T09:34:49Z aeth: plus, whatever I used to run Python on Android 10 years ago probably doesn't work anymore 2020-04-23T09:35:25Z SGASAU: I'm almost sure that there exist similar things with more convenient notation. 2020-04-23T09:36:51Z aeth: Well, yes, an emulated graphing calculator is sort of like bash. It makes the easy things trivial and the slightly harder things nearly impossible. 2020-04-23T09:38:14Z lockywolf quit (Ping timeout: 258 seconds) 2020-04-23T09:39:29Z SGASAU: When I search for "graphing calculator" the top results are some TI devices. 2020-04-23T09:40:25Z SGASAU: I have suspicion that exactly those that have Reduce or something of the kind inside. 2020-04-23T09:40:43Z aeth: TI are the popular graphing calculators made contracts with American high schools... and then they made no improvements in the past 30+ years. 2020-04-23T09:40:53Z aeth: Same price, too, even though the hardware has to be dirt cheap now 2020-04-23T09:41:25Z aeth: https://xkcd.com/768/ 2020-04-23T09:42:02Z aeth: Essentially, you have to buy a certain TI for certain standardized tests. 2020-04-23T09:42:42Z aeth: They're like Microsoft Word, but if Microsoft Word was this version of WordPerfect, forever: https://en.wikipedia.org/wiki/WordPerfect#/media/File:Wordperfect-5.1-dos.png 2020-04-23T09:43:03Z madage quit (Ping timeout: 240 seconds) 2020-04-23T09:43:17Z aeth: I believe that their main justification is that if they were any easier to use then kids would use them to cheat on the standardized tests that they're required to use those calculators on. 2020-04-23T09:43:36Z SGASAU: The design suggests something more like early 90s at most. 2020-04-23T09:44:11Z civodul joined #scheme 2020-04-23T09:44:39Z SGASAU: Well... If they managed to get a contract with educational system that must give them plenty of money. 2020-04-23T09:44:42Z wasamasa: so, yeah, it appears that the PSL implementation likes the sexp and the CSL and reduce implementation doesn't 2020-04-23T09:44:43Z wasamasa: fun 2020-04-23T09:44:51Z aeth: OK, I'm willing to say that maybe they haven't improved in a mere 25 years, not 30+ 2020-04-23T09:45:03Z aeth: For electronics, that's ridiculous 2020-04-23T09:46:03Z aeth: And the sad thing is they were still pretty cool 15-20 years ago... 2020-04-23T09:49:32Z SGASAU: $100 makes it approx. EUR what? 80? 90? 2020-04-23T09:51:04Z SGASAU: Hm. 2020-04-23T09:51:56Z SGASAU: Photographs from https://en.wikipedia.org/wiki/Scientific_calculator remind calculators from ะ‘3 series from 70-80s. 2020-04-23T09:52:24Z SGASAU: Those at bottom look like mid-70s models. 2020-04-23T09:53:39Z SGASAU: Only with orange indication. Though it may be that I have seen only green ones on devices of that form. 2020-04-23T09:55:30Z wasamasa: SGASAU: suppose I wrote some PSL code for fun, what would the idiomatic notation be? 2020-04-23T09:57:06Z SGASAU: Sorry? I don't quite understand. 2020-04-23T09:57:46Z SGASAU: aeth: given that those are still manufactured, I do not understand their purpose. 2020-04-23T09:57:56Z wasamasa: there's both sexp and infix syntax 2020-04-23T09:58:11Z SGASAU: aeth: except when their use is mandated by some regulations. 2020-04-23T09:58:14Z wasamasa: sorry, I meant Standard Lisp 2020-04-23T09:58:23Z wasamasa: ideally the kind running on both implementations 2020-04-23T09:58:41Z mdhughes: The calc you want is PCalc, on Mac & iOS. Has algebraic mode, but it's meant for RPN, HP emulation. Tons of scripting abilities. 2020-04-23T09:59:17Z SGASAU: wasamasa: IIRC, previously the distinction was something like this: Standard Lisp is prefix notation, R-Lisp is algoloid notation. 2020-04-23T09:59:56Z wasamasa: ok 2020-04-23T10:01:23Z jobol quit (Ping timeout: 272 seconds) 2020-04-23T10:01:47Z SGASAU: mdhughes: I'd say that you need a tablet with full-blown Matlab-Mathematica-Maple or Octave, Maxima, Reduce and whatever else (XCas? Some Axiom?), if you're hardcore opensource person. 2020-04-23T10:02:06Z mdhughes: No, that's 100% not what I need. 2020-04-23T10:02:21Z SGASAU: mdhughes: since we're on #scheme, you could run some Scheme there too. :) 2020-04-23T10:02:54Z mdhughes: I do run Pythonista on my iPad, write code in it for complex stuff. There's a couple Scheme runtimes for iOS, but none have good system integration or math libraries. 2020-04-23T10:03:28Z v_m_v_ joined #scheme 2020-04-23T10:04:20Z SGASAU: The alternative is to run SAGE at home and use browser to access it. 2020-04-23T10:04:58Z mdhughes: But 90% of the time, I need to punch in a series of numbers and run a few stack operations on each to get some result. I'm a simple engineer, I don't care about "real math". 2020-04-23T10:06:12Z SGASAU: "Simple engineer" is too vague for me. 2020-04-23T10:06:44Z SGASAU: I used to work with "simple engineers" who needed really powerful notebooks to run their CADs. 2020-04-23T10:06:55Z v_m_v_ quit (Remote host closed the connection) 2020-04-23T10:07:23Z v_m_v_ joined #scheme 2020-04-23T10:12:15Z v_m_v_ quit (Ping timeout: 265 seconds) 2020-04-23T10:16:25Z v_m_v_ joined #scheme 2020-04-23T10:19:45Z SGASAU: aeth: no wonder why you have that impression on TI devices. Using Z80 in 2004 for a computing device... 2020-04-23T10:20:28Z SGASAU: aeth: Palms had some ARM5 by then. 2020-04-23T10:21:42Z SGASAU: Z80 in 2013 makes it even worse... 2020-04-23T10:27:14Z lritter quit (Ping timeout: 240 seconds) 2020-04-23T10:35:22Z SGASAU quit (Remote host closed the connection) 2020-04-23T10:35:46Z SGASAU joined #scheme 2020-04-23T10:43:24Z v_m_v_ quit (Remote host closed the connection) 2020-04-23T10:43:50Z v_m_v_ joined #scheme 2020-04-23T10:44:43Z v_m_v_ quit (Remote host closed the connection) 2020-04-23T10:44:51Z v_m_v_ joined #scheme 2020-04-23T10:47:05Z SGASAU: mdhughes: actually, I'm interested to know where such devices are useful where you cannot use commodity tablets or convertibles. If you can give me a reference, that would be fine. 2020-04-23T10:48:29Z SGASAU: mdhughes: the longer I think on it, the more it is puzzling to me: 2020-04-23T10:49:48Z SGASAU: mdhughes: if you need smaller device, then most likely you are unable to spend time entering numbers, thus you need something really special like "portable laboratory" device that takes probes, measures, calculates and stores data automatically. 2020-04-23T10:50:55Z SGASAU: mdhughes: and when you can spend time while needing better control over input, you can either use your commodity phone or commodity tablet or convertible. 2020-04-23T10:52:42Z lockywolf joined #scheme 2020-04-23T10:55:00Z SGASAU: mdhughes: in other words, I want to see benefits of having somewhat specialized device of nearly A5 size over fully-capable A4-size device. 2020-04-23T11:08:47Z v_m_v_ quit (Remote host closed the connection) 2020-04-23T11:11:46Z v_m_v_ joined #scheme 2020-04-23T11:27:28Z lockywolf_ joined #scheme 2020-04-23T11:30:15Z lockywolf quit (Ping timeout: 250 seconds) 2020-04-23T11:33:20Z madage joined #scheme 2020-04-23T11:35:51Z v_m_v_ quit (Remote host closed the connection) 2020-04-23T11:36:24Z v_m_v_ joined #scheme 2020-04-23T11:38:20Z v_m_v_ quit (Read error: No route to host) 2020-04-23T11:38:46Z v_m_v_ joined #scheme 2020-04-23T11:41:27Z lritter joined #scheme 2020-04-23T11:44:36Z v_m_v_ quit (Ping timeout: 256 seconds) 2020-04-23T11:48:55Z brendyyn quit (Ping timeout: 265 seconds) 2020-04-23T11:49:25Z v_m_v_ joined #scheme 2020-04-23T11:52:30Z hugh_marera joined #scheme 2020-04-23T11:54:58Z v_m_v_ quit (Ping timeout: 256 seconds) 2020-04-23T12:06:36Z SGASAU quit (Remote host closed the connection) 2020-04-23T12:07:00Z SGASAU joined #scheme 2020-04-23T12:19:22Z turtleman joined #scheme 2020-04-23T12:52:59Z lockywolf__ joined #scheme 2020-04-23T12:55:59Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-23T13:09:27Z lockywolf_ joined #scheme 2020-04-23T13:12:32Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-23T13:26:44Z TCZ joined #scheme 2020-04-23T13:32:21Z SGASAU quit (Remote host closed the connection) 2020-04-23T13:32:57Z SGASAU joined #scheme 2020-04-23T13:45:10Z TCZ quit (Quit: Leaving) 2020-04-23T13:48:06Z lockywolf__ joined #scheme 2020-04-23T13:48:58Z lockywolf__ quit (Max SendQ exceeded) 2020-04-23T13:49:32Z lockywolf__ joined #scheme 2020-04-23T13:50:26Z lockywolf__ quit (Max SendQ exceeded) 2020-04-23T13:50:28Z lockywolf_ quit (Ping timeout: 258 seconds) 2020-04-23T13:51:10Z lockywolf__ joined #scheme 2020-04-23T13:51:59Z lockywolf__ quit (Remote host closed the connection) 2020-04-23T13:52:29Z lockywolf__ joined #scheme 2020-04-23T13:52:49Z v_m_v_ joined #scheme 2020-04-23T13:53:24Z lockywolf__ quit (Max SendQ exceeded) 2020-04-23T13:54:14Z lockywolf__ joined #scheme 2020-04-23T13:54:59Z lockywolf__ quit (Remote host closed the connection) 2020-04-23T13:55:29Z lockywolf__ joined #scheme 2020-04-23T13:56:20Z lockywolf__ quit (Max SendQ exceeded) 2020-04-23T13:56:54Z lockywolf__ joined #scheme 2020-04-23T13:57:13Z sz0 quit (Quit: Connection closed for inactivity) 2020-04-23T13:57:45Z lockywolf__ quit (Max SendQ exceeded) 2020-04-23T13:58:21Z lockywolf__ joined #scheme 2020-04-23T13:59:11Z lockywolf__ quit (Max SendQ exceeded) 2020-04-23T13:59:41Z lockywolf__ joined #scheme 2020-04-23T14:05:01Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-23T14:12:35Z TCZ joined #scheme 2020-04-23T14:20:00Z notnotdan joined #scheme 2020-04-23T14:23:48Z luni quit (Quit: Connection closed) 2020-04-23T14:29:17Z lockywolf__ quit (Ping timeout: 246 seconds) 2020-04-23T14:30:12Z jobol joined #scheme 2020-04-23T14:41:27Z skapata joined #scheme 2020-04-23T14:43:30Z v_m_v_ quit (Remote host closed the connection) 2020-04-23T14:47:37Z ArthurStrong quit (Quit: leaving) 2020-04-23T14:47:54Z hugh_marera left #scheme 2020-04-23T14:58:20Z zig joined #scheme 2020-04-23T15:01:20Z mdhughes: In the '90s my pack always had my HP-48, and a Palm for todos and phone registry, and a film camera or later a digital camera, and sometimes a bulky laptop. 2020-04-23T15:01:58Z mdhughes: The iPhone replaced the calculator and camera, the iPad replaced the laptop in all but the most strenuous cases. 2020-04-23T15:04:17Z srandon111: mdhughes, apple stuff sucks dude 2020-04-23T15:04:20Z mdhughes: The whole point of putting desktop-level CPU & RAM in a portable device is to make specialized devices obsolete. My pack full of gadgets fits in my pockets now. 2020-04-23T15:04:49Z mdhughes: Those grapes must be real sour, srandon111. 2020-04-23T15:05:12Z hugh_marera joined #scheme 2020-04-23T15:05:31Z mdhughes: If you don't have the money, and have to settle for droid junk, you know, it's OK. Nobody blames you for being a digital hobo or dumpster-diver. 2020-04-23T15:08:57Z pjb: Samsung stuff is not bad, and android has some freedom advantages. But it's clear that iOS is agreable, as long as you don't bumb against the fenceโ€ฆ 2020-04-23T15:09:00Z pjb: bump 2020-04-23T15:09:15Z tdammers: I tend to bump against the fence within minutes 2020-04-23T15:09:42Z tdammers: fwiw, android sucks almost as hard as iOS in that regard 2020-04-23T15:10:14Z mdhughes: And if you're an Objective-C developer, and can handle firing up Xcode every couple weeks if you absolutely must, you can just treat it like any other UNIX workstation that fits in your pants. 2020-04-23T15:11:02Z mdhughes: (ObjC is awesome, but I get that sane people don't want to mix C & Smalltalk. Xcode is fucking bullshit now, but 20 years ago PB/IB was good.) 2020-04-23T15:14:50Z notzmv quit (Ping timeout: 256 seconds) 2020-04-23T15:20:41Z Riastradh: srandon111: Please pick fights about Apple stuff elsewhere, not in #scheme. 2020-04-23T15:21:00Z Riastradh: I'd suggest that mdhughes take the insulting condescenscion elsewhere, but mdhughes is probably still /ignoring me. 2020-04-23T15:21:51Z TCZ quit (Quit: Leaving) 2020-04-23T15:58:07Z hugh_marera quit (Quit: hugh_marera) 2020-04-23T15:58:19Z hugh_marera joined #scheme 2020-04-23T16:00:34Z whiteline quit (Remote host closed the connection) 2020-04-23T16:01:01Z whiteline joined #scheme 2020-04-23T16:02:04Z whiteline quit (Remote host closed the connection) 2020-04-23T16:03:31Z whiteline joined #scheme 2020-04-23T16:03:38Z whiteline quit (Remote host closed the connection) 2020-04-23T16:06:31Z hugh_marera quit (Quit: hugh_marera) 2020-04-23T16:10:18Z TCZ joined #scheme 2020-04-23T16:15:14Z X-Scale quit (Ping timeout: 265 seconds) 2020-04-23T16:17:06Z [X-Scale] joined #scheme 2020-04-23T16:17:28Z [X-Scale] is now known as X-Scale 2020-04-23T16:20:04Z drakonis joined #scheme 2020-04-23T16:25:11Z retropikzel joined #scheme 2020-04-23T16:25:18Z jcowan: Laptops are still indispensable to me because they are a single packaging of usable keyboard, usable screen, usable disk, and usable CPU. Not ideal in any case, but usable. 2020-04-23T16:25:45Z jcowan: (however, i do not find the pointing device usable and still plug in a wired mouse.) 2020-04-23T16:26:31Z jcowan: And single packaging is very important to me, otherwise I tend to leave parts behind. 2020-04-23T16:30:03Z mdhughes: Mostly I use the iPad for reading and light writing where the on-screen's fine. But I got my original iPad with a keyboard stand, and since then have just carried a little Magic Keyboard and wire stand if I absolutely need a keyboard with it when out. 2020-04-23T16:30:05Z pjb: Apple's trackpad is rather good, but I still have both a trackpad and a logitec 3-button mouse attached on my desktopโ€ฆ 2020-04-23T16:30:52Z pjb: The trackpad on Windows or Linux is not so good. Happily, when using emacs, I have hooks to disable the trackpad with X11. :-) 2020-04-23T16:33:06Z TCZ quit (Quit: Leaving) 2020-04-23T16:34:37Z jcowan: I don't have room for a desktop at home and need to move between home and office (in normal times) 2020-04-23T16:40:54Z mdhughes: Right, that's where a beefy laptop is useful. 2020-04-23T16:42:22Z lockywolf joined #scheme 2020-04-23T16:46:10Z gwatt: I've actually been thinking about getting one of the pinebook pros, but then I tend to collect and ignore hardware 2020-04-23T16:46:27Z Riastradh: gwatt: Better get in the queue now... 2020-04-23T16:47:37Z gwatt: Heh, the website no longer lists them as out of stock 2020-04-23T16:47:51Z Riastradh: They're pretty nice -- if you're careful about the keyboard selection! -- but the Pine64 production is growing slower than people's interest in getting the devices, and COVID-19 had a big impact on their supply chain. 2020-04-23T16:48:17Z Riastradh: I seem to recall hearing their factory also took a break from making the devices and switched to making PPE for a little while, or something like that. 2020-04-23T16:49:18Z Riastradh: gwatt: Go for it! 2020-04-23T16:49:28Z retropikzel: I have pinebook pro and I can tell you its really nice. Currently running Debian Buster 2020-04-23T16:50:39Z pjb: Consider the purism hardware. https://puri.sm/products/librem-15/ 2020-04-23T16:51:41Z Riastradh: (disclosure: I was sent a pbp gratis in order to work on graphics drivers.) 2020-04-23T16:54:20Z sdu quit (Quit: leaving) 2020-04-23T16:55:41Z sarna left #scheme 2020-04-23T16:58:43Z sdu joined #scheme 2020-04-23T17:01:19Z pjb: No shame in that. 2020-04-23T17:02:19Z Riastradh: Just want to be clear about disclosing possible conflict of interest when I say `They're pretty nice'. (I was going to buy one, but they were out of stock at the time; then TL just sent me one.) 2020-04-23T17:04:48Z SGASAU quit (Remote host closed the connection) 2020-04-23T17:05:28Z SGASAU joined #scheme 2020-04-23T17:06:41Z gwatt: who/what is TL? 2020-04-23T17:07:42Z Riastradh: One of the main Pine64 folks. 2020-04-23T17:08:10Z gwatt: ah 2020-04-23T17:19:53Z seepel joined #scheme 2020-04-23T18:25:48Z lritter quit (Ping timeout: 256 seconds) 2020-04-23T18:26:10Z srandon111: Riastradh, i dont' see any fight 2020-04-23T18:27:40Z srandon111: it's just a comment i didnt proceed 2020-04-23T18:28:22Z Riastradh: I recommend not trying to enter an argument about whether something you said was provocative. The correct response is `sorry, I'll try to avoid that in the future'. 2020-04-23T18:29:49Z Riastradh: https://en.wikipedia.org/wiki/Law_of_holes 2020-04-23T18:37:03Z whiteline joined #scheme 2020-04-23T18:38:08Z drakonis quit (Ping timeout: 246 seconds) 2020-04-23T18:41:14Z srandon111: Riastradh, holy crap dude that's cool i didn't know about that 2020-04-23T18:50:57Z seepel quit (Ping timeout: 250 seconds) 2020-04-23T18:55:35Z drakonis joined #scheme 2020-04-23T19:27:06Z Tirifto joined #scheme 2020-04-23T19:40:59Z nly quit (Remote host closed the connection) 2020-04-23T19:44:52Z klovett quit 2020-04-23T19:47:22Z klovett joined #scheme 2020-04-23T19:54:20Z SGASAU quit (Remote host closed the connection) 2020-04-23T19:54:50Z SGASAU joined #scheme 2020-04-23T20:05:40Z SGASAU quit (Remote host closed the connection) 2020-04-23T20:06:05Z SGASAU joined #scheme 2020-04-23T20:10:20Z hugh_marera joined #scheme 2020-04-23T20:12:09Z stultulo joined #scheme 2020-04-23T20:12:20Z f8l quit (Ping timeout: 256 seconds) 2020-04-23T20:12:32Z stultulo is now known as f8l 2020-04-23T20:22:22Z SGASAU quit (Remote host closed the connection) 2020-04-23T20:22:53Z SGASAU joined #scheme 2020-04-23T20:42:09Z f8l quit (Remote host closed the connection) 2020-04-23T20:43:30Z f8l joined #scheme 2020-04-23T20:46:50Z tryte quit (Remote host closed the connection) 2020-04-23T20:46:50Z cantstanya quit (Remote host closed the connection) 2020-04-23T20:46:50Z zooey quit (Remote host closed the connection) 2020-04-23T20:46:50Z corpix quit (Remote host closed the connection) 2020-04-23T20:47:07Z tryte joined #scheme 2020-04-23T20:47:09Z tdammers: the image caption is wonderful: "An excavator that is in a hole and has stopped digging, but perhaps not soon enough" 2020-04-23T20:47:12Z zooey joined #scheme 2020-04-23T20:48:56Z cantstanya joined #scheme 2020-04-23T20:50:22Z f8l quit (Remote host closed the connection) 2020-04-23T20:51:49Z f8l joined #scheme 2020-04-23T20:59:20Z zaifir: "I recommend not trying to enter an argument about whether something you said was provocative." Especially not with a chanop. :-/ 2020-04-23T21:01:00Z retropikzel quit (Quit: Leaving) 2020-04-23T21:07:50Z aeth: I try to keep my provocative statements to language snobbery, and only in channels where it's tolerated (e.g. #racket does not tolerate this). Of course you have to be a language snob in the channel of the language itself, not in some other language's channel. 2020-04-23T21:08:39Z aeth: As for mice, I find modern trackpads (e.g. any PC "ultrabook" clone of the Apple experience) to be OK. The only time I find myself needing a real mouse is for 3D things, like gaming (which laptops don't do well, anyway). 2020-04-23T21:32:46Z seepel joined #scheme 2020-04-23T21:38:31Z seepel quit (Ping timeout: 258 seconds) 2020-04-23T21:40:16Z keep_learning joined #scheme 2020-04-23T21:43:30Z gravicappa quit (Ping timeout: 258 seconds) 2020-04-23T21:46:08Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-23T21:48:22Z jobol quit (Quit: Leaving) 2020-04-23T21:56:32Z rgherdt joined #scheme 2020-04-23T21:57:45Z hansbauer[m] joined #scheme 2020-04-23T22:14:54Z hugh_marera quit (Read error: Connection reset by peer) 2020-04-23T22:17:26Z hugh_marera joined #scheme 2020-04-23T22:17:39Z hugh_marera quit (Remote host closed the connection) 2020-04-23T22:22:42Z SGASAU quit (Remote host closed the connection) 2020-04-23T22:23:31Z SGASAU joined #scheme 2020-04-23T22:35:36Z keep_learning joined #scheme 2020-04-23T22:41:19Z SGASAU quit (Remote host closed the connection) 2020-04-23T22:41:43Z SGASAU joined #scheme 2020-04-23T22:54:01Z SGASAU quit (Remote host closed the connection) 2020-04-23T22:54:38Z SGASAU joined #scheme 2020-04-23T23:11:05Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-23T23:12:57Z seepel joined #scheme 2020-04-23T23:40:17Z rgherdt quit (Ping timeout: 272 seconds) 2020-04-23T23:42:26Z pilne joined #scheme 2020-04-23T23:45:35Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-23T23:48:18Z Tirifto quit (Quit: Leaving.) 2020-04-24T00:04:38Z cantstanya quit (Remote host closed the connection) 2020-04-24T00:05:38Z cantstanya joined #scheme 2020-04-24T00:16:09Z seepel quit (Ping timeout: 265 seconds) 2020-04-24T00:16:33Z f8l quit (Remote host closed the connection) 2020-04-24T00:17:55Z f8l joined #scheme 2020-04-24T00:25:25Z stultulo joined #scheme 2020-04-24T00:27:45Z f8l quit (Ping timeout: 265 seconds) 2020-04-24T00:27:45Z stultulo is now known as f8l 2020-04-24T00:31:21Z f8l quit (Remote host closed the connection) 2020-04-24T00:31:45Z srandon111 quit (Quit: leaving) 2020-04-24T00:31:46Z corpix joined #scheme 2020-04-24T00:32:34Z f8l joined #scheme 2020-04-24T00:35:30Z f8l quit (Remote host closed the connection) 2020-04-24T00:36:50Z f8l joined #scheme 2020-04-24T00:50:46Z KindOne joined #scheme 2020-04-24T00:57:17Z drakonis quit (Quit: WeeChat 2.8) 2020-04-24T01:02:18Z badkins joined #scheme 2020-04-24T01:04:29Z lockywolf joined #scheme 2020-04-24T01:08:04Z daviid quit (Ping timeout: 256 seconds) 2020-04-24T01:39:27Z notzmv joined #scheme 2020-04-24T01:44:56Z badkins quit (Remote host closed the connection) 2020-04-24T01:45:40Z badkins joined #scheme 2020-04-24T01:50:24Z badkins quit (Ping timeout: 265 seconds) 2020-04-24T01:50:25Z turtleman quit (Ping timeout: 250 seconds) 2020-04-24T01:57:05Z badkins joined #scheme 2020-04-24T01:59:53Z pilne quit (Read error: Connection reset by peer) 2020-04-24T02:03:04Z daviid joined #scheme 2020-04-24T02:25:00Z SGASAU quit (Remote host closed the connection) 2020-04-24T02:25:52Z SGASAU joined #scheme 2020-04-24T02:26:32Z lockywolf_ joined #scheme 2020-04-24T02:27:50Z lockywolf_ quit (Max SendQ exceeded) 2020-04-24T02:28:34Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-24T02:28:36Z lockywolf_ joined #scheme 2020-04-24T02:29:30Z lockywolf_ quit (Remote host closed the connection) 2020-04-24T02:29:57Z lockywolf_ joined #scheme 2020-04-24T02:31:07Z lockywolf_ quit (Max SendQ exceeded) 2020-04-24T02:32:05Z lockywolf_ joined #scheme 2020-04-24T02:33:00Z lockywolf_ quit (Remote host closed the connection) 2020-04-24T02:33:55Z lockywolf_ joined #scheme 2020-04-24T02:35:09Z lockywolf_ quit (Max SendQ exceeded) 2020-04-24T02:35:49Z lockywolf_ joined #scheme 2020-04-24T02:36:59Z lockywolf_ quit (Max SendQ exceeded) 2020-04-24T02:37:28Z lockywolf_ joined #scheme 2020-04-24T02:38:49Z lockywolf_ quit (Max SendQ exceeded) 2020-04-24T02:39:37Z lockywolf_ joined #scheme 2020-04-24T02:42:20Z Fare joined #scheme 2020-04-24T02:46:19Z badkins quit (Remote host closed the connection) 2020-04-24T02:46:53Z badkins joined #scheme 2020-04-24T02:51:47Z badkins quit (Ping timeout: 265 seconds) 2020-04-24T02:54:36Z badkins joined #scheme 2020-04-24T03:06:26Z badkins quit (Remote host closed the connection) 2020-04-24T03:07:14Z badkins joined #scheme 2020-04-24T03:12:05Z badkins quit (Ping timeout: 265 seconds) 2020-04-24T03:13:20Z drakonis joined #scheme 2020-04-24T03:33:19Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-24T03:34:09Z lockywolf joined #scheme 2020-04-24T03:53:52Z torbo joined #scheme 2020-04-24T04:01:52Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-24T04:02:49Z lockywolf joined #scheme 2020-04-24T04:04:56Z lockywolf_ joined #scheme 2020-04-24T04:08:09Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-24T04:55:28Z gravicappa joined #scheme 2020-04-24T05:08:52Z badkins joined #scheme 2020-04-24T05:13:39Z badkins quit (Ping timeout: 260 seconds) 2020-04-24T05:30:18Z lritter joined #scheme 2020-04-24T05:30:50Z seepel joined #scheme 2020-04-24T05:35:28Z torbo quit (Remote host closed the connection) 2020-04-24T05:52:49Z rgherdt joined #scheme 2020-04-24T05:53:54Z seepel quit (Ping timeout: 256 seconds) 2020-04-24T05:59:00Z brendyyn joined #scheme 2020-04-24T06:01:29Z amerigo joined #scheme 2020-04-24T06:02:14Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-24T06:03:39Z lockywolf joined #scheme 2020-04-24T06:04:11Z drakonis quit (Quit: WeeChat 2.8) 2020-04-24T06:10:01Z seepel joined #scheme 2020-04-24T06:10:54Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-24T06:11:44Z lockywolf joined #scheme 2020-04-24T06:22:48Z Fare quit (Ping timeout: 256 seconds) 2020-04-24T06:29:01Z lockywolf quit (Ping timeout: 264 seconds) 2020-04-24T06:29:55Z lockywolf joined #scheme 2020-04-24T06:37:45Z ggole joined #scheme 2020-04-24T06:49:47Z Fare joined #scheme 2020-04-24T06:58:55Z brendarn joined #scheme 2020-04-24T07:00:32Z brendyyn quit (Ping timeout: 256 seconds) 2020-04-24T07:06:59Z clog quit (Ping timeout: 265 seconds) 2020-04-24T07:07:39Z clog joined #scheme 2020-04-24T07:09:28Z badkins joined #scheme 2020-04-24T07:12:16Z jobol joined #scheme 2020-04-24T07:14:17Z badkins quit (Ping timeout: 258 seconds) 2020-04-24T07:20:37Z v_m_v joined #scheme 2020-04-24T07:27:06Z xelxebar_ quit (Quit: ZNC 1.7.2+deb3 - https://znc.in) 2020-04-24T07:27:26Z xelxebar joined #scheme 2020-04-24T07:52:24Z civodul joined #scheme 2020-04-24T08:04:00Z seepel quit (Ping timeout: 256 seconds) 2020-04-24T08:09:20Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-24T08:10:15Z lockywolf joined #scheme 2020-04-24T08:18:42Z skapata quit (Quit: ฤœis!) 2020-04-24T08:18:43Z zig: who would think keyword arguments would lead to such lengthy debates? 2020-04-24T08:29:13Z eagleflo quit (Remote host closed the connection) 2020-04-24T08:51:16Z eagleflo joined #scheme 2020-04-24T08:52:02Z SGASAU quit (Remote host closed the connection) 2020-04-24T08:52:29Z SGASAU joined #scheme 2020-04-24T09:05:37Z lockywolf: I think an improvement is needed in scheme. For example, if I write (dispay "hello"), I get ERROR: undefined variable: dispay. I think that in such cases scheme interpreters should find a closes match (for simplicity, Levenstein-distance can be used, but something like word2vec would be the real solution), and use the value of it instead. 2020-04-24T09:06:57Z ecraven: non-deterministic programming is fun! 2020-04-24T09:07:13Z lockywolf: The new language can be called dwian-scheme. 2020-04-24T09:07:37Z lockywolf: "Do-what-I-actually-need-scheme" 2020-04-24T09:08:37Z ecraven: it just provides one function, (doit) 2020-04-24T09:12:49Z zig quit (Ping timeout: 264 seconds) 2020-04-24T09:13:24Z v_m_v quit (Remote host closed the connection) 2020-04-24T09:13:25Z lockywolf quit (Ping timeout: 264 seconds) 2020-04-24T09:13:51Z retropikzel joined #scheme 2020-04-24T09:13:52Z v_m_v joined #scheme 2020-04-24T09:14:14Z lockywolf joined #scheme 2020-04-24T09:14:58Z SGASAU: ecraven: I don't see anything non-deterministic there. 2020-04-24T09:16:01Z ecraven: SGASAU: depending on which of display, dispaly, dispey you have defined, you get a different result.. may non-deterministic is not technically correct, but it certainly is unexpected behaviour, I'd say 2020-04-24T09:16:48Z SGASAU quit (Remote host closed the connection) 2020-04-24T09:17:47Z SGASAU joined #scheme 2020-04-24T09:18:29Z v_m_v quit (Ping timeout: 250 seconds) 2020-04-24T09:19:32Z SGASAU: ecraven: Besides, something of the kind is implemented in Prolog environments, most notably SWI-Prolog, and it works nice there. 2020-04-24T09:20:10Z ecraven: automatically calling a function that is mis-spelled? 2020-04-24T09:20:56Z tdammers: recent versions of GHC have a crude notion of "did you mean..." in error messages 2020-04-24T09:21:39Z tdammers: when an identifier isn't in scope, they will list similar ones, including those that only differ by case, and those that are in modules from which you are importing other identifiers, but not the one you tried to use 2020-04-24T09:22:03Z tdammers: e.g., when you say httpGet, but there is an httpGET in scope, it'll say "maybe you means httpGET" 2020-04-24T09:22:24Z SGASAU: ecraven: not automatically, yet it does suggest you corrections. 2020-04-24T09:22:42Z SGASAU: GHC has something of the kind too. 2020-04-24T09:22:48Z tdammers: or if you said httpGET, but you've only imported httpPOST from Network.Acme.Http, it'll say "consider adding httpGET to the import list for Network.Acme.Http" 2020-04-24T09:23:15Z ecraven: SGASAU: that's completely ok and nice, imho, just automatically *calling* something else is not 2020-04-24T09:23:22Z tdammers: it won't proactively rewrite your code as part of the compilation though, it just makes suggestions in its error messages 2020-04-24T09:23:24Z tdammers: still very useful though 2020-04-24T09:23:43Z tdammers: actually going ahead and "fixing" your code for you, that would be evil 2020-04-24T09:23:52Z SGASAU: ecraven: what is written is not what is meant. 2020-04-24T09:24:34Z ecraven: tdammers: that's what I was opposing ;) 2020-04-24T09:24:43Z tdammers: ecraven: yeah, and I'm with you here 2020-04-24T09:25:08Z SGASAU: ecraven: original complaint goes about interactive use and points to inconvenience. The suggestion may be right or may be wrong, that is discussable. 2020-04-24T09:25:51Z lockywolf quit (Ping timeout: 250 seconds) 2020-04-24T09:26:07Z SGASAU: There exists similar thing in disambiguation. 2020-04-24T09:26:35Z SGASAU: Stems from really old programming languages from 70s. 2020-04-24T09:26:38Z tdammers: the problem with "do what I meant, not what I wrote" is when the heuristic is wrong 2020-04-24T09:26:56Z lockywolf joined #scheme 2020-04-24T09:27:31Z tdammers: and when that happens, the cost of working around that is usually so large that the time you save in the cases where the computer guesses right doesn't weigh up 2020-04-24T09:27:33Z SGASAU: tdammers: when there's additional level of "non-determinism", this may be not a problem either. 2020-04-24T09:28:43Z tdammers: right. when the whole thing is nondeterministic anyway, this kind of "autocorrection" is just another uncertainty 2020-04-24T09:28:54Z tdammers: the question is, though, what use such a system would be 2020-04-24T09:29:17Z tdammers: you can't really predict what it'll do in a reliable fashion, so what would you use it for? 2020-04-24T09:29:25Z SGASAU: I think that you miss the point here. 2020-04-24T09:29:45Z SGASAU: We have the original complaint. 2020-04-24T09:29:55Z SGASAU: "I think an improvement is needed in scheme." 2020-04-24T09:30:04Z tdammers: maybe so. 2020-04-24T09:30:17Z tdammers: I'm not arguing against htat 2020-04-24T09:30:24Z SGASAU: We have examples of such improvements. 2020-04-24T09:30:33Z tdammers: I just don't think introducing nondeterminism into the interpreter is the solution 2020-04-24T09:30:51Z tdammers: what needs to be improved is not the execution semantics, but the error reporting 2020-04-24T09:31:16Z tdammers: "dispay" is still an error; but the interpreter/compiler could be more intelligent about helping you figure out the "why" 2020-04-24T09:31:31Z SGASAU: The top off my head is SWI-Prolog, the top off your head is GHC. Nothing is non-deterministic there. 2020-04-24T09:31:49Z SGASAU: Fully automatic correction is most likely not what originally meant. 2020-04-24T09:31:56Z tdammers: exactly 2020-04-24T09:31:57Z SGASAU: Most likely it was wrong guess. 2020-04-24T09:32:06Z SGASAU: Or oversight, whatever you call it. 2020-04-24T09:32:31Z tdammers: it's like how automatically running T9-style correction over hand-written prose tends to lead to hilariously wrong results 2020-04-24T09:33:00Z tdammers: doesn't mean autocorrection is useless, it's just not viable as a fully automatic correction, it needs to stop at *suggesting* things 2020-04-24T09:33:15Z SGASAU still needs to find out how to turn the bloody thing off. 2020-04-24T09:33:23Z tdammers: well yeah 2020-04-24T09:33:25Z tdammers: I have 2020-04-24T09:33:33Z SGASAU: This Chinese thing just doesn't work for Indo-European languages. 2020-04-24T09:33:49Z SGASAU: With exception of English, probably. 2020-04-24T09:33:52Z tdammers: even the American thing fails horribly when presented with more than one language 2020-04-24T09:34:24Z tdammers: and given that I routinely use 3 different languages on a daily basis, an autocorrection system that can't cope with that is simply not useful to me at all 2020-04-24T09:35:25Z tdammers: I also find it kind of a shitty decision to have a system-wide language setting. Just because I want my OS to default to English doesn't mean I want the shitty English translations of my Dutch online banking app. But there is no way to tell the banking app to be Dutch while the OS is English 2020-04-24T09:35:49Z SGASAU: I have no clue how Germans deal with it. German is not that inflected, yet it uses its synthetic features quite actively. 2020-04-24T09:36:55Z tdammers: it works rather well, from what I've seen. German does inflect things a lot, but most of the inflections are fairly trivial, so you just add all the different forms to the dictionary 2020-04-24T09:36:59Z SGASAU: tdammers: if it is web app, then try to configure Accept-Languages in your browser. 2020-04-24T09:37:54Z SGASAU: (Or whatever it is called properly.) 2020-04-24T09:38:37Z v_m_v joined #scheme 2020-04-24T09:39:43Z SGASAU: tdammers: adding a form for every suffix and prefix sounds bad enough, even if you don't multiply that by four or five for other cases. 2020-04-24T09:40:32Z wasamasa: lockywolf: why would you put that in the standard? 2020-04-24T09:40:50Z wasamasa: lockywolf: sure, it makes sense for implementations to try giving you useful error messages, but mandating them isn't the way to go 2020-04-24T09:41:17Z wasamasa: lockywolf: a far more useful thing is being clear about what is an error, what constitutes implementation-defined behavior and undefined behavior 2020-04-24T09:41:25Z tdammers: oh, I have. I'm mostly fine on the web (except that many websites ignore the Accept-Language header and instead insist that just because my IP address geolocates to Netherlands, I don't speak any languages but Dutch); Android however is kind of bad 2020-04-24T09:42:25Z SGASAU: "If I had asked people what they wanted, they would have said faster horses." - quote of the day for #scheme. 2020-04-24T09:45:13Z SGASAU: tdammers: this is really weird behaviour for Western Europe. 2020-04-24T09:46:42Z SGASAU: No idea why they would even come to that idea, given the size of countries and non-uniformity of population. 2020-04-24T09:46:53Z tdammers: it's equally weird almost anywhere in the world 2020-04-24T09:47:04Z tdammers: multilingualism is the norm, not the exception 2020-04-24T09:47:08Z SGASAU: Not that much, actually. 2020-04-24T09:47:18Z SGASAU: Last time I heard ~10% of Nuremberg were Russians and Turks. 2020-04-24T09:48:22Z SGASAU: A city of corresponding size in Russia, say Penza has, IIRC, less than 3% of non-Russians. 2020-04-24T09:49:55Z tdammers: sure. but that's rather the exception, globally speaking 2020-04-24T09:50:27Z SGASAU: Maybe. I'd say that a research is needed. 2020-04-24T09:50:58Z SGASAU: China and almost the whole South America come to mind. 2020-04-24T09:51:44Z tdammers: china is very much not a linguistic monoculture. south america is dominated by spanish and portuguese, but there are many local languages, most of them without official status 2020-04-24T09:51:52Z SGASAU: In any case, not Western Europe, where you have places like Netherlands, Belgium and Switzerland. 2020-04-24T09:52:42Z SGASAU: Or Catalonia. :) 2020-04-24T09:53:35Z SGASAU: What I mean is that there exist places with significant fraction of population speaking not the official language or primary official language. 2020-04-24T09:53:42Z tdammers: yes 2020-04-24T09:54:30Z tdammers: but the "monoculture assumption" in modern software isn't informed by research or facts or even usability; the main reason it is so readily applied is because it makes software development massively simpler while still providing almost the same commercial benefits 2020-04-24T09:55:00Z SGASAU: It is somewhat strange to show me search results in German when the query was in English or in Russian. 2020-04-24T09:55:00Z tdammers: in other words, simplifying the world to a "one country, one language" model is good enough for commercial purposes 2020-04-24T09:55:04Z SGASAU: Or vice versa. 2020-04-24T09:55:07Z tdammers: right 2020-04-24T09:55:27Z tdammers: but the reason those search results are collected for you is so that you click on some of them and look at the ads on them 2020-04-24T09:56:15Z tdammers: so if you're in Russia, then the most sensible thing to do is show you Russian ads, because Russia is where you will be spending your money 2020-04-24T09:56:41Z tdammers: if you don't speak Russian, then you're not interesting enough for Russian advertisers, so it's not commercially interesting to cater for your needs 2020-04-24T09:57:03Z SGASAU wonders if people understand that how Leninist they sound sometimes... 2020-04-24T09:57:45Z tdammers: oh, don't worry, politics wise I'm pretty far on the socialist/anarchist side of things, I'm very much aware of that 2020-04-24T09:57:58Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-24T09:58:24Z aeth: joke's on them, I block ads 2020-04-24T09:58:30Z SGASAU: The advertisement argument is funny given distribution of some languages... 2020-04-24T09:58:37Z tdammers: aeth: then you're not interesting at all 2020-04-24T09:58:54Z SGASAU: English being not the only one. 2020-04-24T09:59:06Z aeth: I'm still waiting for a website to reject me for blocking ads, but besides a few random news sites here or there, none has. And they're not important since there's always 20 articles reporting on the exact same story with pretty much the same wording 2020-04-24T09:59:07Z tdammers: SGASAU: follow the money. Catalonia has plenty of billboard ads and such in Catalan. why? because in Catalonia, the elite speaks Catalan too 2020-04-24T09:59:07Z lockywolf joined #scheme 2020-04-24T09:59:56Z aeth: tdammers: if the elite spoke Klingon, then most ads would still be in the majority language, except maybe the ads for Rolexes 2020-04-24T09:59:58Z SGASAU: I wonder, if they distinguiosh between New Zealander and South Africaner English... 2020-04-24T10:01:43Z tdammers: aeth: it's not just that you need to match the language of your audience. that audience often understands more than one language, and your language choice has social implications. 2020-04-24T10:02:52Z aeth: Yes, you could see this in the Roman Empire, too, where there were many different languages depending on the context and location: Greek, Classical Latin, Vulgar Latin, the local languages, etc. 2020-04-24T10:02:54Z tdammers: for example, almost every speaker of catalan also speaks castilian spanish; but the two languages have different associations, because castilian is the language of the central spanish government, whereas catalan instills local patriotism/pride. those who speak catalan in catalonia are "one of us" 2020-04-24T10:03:53Z SGASAU knows of at least one person who speaks only Russian and Catalan but not Spanish. 2020-04-24T10:04:13Z tdammers: if you speak limburgian in limburg, that also makes you "one of us", but the "us" here doesn't include the elite or any other group of desirable social status 2020-04-24T10:04:38Z aeth: right, most places have many languages 2020-04-24T10:04:38Z tdammers: the educated with a big paycheck and all the social status speak standard dutch, maybe with a bit of an accent 2020-04-24T10:04:59Z tdammers: so running ads in limburgian in limburg doesn't go anywhere near as well as running ads in catalan in catalonia 2020-04-24T10:05:02Z SGASAU knows of at least one person who choses speaking Italian when given choice between German, Spanish and Italian. 2020-04-24T10:05:58Z SGASAU: Nationalism is funny sometimes. 2020-04-24T10:06:14Z tdammers: when I look at my own social surroundings, the majority of people I interact with speak at least two languages, and many do so on a regular basis 2020-04-24T10:06:57Z aeth: where? 2020-04-24T10:07:01Z tdammers: Netherlands 2020-04-24T10:07:26Z tdammers: at least if your income is above median, you're essentially expected to be at least somewhat fluent in English 2020-04-24T10:07:48Z SGASAU: aeth: I'd be cautious at claims like that. It applies to Western Europe, certainly, but not univerally. 2020-04-24T10:08:26Z wasamasa: yeah, good luck with that in germany 2020-04-24T10:08:29Z aeth: SGASAU: afaik most places have a recently imposed national language and regional languages/dialects at a minimum, and possibly a lingua franca on top of that. 2020-04-24T10:08:32Z tdammers: multilingualism is even more common in India, China, and most of Africa 2020-04-24T10:08:42Z wasamasa: my relatives had more luck with russian than english on their travels 2020-04-24T10:09:45Z tdammers: the problem with English in Germany is that most Germans have learned "English" in school, and should theoretically be able to communicate in it, but they lack the exposure to actually use the language effectively 2020-04-24T10:10:30Z SGASAU: tdammers: it's not such a big problem as in other countries. 2020-04-24T10:10:35Z tdammers: and especially East Germany still has lots of people who have never learned English at all, because while English has been a mandatory subject in the West since WWII, the East, being under Russian influence, had mandatory Russian instead 2020-04-24T10:10:54Z epony quit (Read error: Connection reset by peer) 2020-04-24T10:11:42Z SGASAU: aeth: you're wrong in the context of Western and Central Europe. 2020-04-24T10:12:15Z tdammers: case in point, most Western European countries do have a majority language 2020-04-24T10:12:18Z SGASAU: aeth: there're at least four countries that officially suppress Russian. 2020-04-24T10:12:30Z SGASAU: Despite prevalence. 2020-04-24T10:12:57Z tdammers: hysterical raisins 2020-04-24T10:13:14Z tdammers: the English also actively suppressed French after they had kicked the Normans out 2020-04-24T10:14:08Z SGASAU: Hm. That's not what I knew. References? 2020-04-24T10:15:08Z lockywolf: this chat smells of kommunism 2020-04-24T10:15:15Z SGASAU: (My understanding is that after that century-long period of wars they just diverged in the language.) 2020-04-24T10:15:52Z wasamasa: lockywolf: funny thing to say in a channel for a language mostly designed by community consensus 2020-04-24T10:16:10Z lockywolf: kommunity konsensus you meant? 2020-04-24T10:16:20Z wasamasa rolls eyes 2020-04-24T10:16:37Z lockywolf is in a mood of making stupid jokes 2020-04-24T10:17:13Z lockywolf: the original suggestion was also a joke 2020-04-24T10:17:14Z SGASAU: lockywolf: A specter is haunting Europe. :p 2020-04-24T10:18:11Z lockywolf: Specter is a Python testing framework inspired from RSpec and Jasmine. The library was created out of a desire to have a relatively flexible Python testing framework that adopted a more code-centric approach to BDD. Specter is open-source and is available on GitHub. 2020-04-24T10:18:13Z epony joined #scheme 2020-04-24T10:18:13Z tdammers: SGASAU: https://en.wikipedia.org/wiki/Great_Vowel_Shift#Causes 2020-04-24T10:18:15Z lockywolf: indeed 2020-04-24T10:18:27Z aeth: I thought #lisp was for communist lisp? This is #scheme 2020-04-24T10:19:37Z SGASAU: aeth: you realise that CL and Scheme were both pushed by the same people behind, don't you? ;) 2020-04-24T10:20:09Z lockywolf: true communists program in Delphi 2020-04-24T10:20:23Z SGASAU: tdammers: dubious claims, as for me. 2020-04-24T10:20:31Z aeth: SGASAU: CL, Scheme, and Java 2020-04-24T10:20:52Z lockywolf: I think the CIS is the last standing bastion of Delphi 2020-04-24T10:21:21Z tdammers: SGASAU: oh yeah, it's just one of several competing hypotheses 2020-04-24T10:21:33Z tdammers: SGASAU: the English aristocracy did stop speaking french at the time though 2020-04-24T10:21:51Z SGASAU: tdammers: e.g. the fall of reduced vowels occurred at approximately the same time across a lot large region. 2020-04-24T10:23:19Z tdammers: so did the demise of French as the lingua franca of the aristocracy 2020-04-24T10:24:00Z v_m_v quit (Remote host closed the connection) 2020-04-24T10:24:28Z v_m_v joined #scheme 2020-04-24T10:24:44Z SGASAU: tdammers: you can check distances between Lubeck, Niลก, Leningrad and Odessa. 2020-04-24T10:26:18Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-24T10:27:19Z v_m_v quit (Read error: No route to host) 2020-04-24T10:27:27Z SGASAU: AFAIK, French was used only in the region of modern France and England back in time. 2020-04-24T10:27:30Z v_m_v joined #scheme 2020-04-24T10:27:45Z SGASAU: Maybe, excluding Wales and Scottland even. 2020-04-24T10:28:33Z SGASAU: It may be that French wasn't a (reasonably) uniform language either. 2020-04-24T10:29:56Z SGASAU: It could be that "English French" spoke significantly different dialect, so when they were expelled, different dialect came along. 2020-04-24T10:49:14Z brendarn quit (Ping timeout: 240 seconds) 2020-04-24T10:56:18Z v_m_v quit (Remote host closed the connection) 2020-04-24T10:57:09Z SGASAU quit (Remote host closed the connection) 2020-04-24T10:57:35Z SGASAU joined #scheme 2020-04-24T10:57:49Z corpix quit (Quit: corpix) 2020-04-24T11:01:10Z v_m_v joined #scheme 2020-04-24T11:03:21Z v_m_v quit (Remote host closed the connection) 2020-04-24T11:05:38Z srandon111 joined #scheme 2020-04-24T11:11:22Z badkins joined #scheme 2020-04-24T11:16:10Z badkins quit (Ping timeout: 256 seconds) 2020-04-24T11:23:46Z lockywolf joined #scheme 2020-04-24T11:32:51Z SGASAU quit (Remote host closed the connection) 2020-04-24T11:33:22Z SGASAU joined #scheme 2020-04-24T11:41:14Z amerigo quit (Quit: Connection closed for inactivity) 2020-04-24T11:43:10Z valjda joined #scheme 2020-04-24T11:50:07Z v_m_v joined #scheme 2020-04-24T11:56:33Z lockywolf_ joined #scheme 2020-04-24T11:58:54Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-24T12:15:03Z rgherdt quit (Ping timeout: 265 seconds) 2020-04-24T12:33:54Z Fare quit (Ping timeout: 240 seconds) 2020-04-24T12:45:39Z zig joined #scheme 2020-04-24T12:48:38Z v_m_v quit (Remote host closed the connection) 2020-04-24T12:49:05Z v_m_v joined #scheme 2020-04-24T12:50:58Z mdhughes: lockywolf: Going back to your DWIM, IBM's Jikes compiler for Java does exactly that, it provides reasonable "did you mean: x" for any typos. But that kind of error-handling's less common now when most Java is written in giant IDEs that complete all text and highlight any errors. 2020-04-24T12:52:27Z mdhughes: Probably Scheme is written about evenly in Racket's IDE, which could do that, emacs or edwin which could do that but has a 53-page doc to explain how to configure it, and plain text editors. 2020-04-24T12:53:04Z mdhughes: So there'd be 1/3-2/3 of Schemers who could benefit from better error messages. 2020-04-24T12:53:50Z mdhughes: But personally I'd just like "expression not closed at line x" to actually be started at line x, and not anywhere in the next 50 lines. 2020-04-24T12:54:01Z v_m_v quit (Ping timeout: 265 seconds) 2020-04-24T12:57:27Z Fare joined #scheme 2020-04-24T12:59:02Z v_m_v joined #scheme 2020-04-24T13:00:53Z v_m_v quit (Remote host closed the connection) 2020-04-24T13:12:28Z badkins joined #scheme 2020-04-24T13:12:35Z JessiWilde joined #scheme 2020-04-24T13:12:50Z badkins quit (Remote host closed the connection) 2020-04-24T13:13:00Z badkins joined #scheme 2020-04-24T13:14:51Z JessiWilde quit (Client Quit) 2020-04-24T13:15:46Z lockywolf_ quit (Ping timeout: 258 seconds) 2020-04-24T13:16:09Z lockywolf joined #scheme 2020-04-24T13:18:02Z lockywolf_ joined #scheme 2020-04-24T13:20:50Z SGASAU` joined #scheme 2020-04-24T13:21:05Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-24T13:21:48Z klovett quit (Remote host closed the connection) 2020-04-24T13:21:50Z wasamasa: that's a built-in emacs feature, M-x check-parens 2020-04-24T13:24:06Z nly joined #scheme 2020-04-24T13:24:35Z SGASAU quit (Ping timeout: 260 seconds) 2020-04-24T13:25:19Z mdhughes: Which I don't want to type every time I test-run a script. 2020-04-24T13:25:33Z lockywolf__ joined #scheme 2020-04-24T13:26:17Z mdhughes: (and I can't stand working in emacs, but that's actually the lesser problem in this case) 2020-04-24T13:27:27Z zig: I tired of emacs too 2020-04-24T13:28:22Z lockywolf_ quit (Ping timeout: 256 seconds) 2020-04-24T13:28:39Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-24T13:29:06Z SGASAU joined #scheme 2020-04-24T13:31:47Z zig: auto-correction is not a good use case for word2vec, maybe a char2vec would work, but I found none that does that. 2020-04-24T13:34:09Z lockywolf__ quit (Ping timeout: 250 seconds) 2020-04-24T13:35:03Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-24T13:36:12Z klovett joined #scheme 2020-04-24T13:41:42Z valjda quit (Quit: WeeChat 2.8) 2020-04-24T13:44:14Z gravicappa quit (Ping timeout: 240 seconds) 2020-04-24T13:47:33Z heisenberg-25 joined #scheme 2020-04-24T13:49:17Z turtleman joined #scheme 2020-04-24T13:51:54Z corpix joined #scheme 2020-04-24T13:52:25Z SGASAU quit (Remote host closed the connection) 2020-04-24T13:52:51Z SGASAU joined #scheme 2020-04-24T13:52:51Z gravicappa joined #scheme 2020-04-24T13:55:14Z klovett quit (Ping timeout: 240 seconds) 2020-04-24T13:55:57Z badkins quit (Remote host closed the connection) 2020-04-24T13:57:13Z SGASAU quit (Remote host closed the connection) 2020-04-24T13:57:44Z SGASAU joined #scheme 2020-04-24T14:05:34Z SGASAU quit (Remote host closed the connection) 2020-04-24T14:06:57Z SGASAU joined #scheme 2020-04-24T14:19:42Z heisenberg-25 quit (Ping timeout: 256 seconds) 2020-04-24T14:34:30Z nerdypepper: hiya, newbie to scheme here, what is the difference between (map ...) and (apply map ...)? 2020-04-24T14:34:38Z nerdypepper: i am looking specifically at: https://rosettacode.org/wiki/Matrix_multiplication#Scheme 2020-04-24T14:39:01Z gwatt: nerdypepper: apply takes a function and a list, and calls the function as if the elements of the list were arguments to the function 2020-04-24T14:39:04Z klovett joined #scheme 2020-04-24T14:39:16Z gwatt: like, (apply + (list 1 2 3 4)) => (+ 1 2 3 4) 2020-04-24T14:40:23Z gwatt: map takes a function and a list, and applies the function to each element of the list, returning a new list of the resulting values 2020-04-24T14:41:56Z nerdypepper: ahhh i get it now, thats gwatt 2020-04-24T14:46:31Z ecraven: is there a re-implementation of glm in any Scheme? (the linear algebra library) 2020-04-24T14:49:35Z lockywolf__ joined #scheme 2020-04-24T14:50:22Z lockywolf__ quit (Max SendQ exceeded) 2020-04-24T14:51:03Z lockywolf__ joined #scheme 2020-04-24T14:51:42Z badkins joined #scheme 2020-04-24T14:51:53Z lockywolf__ quit (Max SendQ exceeded) 2020-04-24T14:52:19Z lockywolf__ joined #scheme 2020-04-24T14:53:07Z lockywolf__ quit (Max SendQ exceeded) 2020-04-24T14:53:36Z lockywolf__ joined #scheme 2020-04-24T15:03:51Z zig quit (Ping timeout: 250 seconds) 2020-04-24T15:16:36Z acarrico quit (Ping timeout: 256 seconds) 2020-04-24T15:17:35Z retropikzel quit (Quit: Leaving) 2020-04-24T15:18:19Z lockywolf__: eh... writing literate-style code is ultra mind-boggling 2020-04-24T15:18:50Z lockywolf__: I think with language any other than scheme it would have been totally impossible. 2020-04-24T15:22:49Z wasamasa: knuth would like to have a word with you 2020-04-24T15:27:57Z lockywolf__: wasamasa, have you read the actual source of the TeX? 2020-04-24T15:28:30Z lockywolf__: how deeply nested <> includes are typical? 2020-04-24T15:28:35Z mdhughes: Scheme doesn't even have docstrings, let alone web. 2020-04-24T15:28:35Z wasamasa: nah, just a bit of the texbook and an interview or two :P 2020-04-24T15:29:04Z wasamasa: still, claiming something to be impossible when it was invented without scheme just fine strikes me as childish 2020-04-24T15:29:04Z lockywolf__: wasamasa, you interviewed Knuth himself? 2020-04-24T15:29:40Z lockywolf__: mdhughes, I'm using ob-scheme 2020-04-24T15:29:54Z lockywolf__: it's kinda or, just creates monsters 2020-04-24T15:29:58Z lockywolf__: *ok 2020-04-24T15:30:05Z wasamasa: I'm speaking of this book: http://www.codersatwork.com/ 2020-04-24T15:30:38Z mdhughes: lockywolf: I dunno what that is, and the ducks tell me nothing? 2020-04-24T15:32:12Z wasamasa: it's part of your favorite text editor 2020-04-24T15:32:31Z wasamasa: ob-scheme.el 2020-04-24T15:32:37Z gwatt: mdhughes: actually, there is a web for scheme! https://github.com/arcfide/ChezWEB 2020-04-24T15:32:51Z lockywolf__: I actually lied. 2020-04-24T15:33:04Z lockywolf__: ob-scheme is not very good 2020-04-24T15:33:13Z wasamasa: somehow I'm not surprised 2020-04-24T15:33:31Z lockywolf__: I just use org-shell, and wrap scheme into cat <<"EOF" (scheme) EOF 2020-04-24T15:34:01Z lockywolf__: or use #!/usr/bin/chibi-scheme as a :shebang 2020-04-24T15:34:55Z mdhughes: gwatt: That's quite interesting! I've already got my own fake-docstring system, but it's not at all a full web. 2020-04-24T15:35:36Z lockywolf__: I mean, yeah, it is kinda childish. But I'm truly childishly amazed how fun it turned out to be. 2020-04-24T15:36:33Z lockywolf__: org-babel+ob-scheme+ob-shell permit quite a lot of creepy code generation and substitution 2020-04-24T15:43:35Z skapata joined #scheme 2020-04-24T16:10:50Z drakonis joined #scheme 2020-04-24T16:12:47Z zaifir tries to imagine "creepy code generation". 2020-04-24T16:13:46Z badkins quit (Remote host closed the connection) 2020-04-24T16:16:12Z retropikzel joined #scheme 2020-04-24T16:16:19Z X-Scale` joined #scheme 2020-04-24T16:17:04Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-24T16:17:05Z X-Scale` is now known as X-Scale 2020-04-24T16:21:55Z badkins joined #scheme 2020-04-24T16:22:15Z zig joined #scheme 2020-04-24T16:26:41Z badkins quit (Ping timeout: 265 seconds) 2020-04-24T16:30:22Z drakonis quit (Quit: WeeChat 2.8) 2020-04-24T16:37:55Z TCZ joined #scheme 2020-04-24T16:42:47Z acarrico joined #scheme 2020-04-24T16:45:29Z DKordic: Knuth!? Appeal to Authority (again)!! WEB (and anything similar) will dilute those pseudo-executables so you can stir them more easily. 2020-04-24T16:51:01Z motersen joined #scheme 2020-04-24T16:54:53Z TCZ quit (Quit: Leaving) 2020-04-24T16:58:33Z smazga joined #scheme 2020-04-24T16:59:28Z smazga quit (Client Quit) 2020-04-24T17:04:57Z terpri quit (Quit: Leaving) 2020-04-24T17:07:40Z acarrico quit (Ping timeout: 256 seconds) 2020-04-24T17:14:20Z acarrico joined #scheme 2020-04-24T17:19:34Z drakonis joined #scheme 2020-04-24T17:23:14Z sz0 joined #scheme 2020-04-24T17:37:25Z hugh_marera joined #scheme 2020-04-24T17:40:22Z lritter quit (Quit: Leaving) 2020-04-24T17:42:27Z acarrico1 joined #scheme 2020-04-24T17:43:35Z acarrico quit (Ping timeout: 260 seconds) 2020-04-24T17:45:41Z terpri joined #scheme 2020-04-24T17:47:27Z motersen quit (Ping timeout: 252 seconds) 2020-04-24T17:55:41Z lritter joined #scheme 2020-04-24T18:03:10Z ravndal quit (Quit: WeeChat 2.8) 2020-04-24T18:23:32Z badkins joined #scheme 2020-04-24T18:27:36Z ravndal joined #scheme 2020-04-24T18:27:54Z badkins quit (Ping timeout: 256 seconds) 2020-04-24T18:29:26Z even4void joined #scheme 2020-04-24T18:35:44Z even4void quit (Quit: WeeChat 2.8) 2020-04-24T18:41:22Z zig: Web got source view correctly, until minified javascript. 2020-04-24T18:48:18Z notzmv quit (Ping timeout: 265 seconds) 2020-04-24T18:50:11Z rgherdt joined #scheme 2020-04-24T18:52:53Z lritter quit (Quit: Leaving) 2020-04-24T19:21:23Z hugh_marera quit (Quit: hugh_marera) 2020-04-24T19:24:55Z lucasb joined #scheme 2020-04-24T19:33:29Z izh_ joined #scheme 2020-04-24T19:43:55Z badkins joined #scheme 2020-04-24T19:50:44Z pilne joined #scheme 2020-04-24T19:52:17Z srandon111: guys i need a small database (around 2k of records with three fields approx) in my application... i was considering sqlite or a simple json fiile... then i thought... why not simply using s-expressions... do you think it is a stupid idea? 2020-04-24T19:52:26Z srandon111: i mean is it something that it is done or not? 2020-04-24T19:53:08Z Riastradh: If you want fast lookup and insertion, you should use sqlite3. If you want easy interoperability with other systems, you should use json. If you want the quickest way to do it in Scheme, you might reasonably use S-expressions. 2020-04-24T19:53:21Z pjb: srandon111: it depends on the features of the database you want. 2020-04-24T19:53:33Z srandon111: pjb, i am not concerned with ACID and stuff 2020-04-24T19:53:37Z pjb: https://en.wikipedia.org/wiki/ACID 2020-04-24T19:53:39Z srandon111: it should be a local db... 2020-04-24T19:53:46Z srandon111: pjb, i anticipated you 2020-04-24T19:53:56Z pjb: srandon111: 2k of records, is almost not a database. Just a list. Or a tree. 2020-04-24T19:54:16Z pjb: Perhaps a hash-table if it's accessed often. 2020-04-24T19:54:41Z srandon111: pjb, that's what i was thinking about... 2020-04-24T19:54:53Z srandon111: pjb it's a sort of app i want to use to store myu knowledge base... 2020-04-24T19:55:21Z srandon111: i mean i have cheatsheet files in a dir called ~/.cheatsheets and then i was thinking at a db called ~/.kb.scm 2020-04-24T19:55:49Z wasamasa: the first thing you write in PCL is such a database 2020-04-24T19:55:50Z srandon111: basically kb.scm has the following data... "id of cheatsheet", "path inside the cheatsheet directory", "tag1", "tag2", ... 2020-04-24T19:56:00Z srandon111: wasamasa, what's PCL ? 2020-04-24T19:56:06Z srandon111: practical common lisp? 2020-04-24T19:56:13Z wasamasa: http://www.gigamonkeys.com/book/practical-a-simple-database.html 2020-04-24T19:56:26Z srandon111: wasamasa, anyway i have to ask you a favor... 2020-04-24T19:56:27Z pjb: srandon111: see for example my sexp-file-contents https://github.com/informatimago/lisp/blob/master/common-lisp/cesarum/file.lisp#L88 2020-04-24T19:56:52Z srandon111: thanks phb 2020-04-24T19:56:53Z badkins quit (Remote host closed the connection) 2020-04-24T19:56:55Z rgherdt quit (Ping timeout: 272 seconds) 2020-04-24T19:56:55Z srandon111: *pjb 2020-04-24T19:57:31Z srandon111: wasamasa, whenever somebody cross-postes questions to different channels (i know there is people that does this), please don't cross-post answers... it's a bad netiquette 2020-04-24T19:57:37Z pjb: srandon111: 2K records, that must be about 256 KB, probably less. Reading or writing the whole will probably even be less I/O than using a database system. 2020-04-24T19:57:38Z badkins joined #scheme 2020-04-24T19:57:56Z srandon111: pjb, that's why i was considering a plain file 2020-04-24T19:58:15Z srandon111: pjb, do you think my idea is fine, or the design is just stupid ? 2020-04-24T19:58:17Z pjb: If you're sure it won't grow, that's definitely a good plan. 2020-04-24T19:58:24Z Riastradh: srandon111: FYI: Would recommend you write to ~/.kb.scm.tmp (and maybe fsync it) and then rename to ~/.kb.scm when you do updates. 2020-04-24T19:58:38Z srandon111: Riastradh, thanks! 2020-04-24T19:58:42Z pjb: If you're sure you won't need parallel access from different processes too. 2020-04-24T19:58:43Z srandon111: pjb, it will grow... 2020-04-24T19:58:47Z srandon111: pjb, no 2020-04-24T19:58:53Z srandon111: no need for parallel accesses 2020-04-24T20:02:39Z badkins quit (Ping timeout: 260 seconds) 2020-04-24T20:03:21Z wasamasa: srandon111: that's a funny way of redefining the problem, but sure, stop cross-posting questions and you won't get answers from several channels :P 2020-04-24T20:12:58Z izh_ quit (Quit: Leaving) 2020-04-24T20:14:23Z badkins joined #scheme 2020-04-24T20:15:51Z gwatt: wasamasa: didn't you know? asking the same question over and over is fine, but getting the same answer over and over is a problem 2020-04-24T20:29:28Z X-Scale` joined #scheme 2020-04-24T20:30:18Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-24T20:30:21Z X-Scale` is now known as X-Scale 2020-04-24T20:35:13Z srandon111: wasamasa, ahahah :D just joking... i appreciate your reply and getting the joke 2020-04-24T20:39:14Z ggole quit (Quit: Leaving) 2020-04-24T20:45:26Z v_m_v joined #scheme 2020-04-24T20:45:32Z v_m_v quit (Remote host closed the connection) 2020-04-24T20:45:44Z v_m_v joined #scheme 2020-04-24T20:49:37Z andreycizov joined #scheme 2020-04-24T21:14:24Z notzmv joined #scheme 2020-04-24T21:15:35Z jobol quit (Quit: Leaving) 2020-04-24T21:20:58Z gravicappa quit (Ping timeout: 256 seconds) 2020-04-24T21:26:29Z emacsomancer quit (Ping timeout: 250 seconds) 2020-04-24T21:30:33Z notzmv is now known as Miffo 2020-04-24T21:30:57Z Miffo is now known as notzmv 2020-04-24T21:43:04Z turtleman quit (Ping timeout: 256 seconds) 2020-04-24T21:51:24Z jayde joined #scheme 2020-04-24T21:51:34Z rgherdt joined #scheme 2020-04-24T21:58:30Z emacsomancer joined #scheme 2020-04-24T22:11:39Z v_m_v quit (Remote host closed the connection) 2020-04-24T22:16:50Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-24T22:17:15Z jayde quit (Ping timeout: 240 seconds) 2020-04-24T22:18:12Z v_m_v joined #scheme 2020-04-24T22:18:49Z TCZ joined #scheme 2020-04-24T22:19:26Z zmt00 quit (Quit: Leaving) 2020-04-24T22:23:44Z turtleman joined #scheme 2020-04-24T22:25:16Z zmt00 joined #scheme 2020-04-24T22:26:15Z ArthurStrong joined #scheme 2020-04-24T22:39:00Z jayde joined #scheme 2020-04-24T22:39:14Z v_m_v quit (Remote host closed the connection) 2020-04-24T22:42:50Z v_m_v joined #scheme 2020-04-24T22:43:25Z turtleman quit (Ping timeout: 264 seconds) 2020-04-24T22:45:29Z badkins quit (Remote host closed the connection) 2020-04-24T22:51:12Z v_m_v quit (Remote host closed the connection) 2020-04-24T22:51:37Z skapata quit (Remote host closed the connection) 2020-04-24T22:56:35Z badkins joined #scheme 2020-04-24T22:59:45Z SGASAU quit (Remote host closed the connection) 2020-04-24T23:00:09Z SGASAU joined #scheme 2020-04-24T23:13:20Z TCZ quit (Quit: Leaving) 2020-04-24T23:16:51Z ArthurStrong quit (Quit: leaving) 2020-04-24T23:22:58Z SGASAU quit (Remote host closed the connection) 2020-04-24T23:23:28Z SGASAU joined #scheme 2020-04-24T23:29:47Z turtleman joined #scheme 2020-04-24T23:36:19Z zaifir quit (Quit: Eadem mutata resurgo.) 2020-04-24T23:47:27Z rgherdt quit (Ping timeout: 272 seconds) 2020-04-24T23:48:46Z brendarn joined #scheme 2020-04-24T23:52:00Z keep_learning joined #scheme 2020-04-24T23:55:45Z TCZ joined #scheme 2020-04-25T00:19:24Z TCZ quit (Quit: Leaving) 2020-04-25T00:38:23Z lockywolf joined #scheme 2020-04-25T00:38:40Z raingloom joined #scheme 2020-04-25T00:38:41Z badkins quit (Remote host closed the connection) 2020-04-25T00:38:59Z pilne_ joined #scheme 2020-04-25T00:40:03Z badkins joined #scheme 2020-04-25T00:41:43Z pilne quit (Ping timeout: 260 seconds) 2020-04-25T00:43:16Z lockywolf__ quit (Ping timeout: 256 seconds) 2020-04-25T00:43:35Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-25T00:44:11Z pilne_ quit (Quit: I was standing in the park wondering why frisbees got bigger as they get closer. Then it hit me.) 2020-04-25T00:44:31Z badkins quit (Ping timeout: 260 seconds) 2020-04-25T00:44:38Z pilne joined #scheme 2020-04-25T01:21:48Z lockywolf joined #scheme 2020-04-25T01:22:00Z lockywolf_ joined #scheme 2020-04-25T01:22:32Z lockywolf_ quit (Remote host closed the connection) 2020-04-25T01:28:37Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-25T01:29:01Z zaifir joined #scheme 2020-04-25T01:43:45Z lockywolf_ joined #scheme 2020-04-25T01:44:34Z lockywolf_ quit (Remote host closed the connection) 2020-04-25T01:45:03Z lockywolf_ joined #scheme 2020-04-25T01:47:03Z lockywolf quit (Read error: Connection reset by peer) 2020-04-25T02:03:19Z badkins joined #scheme 2020-04-25T02:06:24Z xlei quit (Ping timeout: 256 seconds) 2020-04-25T02:08:08Z badkins quit (Ping timeout: 265 seconds) 2020-04-25T02:09:26Z badkins joined #scheme 2020-04-25T02:16:15Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-25T02:17:06Z badkins quit (Ping timeout: 256 seconds) 2020-04-25T02:18:48Z zig quit (Ping timeout: 256 seconds) 2020-04-25T02:19:22Z srandon111 quit (Quit: leaving) 2020-04-25T02:24:11Z SGASAU quit (Remote host closed the connection) 2020-04-25T02:24:36Z SGASAU joined #scheme 2020-04-25T02:24:47Z badkins joined #scheme 2020-04-25T02:28:56Z SGASAU quit (Remote host closed the connection) 2020-04-25T02:29:11Z brendarn quit (Read error: No route to host) 2020-04-25T02:30:15Z badkins quit (Ping timeout: 240 seconds) 2020-04-25T02:31:00Z SGASAU joined #scheme 2020-04-25T02:34:17Z SGASAU quit (Remote host closed the connection) 2020-04-25T02:37:58Z SGASAU joined #scheme 2020-04-25T02:40:16Z lockywolf_ joined #scheme 2020-04-25T02:41:20Z lockywolf_: How do I turn characters into strings? 2020-04-25T02:42:58Z lockywolf_: i.e. I want (#\H #\e #\l "l" o) -> "Hello" 2020-04-25T02:43:46Z xlei joined #scheme 2020-04-25T02:44:50Z Riastradh: list->string will do it for just characters. 2020-04-25T02:49:29Z badkins joined #scheme 2020-04-25T02:49:30Z Riastradh: rudybot: eval (list->string '(#\H #\e #\l #\l #\o #\, #\space #\w #\o #\r #\l #\d #\!)) 2020-04-25T02:49:37Z rudybot: Riastradh: your r5rs sandbox is ready 2020-04-25T02:49:37Z rudybot: Riastradh: ; Value: "Hello, world!" 2020-04-25T02:50:44Z badkins quit (Remote host closed the connection) 2020-04-25T02:51:42Z badkins joined #scheme 2020-04-25T02:56:50Z badkins quit (Ping timeout: 256 seconds) 2020-04-25T02:58:53Z aeth: Does Scheme have a generic map like Common Lisp? Because that would be the most straightforward way... result string, input anything, and the procedure of if character character otherwise if string and string length 1 turn string into character 2020-04-25T02:59:06Z aeth: (and else error) 2020-04-25T02:59:08Z SGASAU quit (Remote host closed the connection) 2020-04-25T03:01:03Z SGASAU joined #scheme 2020-04-25T03:01:29Z aeth: In easily-translatable-into-Scheme CL: (map 'string (lambda (x) (if (characterp x) x (if (and (stringp x) (= (length x) 1)) (char x 0) (error "Invalid input")))) (list #\A "B" #\C)) 2020-04-25T03:01:33Z aeth: something like this: (map+ 'string (lambda (x) (if (character? x) x (if (and (string? x) (= (string-length x) 1)) (string-ref x 0) (error "Invalid input")))) (list #\A "B" #\C)) 2020-04-25T03:01:53Z Riastradh: (call-with-output-string (lambda (p) (for-each (lambda (x) (display x p)) l))) 2020-04-25T03:07:19Z turtleman quit (Ping timeout: 260 seconds) 2020-04-25T03:18:45Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-25T03:26:53Z raingloom quit (Remote host closed the connection) 2020-04-25T03:27:07Z raingloom joined #scheme 2020-04-25T03:38:53Z SGASAU quit (Remote host closed the connection) 2020-04-25T03:39:18Z SGASAU joined #scheme 2020-04-25T03:47:17Z pilne quit (Quit: Call me a relic, call me what you will. Say I'm old fashioned, say I'm over the hill.) 2020-04-25T03:50:06Z raingloom quit (Ping timeout: 256 seconds) 2020-04-25T03:56:26Z mdhughes: If they're all chars, you can just use (string #\H #\i) 2020-04-25T03:57:02Z mdhughes: Maybe don't need to boil the oceanโ€ฆ 2020-04-25T03:59:08Z mdhughes: If they're not, you'd have to do the map: (apply string (map (lambda (x) ...) bunchastuff)) 2020-04-25T04:00:14Z mdhughes: Some Schemes have an easy ->string operator, but it's not standard. 2020-04-25T04:05:19Z Riastradh: (apply string ...) is more concisely and reliably spelled (list->string ...). 2020-04-25T04:05:33Z Riastradh: Well, OK, I guess it's the same number of characters, but it is more reliable. 2020-04-25T04:11:52Z badkins joined #scheme 2020-04-25T04:15:02Z Feliciana joined #scheme 2020-04-25T04:15:23Z badkins quit (Client Quit) 2020-04-25T04:17:26Z badkins joined #scheme 2020-04-25T04:17:46Z Feliciana quit (Client Quit) 2020-04-25T04:22:26Z badkins quit (Remote host closed the connection) 2020-04-25T04:23:03Z aeth: Idk about Scheme, but in CL you shouldn't use apply for things like that because apply only has to work on as many items as the arg length limit, and the minimum allowed arg length limit isn't very high. 2020-04-25T04:23:17Z aeth: I'd imagine that the situation is even worse in portable Scheme, since I doubt Scheme specifies this. 2020-04-25T04:23:40Z Riastradh: yes 2020-04-25T04:30:18Z drakonis1 joined #scheme 2020-04-25T04:31:11Z drakonis quit (Ping timeout: 272 seconds) 2020-04-25T04:36:58Z aeth_ joined #scheme 2020-04-25T04:38:37Z aeth quit (Ping timeout: 264 seconds) 2020-04-25T04:41:25Z aeth_ is now known as aeth 2020-04-25T04:48:27Z jayde quit (Quit: (quit)) 2020-04-25T05:01:29Z gravicappa joined #scheme 2020-04-25T05:02:02Z mdhughes: No, that's generally not the case. 2020-04-25T05:03:02Z mdhughes: ISTR the minimum limit is specified, but I can't see it under apply. But every impl I've used has handled 1k+ args. 2020-04-25T05:03:41Z mdhughes: You can of course make-string and set each char in a loop if it's going to be megs of text. 2020-04-25T05:12:45Z mdhughes: (string-length (apply string (map integer->char (iota 54000)))) 2020-04-25T05:13:13Z mdhughes: It blows up on integer->char in the 55000s, but the arg limit's not a problem. 2020-04-25T05:33:15Z skapata joined #scheme 2020-04-25T05:50:08Z corpix quit (Remote host closed the connection) 2020-04-25T05:50:16Z corpix_ joined #scheme 2020-04-25T05:51:05Z orblu joined #scheme 2020-04-25T05:56:27Z zig joined #scheme 2020-04-25T06:06:10Z ArthurStrong joined #scheme 2020-04-25T06:17:16Z drakonis1 quit (Quit: WeeChat 2.8) 2020-04-25T06:45:01Z skapata quit (Remote host closed the connection) 2020-04-25T06:48:54Z orblu quit (Ping timeout: 260 seconds) 2020-04-25T07:05:47Z v_m_v joined #scheme 2020-04-25T07:10:38Z v_m_v quit (Ping timeout: 258 seconds) 2020-04-25T07:13:46Z zig quit (Quit: WeeChat 1.9.1) 2020-04-25T07:27:44Z KindOne quit (Quit: K-Lined) 2020-04-25T07:40:34Z amirouche joined #scheme 2020-04-25T07:41:24Z amirouche: hello, I have complete implementation of SRFI-180 (JSON) 2020-04-25T07:41:46Z amirouche: I will not implement JSON sequence, because those are rare and easy to implement anyway. 2020-04-25T07:42:32Z amirouche: I am requesting help about the, so called, fundamental json iterator aka. json-fold. 2020-04-25T07:43:08Z amirouche: the implementation is inspired from functional parsing of xml, but people requested better specification of json-fold. 2020-04-25T07:43:51Z amirouche: https://srfi.schemers.org/srfi-180/srfi-180.html#json-fold 2020-04-25T07:44:58Z amirouche: basically, it looks like a `fold` over a _generator_ of JSON tokens, and takes a couple a procedure that must "accumulate" the wanted result. 2020-04-25T07:45:13Z amirouche: If you have any idea how to improve the specification, let me know 2020-04-25T07:46:02Z amirouche: here is the code: https://git.io/Jftvv 2020-04-25T08:08:15Z Fare quit (Quit: Leaving) 2020-04-25T08:08:24Z v_m_v joined #scheme 2020-04-25T08:10:08Z orblu joined #scheme 2020-04-25T08:12:16Z lritter joined #scheme 2020-04-25T08:31:45Z lockywolf joined #scheme 2020-04-25T08:32:03Z rgherdt joined #scheme 2020-04-25T08:32:41Z badkins joined #scheme 2020-04-25T08:33:41Z lockywolf quit (Remote host closed the connection) 2020-04-25T08:34:10Z lockywolf joined #scheme 2020-04-25T08:35:16Z KindOne joined #scheme 2020-04-25T08:37:38Z badkins quit (Ping timeout: 260 seconds) 2020-04-25T08:39:37Z v_m_v quit (Remote host closed the connection) 2020-04-25T08:46:50Z KindOne quit (Quit: identd fix.) 2020-04-25T08:47:16Z KindOne joined #scheme 2020-04-25T08:47:22Z orblu quit (Ping timeout: 265 seconds) 2020-04-25T08:47:40Z v_m_v joined #scheme 2020-04-25T09:49:44Z retropikzel quit (Remote host closed the connection) 2020-04-25T09:50:05Z retropikzel joined #scheme 2020-04-25T09:53:06Z TCZ joined #scheme 2020-04-25T09:55:26Z luni joined #scheme 2020-04-25T10:01:10Z orblu joined #scheme 2020-04-25T10:18:48Z v_m_v quit (Remote host closed the connection) 2020-04-25T10:20:11Z amirouche: I am working on a r7rs scheme on top of Chez scheme, ping me if (when?) you are interested. 2020-04-25T10:22:34Z v_m_v joined #scheme 2020-04-25T10:28:55Z heisenberg-25 joined #scheme 2020-04-25T10:36:57Z raingloom joined #scheme 2020-04-25T10:43:16Z heisenberg-25 quit (Quit: Textual IRC Client: www.textualapp.com) 2020-04-25T10:46:45Z orblu quit (Ping timeout: 240 seconds) 2020-04-25T11:28:30Z TCZ quit (Quit: Leaving) 2020-04-25T11:31:07Z TCZ joined #scheme 2020-04-25T11:54:04Z luni quit (Quit: Connection closed) 2020-04-25T12:00:19Z skapata joined #scheme 2020-04-25T12:25:16Z v_m_v quit (Remote host closed the connection) 2020-04-25T12:34:38Z badkins joined #scheme 2020-04-25T12:39:22Z badkins quit (Ping timeout: 256 seconds) 2020-04-25T13:02:47Z srandon111 joined #scheme 2020-04-25T13:03:48Z civodul joined #scheme 2020-04-25T13:11:29Z lritter quit (Read error: Connection reset by peer) 2020-04-25T13:29:08Z amirouche quit (Quit: WeeChat 2.6) 2020-04-25T13:52:20Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-25T14:03:04Z cmatei quit (Remote host closed the connection) 2020-04-25T14:05:49Z TCZ quit (Quit: Leaving) 2020-04-25T14:07:40Z badkins joined #scheme 2020-04-25T14:22:25Z cmatei joined #scheme 2020-04-25T14:24:12Z raingloom quit (Ping timeout: 256 seconds) 2020-04-25T14:40:14Z TCZ joined #scheme 2020-04-25T14:59:05Z stoneglass joined #scheme 2020-04-25T14:59:29Z stoneglass left #scheme 2020-04-25T15:00:43Z Urfin quit (*.net *.split) 2020-04-25T15:00:43Z lloda quit (*.net *.split) 2020-04-25T15:00:43Z notnotdan quit (*.net *.split) 2020-04-25T15:00:51Z Urfin joined #scheme 2020-04-25T15:00:55Z lloda joined #scheme 2020-04-25T15:01:09Z notnotdan joined #scheme 2020-04-25T15:05:25Z badkins quit (Remote host closed the connection) 2020-04-25T15:05:57Z badkins joined #scheme 2020-04-25T15:06:09Z bchar quit (*.net *.split) 2020-04-25T15:06:09Z LeoNerd quit (*.net *.split) 2020-04-25T15:06:09Z duncanm quit (*.net *.split) 2020-04-25T15:06:09Z bashbjorn quit (*.net *.split) 2020-04-25T15:06:09Z friscosam quit (*.net *.split) 2020-04-25T15:06:15Z friscosam joined #scheme 2020-04-25T15:06:20Z LeoNerd joined #scheme 2020-04-25T15:06:27Z duncanm joined #scheme 2020-04-25T15:06:27Z rudybot: la la la 2020-04-25T15:06:37Z bchar joined #scheme 2020-04-25T15:06:49Z bashbjorn joined #scheme 2020-04-25T15:09:28Z luni joined #scheme 2020-04-25T15:10:15Z badkins quit (Ping timeout: 240 seconds) 2020-04-25T15:12:49Z keep_learning joined #scheme 2020-04-25T15:20:32Z turtleman joined #scheme 2020-04-25T15:20:52Z badkins joined #scheme 2020-04-25T15:25:03Z theseb joined #scheme 2020-04-25T15:27:19Z rgherdt quit (Ping timeout: 272 seconds) 2020-04-25T15:27:57Z theseb: Is this right? I think I know why/when you'd want a DSL (domain specific language).....when you are solving a very complex problem!...In that case you can't tolerate *any* distractions from your language....even an easy readable language like Python isn't clean enough when you're pushing the envelope of complexity yes? 2020-04-25T15:29:50Z Riastradh: That's the idea. 2020-04-25T15:30:30Z ohama quit (Ping timeout: 256 seconds) 2020-04-25T15:38:34Z ohama joined #scheme 2020-04-25T15:39:22Z jayde joined #scheme 2020-04-25T15:44:54Z theseb: Riastradh: thanks...i think i'm finally starting to "get it" ;) 2020-04-25T15:47:01Z klovett quit (Ping timeout: 264 seconds) 2020-04-25T15:47:38Z jcowan: theseb: Whenever you find yourself writing too much boilerplate, write a macro. When you find yourself writing too many macros, blend them into a DSL. 2020-04-25T15:47:53Z jcowan: Most languages are done at step 0 of this progression 2020-04-25T15:48:02Z theseb: yeah 2020-04-25T15:49:58Z cmatei quit (Remote host closed the connection) 2020-04-25T15:50:16Z cmatei joined #scheme 2020-04-25T15:52:00Z theseb: I think lisp can parse strings like this "abc"def" without escaping? (e.g. "abc\"def")?.....Because of the way s-expressions work it seems there isn't the ambiguity in "abc"def" you'd find in other languages...Is that right? 2020-04-25T15:52:40Z Riastradh: no 2020-04-25T15:54:10Z theseb: right..i just tested "hel"lo" and it bombed ;) 2020-04-25T15:54:27Z theseb: Error: execute: unbound symbol: "lo\"" [] ;) 2020-04-25T15:54:44Z theseb: Riastradh: it would have been cool if it worked imho 2020-04-25T15:55:15Z klovett joined #scheme 2020-04-25T15:57:18Z theseb: oh i think i get it....the reader doesn't know when string ends if we allow that 2020-04-25T15:57:21Z mdhughes: Spaces are more or less optional in a lot of readers. (display"hello"(current-error-port)) works in a lot of them. 2020-04-25T15:57:36Z theseb: mdhughes: ug...not sure i like that 2020-04-25T15:57:50Z mdhughes: Well, don't do it! I sure wouldn't. But it works. 2020-04-25T15:57:53Z theseb: mdhughes: well i guess it depends in user wants flexibility or rigidness 2020-04-25T15:57:59Z theseb: s/in/if 2020-04-25T16:00:31Z klovett quit (Ping timeout: 246 seconds) 2020-04-25T16:01:44Z klovett joined #scheme 2020-04-25T16:07:11Z edgar-xyz joined #scheme 2020-04-25T16:08:14Z evdubs quit (Remote host closed the connection) 2020-04-25T16:08:33Z evdubs joined #scheme 2020-04-25T16:09:27Z edgar-rft quit (Ping timeout: 260 seconds) 2020-04-25T16:09:50Z tdammers: "DSL" is more a mindset than a rigidly defined technical thing 2020-04-25T16:10:06Z tdammers: especially when you consider EDSLs 2020-04-25T16:11:00Z rgherdt joined #scheme 2020-04-25T16:12:49Z stultulo joined #scheme 2020-04-25T16:12:51Z TCZ is now known as TCZ12345 2020-04-25T16:13:16Z TCZ12345 is now known as TCZ 2020-04-25T16:14:09Z f8l quit (Ping timeout: 256 seconds) 2020-04-25T16:14:09Z stultulo is now known as f8l 2020-04-25T16:14:10Z TCZ is now known as TCZ12345 2020-04-25T16:14:43Z TCZ12345 is now known as TCZ 2020-04-25T16:15:31Z TCZ quit (Quit: Leaving) 2020-04-25T16:15:32Z theseb: tdammers: what is the world is a EDSL? 2020-04-25T16:15:39Z Riastradh: It's like an ETLA! 2020-04-25T16:15:52Z DKordic: jcowan: You mentioned the connection between Lisp and Forth. Where can I see more about it? 2020-04-25T16:16:38Z DKordic: Other than Henry Baker's ""Permutation Stacks"", or ""Let Over Lambda"". 2020-04-25T16:17:31Z tdammers: Embedded DSL 2020-04-25T16:17:56Z tdammers: it means that the DSL is implemented using the host language's constructs as building blocks 2020-04-25T16:18:40Z jcowan: i would say the Baker paper is pretty definitive. You might want to read some of the Joy papers too, though they are not Lisp-specific: they address Forth as a pure and functional language. 2020-04-25T16:19:24Z tdammers: e.g., a HTML construction DSL that allows you to write stuff like (div ((class "content")) (h1 () "Hello!") (p () "Hello, world!)) directly in scheme would be an EDSL 2020-04-25T16:19:27Z jcowan: http://joy-lang.org/rationale-for-joy/ is a good starting point 2020-04-25T16:19:32Z DKordic: theseb: For example, a straightforward lib of Hypertext Constructors would obviously have all the functionality of a ""Templating Engine"". ""make(1)"" EDSLs are mentioned here: ""The Build is Always Broken"" ( https://gbracha.blogspot.com/2020/01/the-build-is-always-broken.html ) . 2020-04-25T16:20:47Z tdammers: whereas something like (make-html "div.content [ h1 [\"Hello!\"], p [\"Hello, world!\"] ]") would make the DSL an SDSL ("Standalone DSL") 2020-04-25T16:22:03Z tdammers: the advantage of an EDSL is that you get all the bells and whistles of the host language for free: procedures, let bindings, loops, metaprogramming, etc. 2020-04-25T16:22:17Z tdammers: the downside of an EDSL is that you're limited by the syntax of the host language 2020-04-25T16:22:28Z jcowan: Which in the case of Lisp is not much of a limitation. 2020-04-25T16:22:52Z tdammers: indeed. the more malleable the host language's syntax is, the more useful EDSL's become 2020-04-25T16:23:22Z tdammers: this is why you rarely see EDSLs in C, but all the time in Lisps, Haskell, Ruby, and the like 2020-04-25T16:23:53Z theseb: nice..thanks 2020-04-25T16:24:57Z jackhill quit (Ping timeout: 272 seconds) 2020-04-25T16:26:04Z theseb: tdammers: well if you write an new parser, interpreter, etc. in your host language then i guess the EDSL does not HAVE to be limited by the host language? 2020-04-25T16:26:06Z jackhill joined #scheme 2020-04-25T16:26:25Z theseb: tdammers: it is just too painful in something like ?C 2020-04-25T16:26:26Z theseb: C? 2020-04-25T16:26:28Z tdammers: theseb: yes, but if you do that, it's no longer an *E*DSL 2020-04-25T16:27:10Z tdammers: in C, you would usually write that parser (or use something like (f)lex+yacc/bison to generate it) 2020-04-25T16:27:38Z tdammers: because without that parser, you would have to express your domain-specific stuff in terms of C types and functions, and that gets ugly fast 2020-04-25T16:28:22Z tdammers: even for the above-mentioned HTML generator, the API wouldn't be nice in C 2020-04-25T16:28:29Z theseb: tdammers: i wonder how bad it would be to extend python in python with a EDSL 2020-04-25T16:28:45Z tdammers: in python it's often doable 2020-04-25T16:29:07Z tdammers: SqlAlchemy, for example, provides a query construction EDSL 2020-04-25T16:29:33Z theseb: tdammers: wow..you really know this stuff 2020-04-25T16:29:35Z theseb: thanks 2020-04-25T16:29:37Z tdammers: select()->from(table)->where(...) # stuff like that 2020-04-25T16:30:07Z tdammers: well, I've been programming for 30 years now, knowing some stuff is inevitable 2020-04-25T16:30:32Z theseb: tdammers: just curious..if you can do nice EDSLs in python, ruby, ...etc. then what is the reason for favor doing it in a lisp instead? 2020-04-25T16:30:53Z theseb: tdammers: is lisp somehow the best DSL creater? 2020-04-25T16:31:02Z tdammers: it's pretty good at it, yes 2020-04-25T16:31:10Z tdammers: better than ruby or python, I'd say 2020-04-25T16:31:24Z tdammers: the crucial advantage is metaprogramming (i.e., macros) 2020-04-25T16:31:37Z tdammers: well, that, and the fact that the syntax itself is tiny 2020-04-25T16:32:19Z tdammers: lisp is basically just s-expressions and a handful of scalar literals and symbols; but what those s-expressions mean is largely up to you 2020-04-25T16:32:49Z tdammers: and s-expressions are a pretty universal syntax, almost anything will fit them fairly reasonably 2020-04-25T16:33:32Z tdammers: except maybe fully generalized graphs, but those are always hard 2020-04-25T16:34:41Z theseb: interesting..thanks again 2020-04-25T16:38:25Z edgar-xyz quit (Quit: Leaving) 2020-04-25T16:39:11Z amirouche joined #scheme 2020-04-25T16:42:22Z edgar-rft joined #scheme 2020-04-25T16:42:32Z drakonis joined #scheme 2020-04-25T16:45:11Z amirouche: The thing is in Scheme you have datums, which does not exists in Python at least, that is you most of the time do not need to write a parser for your DSL. With Python, you would need to do string string interpolation or something like lex/yacc to get started if you do not use OOP meta-programming tools. 2020-04-25T16:46:16Z amirouche: I disagree with the fact that a meta-interpreter language is not an EDSL. 2020-04-25T16:47:07Z amirouche: also SQLAlchemy mostly rely on metaclass (nowadays called data class) and method chaining to create the _illusion_ of SQL features.. 2020-04-25T16:47:39Z tdammers: sqlalchemy is actually quite terrible that way 2020-04-25T16:49:00Z tdammers: they abuse python syntax quite a bit to get something that looks like SQL 2020-04-25T16:49:02Z amirouche: dunno the details, I could not figure the API because I think they changed it several times, last time I had to use an ORM in Python was peewee and django's ORM. Peewee is not bad, but even then I prefer string "interpolation" with plain SQL. 2020-04-25T16:49:30Z tdammers: absolutely. SQL is a perfectly reasonable DSL for writing SQL 2020-04-25T16:49:36Z amirouche: tdammers: there is a project that taps into the bytecode to reverse-engineer the query and turn it into a sql query x) 2020-04-25T16:49:48Z amirouche: python's bytecode 2020-04-25T16:49:51Z tdammers: oh dear 2020-04-25T16:50:00Z tdammers: "what could possibly go wrong" 2020-04-25T16:50:14Z tdammers: personally, I think yesql hits a nice sweet spot 2020-04-25T16:50:36Z tdammers: "here's some annotated SQL, please wrap that in a procedure for me" 2020-04-25T16:50:57Z tdammers: but anyway, maybe sqlalchemy isn't the greatest example 2020-04-25T16:51:19Z tdammers: there's a python lib for html "templating" that implements an EDSL similar to hyperscript, can't remember the name though 2020-04-25T16:51:46Z tdammers: essentially you write stuff like div({"class":"foobar"}, h1("Hello!")) 2020-04-25T16:51:56Z amirouche: to be honest, what got me started with srfi-167, is that I wanted a single _syntax_ for all my code, even data related. #monoculture 2020-04-25T16:53:15Z amirouche: that is what ORM try to tackle, expose in terms of host language construct, SQL semantic, srfi-167, is lower level, and its semantic maps easily to (any?) programming language, as far as they know about some sort of ordered/sorted mappings. 2020-04-25T16:53:55Z amirouche: I looked into Object databases, which are higher level than OKVS, but those miss fast query times. 2020-04-25T16:55:46Z amirouche: tdammers: something like https://github.com/amirouche/beyondjs/blob/master/src/main.py#L130 2020-04-25T16:56:21Z amirouche: tdammers: recently I saw a project for Python again, that mimick JSX by "hijacking" the parser via the encoder hooks (lost the url) 2020-04-25T16:56:39Z amirouche: expressing html in host language is definitly easier to do in lisp. 2020-04-25T16:57:06Z amirouche: hyperscript can work, but jsx and the like are definitly overkill. 2020-04-25T16:57:30Z tdammers: I think they're a "worst of both worlds" approach 2020-04-25T16:57:37Z jackhill quit (Quit: leaving) 2020-04-25T16:57:56Z jackhill joined #scheme 2020-04-25T16:58:04Z tdammers: you still have to learn new syntax, you don't get the full advantage of an EDSL, and it breaks all your existing tools 2020-04-25T16:59:50Z amirouche: "breaks existing tools" exactly. It breaks the workflow too, because JavaScript, subtely became a compiled (or preprocessed language), adding sourcemap as an indirection... 2020-04-25T17:00:11Z amirouche: yet again, are lisper think lisp got it right from the beginning. 2020-04-25T17:02:12Z theseb quit (Ping timeout: 244 seconds) 2020-04-25T17:29:50Z jcowan: DKordic: The linrec and binrec combinators are something very cool, I don't know any language that has them: http://joy-lang.org/papers-on-joy/tutorial-on-joy section "Recursive Combinators" 2020-04-25T17:30:49Z jcowan: there are also tailrec, genrec, condlinrec, primrec, treerec, and treegenrec, briefly defined at http://joy-lang.org/papers-on-joy/tutorial-on-joy 2020-04-25T17:31:28Z wasamasa: rudybot: blinrec is where it's at 2020-04-25T17:31:43Z rudybot: wasamasa: I heard el-get is [0] developed at http://github.com/dimitri/el-get, where there's a self-installer 2020-04-25T17:31:46Z badkins quit (Remote host closed the connection) 2020-04-25T17:32:21Z badkins joined #scheme 2020-04-25T17:32:38Z jcowan: basically you provide a few fragments and they construct one of the standard forms of recursion for you: thus linrec has ifpart, thenpart, elsepart1, elsepart2, and what it is does is to test ifpart, and if false execute thenpart and we are done. if not, execute elsepart1, recurse, and execute elsepart2. 2020-04-25T17:32:59Z jcowan: Oops. Brief definitions at http://joy-lang.org/papers-on-joy/html-manual 2020-04-25T17:37:02Z badkins quit (Ping timeout: 260 seconds) 2020-04-25T17:38:25Z badkins joined #scheme 2020-04-25T17:42:45Z badkins quit (Ping timeout: 240 seconds) 2020-04-25T17:49:40Z skapata quit (Ping timeout: 265 seconds) 2020-04-25T17:49:45Z DKordic: jcowan: Thank You very much! 2020-04-25T17:49:50Z DKordic thinks... 2020-04-25T17:50:54Z npxt joined #scheme 2020-04-25T17:57:11Z v_m_v joined #scheme 2020-04-25T18:03:50Z badkins joined #scheme 2020-04-25T18:13:12Z skapata joined #scheme 2020-04-25T18:18:10Z retropikzel quit (Quit: Leaving) 2020-04-25T18:18:13Z hugh_marera joined #scheme 2020-04-25T18:25:23Z amirouche quit (Ping timeout: 244 seconds) 2020-04-25T18:26:17Z npxt quit (Remote host closed the connection) 2020-04-25T18:33:19Z hugh_marera quit (Quit: hugh_marera) 2020-04-25T18:44:42Z v_m_v quit (Remote host closed the connection) 2020-04-25T18:53:51Z v_m_v joined #scheme 2020-04-25T19:26:52Z zig joined #scheme 2020-04-25T19:35:03Z raingloom joined #scheme 2020-04-25T19:43:58Z lucasb joined #scheme 2020-04-25T19:53:22Z seepel joined #scheme 2020-04-25T20:04:14Z v_m_v quit (Remote host closed the connection) 2020-04-25T20:17:24Z badkins quit (Remote host closed the connection) 2020-04-25T20:18:01Z badkins joined #scheme 2020-04-25T20:20:21Z ArthurStrong quit (Quit: leaving) 2020-04-25T20:20:41Z ArthurStrong joined #scheme 2020-04-25T20:22:09Z badkins quit (Ping timeout: 244 seconds) 2020-04-25T20:24:16Z badkins joined #scheme 2020-04-25T20:25:27Z pilne joined #scheme 2020-04-25T20:25:38Z TCZ joined #scheme 2020-04-25T20:30:06Z X-Scale` joined #scheme 2020-04-25T20:30:39Z X-Scale quit (Ping timeout: 258 seconds) 2020-04-25T20:30:55Z X-Scale` is now known as X-Scale 2020-04-25T20:46:49Z zooey quit (Remote host closed the connection) 2020-04-25T20:55:50Z zooey joined #scheme 2020-04-25T21:06:35Z SGASAU quit (Remote host closed the connection) 2020-04-25T21:07:01Z SGASAU joined #scheme 2020-04-25T21:33:13Z v_m_v joined #scheme 2020-04-25T22:04:40Z badkins quit (Remote host closed the connection) 2020-04-25T22:05:15Z badkins joined #scheme 2020-04-25T22:07:08Z add^_ quit (Read error: Connection reset by peer) 2020-04-25T22:09:46Z badkins quit (Ping timeout: 246 seconds) 2020-04-25T22:17:51Z TCZ quit (Quit: Leaving) 2020-04-25T22:23:48Z raingloom quit (Remote host closed the connection) 2020-04-25T22:24:19Z raingloom joined #scheme 2020-04-25T22:27:46Z raingloom quit (Remote host closed the connection) 2020-04-25T22:28:06Z raingloom joined #scheme 2020-04-25T22:35:50Z badkins joined #scheme 2020-04-25T22:37:14Z v_m_v quit (Remote host closed the connection) 2020-04-25T22:39:13Z gravicappa quit (Ping timeout: 264 seconds) 2020-04-25T22:43:26Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-25T22:45:45Z xlei quit (Ping timeout: 240 seconds) 2020-04-25T22:47:53Z klovett quit (Remote host closed the connection) 2020-04-25T22:48:13Z klovett joined #scheme 2020-04-25T22:48:46Z raingloom quit (Remote host closed the connection) 2020-04-25T22:50:17Z xlei joined #scheme 2020-04-25T22:50:41Z raingloom joined #scheme 2020-04-25T22:51:46Z raingloom quit (Remote host closed the connection) 2020-04-25T22:53:04Z raingloom joined #scheme 2020-04-25T22:53:16Z raingloom quit (Remote host closed the connection) 2020-04-25T22:56:20Z raingloom joined #scheme 2020-04-25T22:56:46Z raingloom quit (Remote host closed the connection) 2020-04-25T23:06:22Z zhuoz joined #scheme 2020-04-25T23:06:43Z zhuoz quit (Remote host closed the connection) 2020-04-25T23:07:45Z seepel quit (Ping timeout: 240 seconds) 2020-04-25T23:17:52Z seepel joined #scheme 2020-04-25T23:43:39Z rgherdt quit (Ping timeout: 265 seconds) 2020-04-25T23:45:11Z luni quit (Quit: Connection closed) 2020-04-25T23:45:24Z lockywolf quit (Ping timeout: 265 seconds) 2020-04-26T00:47:32Z badkins quit (Remote host closed the connection) 2020-04-26T00:48:17Z badkins joined #scheme 2020-04-26T00:52:58Z badkins quit (Ping timeout: 260 seconds) 2020-04-26T00:53:20Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-26T00:54:15Z siraben: Anyone seen a lens library for Scheme? 2020-04-26T01:02:10Z lockywolf joined #scheme 2020-04-26T01:06:02Z ArthurStrong quit (Ping timeout: 260 seconds) 2020-04-26T01:13:33Z raingloom joined #scheme 2020-04-26T01:15:57Z torbo joined #scheme 2020-04-26T01:17:37Z siraben: jcowan: So these rescursive combinators, reminds me of recursion schemes (hylo/ana/cata-morphisms) 2020-04-26T01:17:38Z seepel quit (Ping timeout: 260 seconds) 2020-04-26T01:22:59Z xlei quit (Quit: ZNC - https://znc.in) 2020-04-26T01:25:21Z jcowan: siraben: Exactly 2020-04-26T01:25:38Z jcowan: although I think von Thun invented them independently 2020-04-26T01:25:48Z jcowan: (but we'll never know for sure) 2020-04-26T01:32:32Z seepel joined #scheme 2020-04-26T01:34:21Z raingloom quit (Remote host closed the connection) 2020-04-26T01:36:45Z raingloom joined #scheme 2020-04-26T01:39:56Z xlei joined #scheme 2020-04-26T01:42:45Z turtleman quit (Ping timeout: 240 seconds) 2020-04-26T01:46:35Z lockywolf: jco 2020-04-26T01:46:57Z lockywolf: jcowan, isn't "joy" sort of similar to klong? 2020-04-26T01:47:52Z jcowan: I don't think so 2020-04-26T01:48:01Z jcowan: Klong seems to be a variant of K, not of Forth 2020-04-26T01:48:36Z jcowan: Joy is Forth with the ability to put lists on the stack and to treat stacks as lists and vice versa 2020-04-26T01:48:59Z jcowan: I'll look into Klong, though 2020-04-26T01:49:14Z jcowan: Nils Holm is the author of Scheme 9 from Empty Space 2020-04-26T01:49:44Z turtleman joined #scheme 2020-04-26T01:56:42Z lockywolf: What's a DSL actually? I've seen a few articles on the internet, and all of them give either this sort of a marketing-derived definition, or reduce it to basically a metacircular abstraction of a configuration file specification. 2020-04-26T01:57:19Z lockywolf: I mean, I know the phrase "domain-specific language" 2020-04-26T01:57:22Z srandon111 quit (Quit: leaving) 2020-04-26T01:58:54Z lockywolf: I think with boost::spirit it's possible to write quite amazing parsers. 2020-04-26T02:00:24Z aeth: most Lisp DSLs don't even involve parsing 2020-04-26T02:00:43Z aeth: this gets rid of more than half of the problem, and makes things so much easier and more uniform 2020-04-26T02:04:52Z Fare joined #scheme 2020-04-26T02:05:18Z siraben: Haskellers are also obsessed with DSLs, or, EDSL (E for embedded), since it has pattern matching and if you use the right features (GADTs, tagless-final) can even have static guarantees. 2020-04-26T02:05:53Z siraben: lockywolf: I'm not familiar with boost::spirit, but once you've seen parser combinators there's no going back. 2020-04-26T02:06:08Z Riastradh: ...heh. Parser combinators are terrible! 2020-04-26T02:06:21Z zaifir: Yeah, LL(1) is pretty limited. 2020-04-26T02:06:22Z Riastradh: Makes it easy to write a buggy recursive descent parser even faster. 2020-04-26T02:06:41Z Riastradh: No feedback about ambiguity or recursion when you write the grammar. 2020-04-26T02:07:53Z Riastradh: I thought they were cool and hip and everything back when I was stuck in the Lisp mindset that parsing is stupid, which kept me from looking into what lexers and shift/reduce parsers actually do, which turns out to be very nice. 2020-04-26T02:08:28Z Fare: Is it just me, or are leap seconds definition in srfi-19 off by several months or so??? 2020-04-26T02:11:27Z Riastradh: Fare: I spot-checked a few of them, and it looks plausible to me? 2020-04-26T02:11:35Z Riastradh: Fare: Why do you think they're off? 2020-04-26T02:11:45Z Riastradh: You're looking at tm:leap-second-table in ? 2020-04-26T02:17:58Z lockywolf: Riastradh, why are "advanced" parsers good? Because they allow you to report errors in user's thought process? 2020-04-26T02:19:07Z Riastradh: A good parser generator is an interactive development tool that gives you feedback about where your grammar is ambiguous (or just broken) and how much it will cost to parse at run-time, and it trades up-front computation time for guarantees about run-time performance. 2020-04-26T02:21:02Z lockywolf: Parsing at runtime can be avoided completely, can't it? 2020-04-26T02:21:25Z lockywolf: If you (analyze) everything in advance. 2020-04-26T02:21:30Z Riastradh: A typical parser combinator library, in contrast, requires judiciously placed backtracking to support reasonable grammars (which have to be written in a weird way if left-recursive), but each place where you insert backtracking can lead to horrible performance at run-time if you're not careful (and by `horrible' I mean `exponential'), and quietly ignores ambiguity. 2020-04-26T02:22:31Z Riastradh: (Accidental left recursion in with a typical parser combinator library leads to an infinite loop at run-time; accidental right-recursion with a typical LALR parser generator leads to large stack usage.) 2020-04-26T02:22:33Z zaifir: โœ“ All true, unfortunately. 2020-04-26T02:22:45Z lockywolf: I think, boost::spirit is a rewriting of Bison in C++ template language. 2020-04-26T02:23:00Z zaifir: Parsec requires the programmer to switch to LL(โˆž) mode quite often. 2020-04-26T02:24:08Z Riastradh: If boost::spirit is a LALR parser generator, cool. (If it runs in C++ templates, it probably has absolutely abysmal development-time performance and probably makes diagnostics hard to follow...but still likely better than recursive descent parser combinators.) 2020-04-26T02:24:21Z Riastradh: In C/Python, I like lemon/lemonade. 2020-04-26T02:25:57Z Riastradh: ...ugh, no, boost::spirit does PEG, which is an even hipper way to silently degrade into exponential time and space without reporting ambiguity at development-time. 2020-04-26T02:27:26Z Fare: Riastradh, yes. It looks like it coincides with this list from IETF https://www.ietf.org/timezones/data/leap-seconds.list which disagrees with Wikipedia, the NIST and the glibc. 2020-04-26T02:28:25Z zaifir: rudybot: It's hip to be O(nยฒ). 2020-04-26T02:28:32Z Riastradh: zaifir: O(2^n) 2020-04-26T02:28:37Z rudybot: zaifir: The problem of this solution with append is that it is in O(nยฒ) because of the recursive call to append. Happily, n is only the maximum number of children per node. 2020-04-26T02:28:51Z Fare: Maybe I'm just not reading the start of the table correctly 2020-04-26T02:31:36Z Riastradh: Fare: I ran each date $d through: TZ=UTC date -d @$d '+%Y-%m-%dT%H:%M:%SZ' 2020-04-26T02:31:41Z Riastradh: Fare: Looks to me like it coincides with the Wikipedia list? 2020-04-26T02:32:04Z Riastradh: And the leap-seconds.list? 2020-04-26T02:32:42Z Riastradh: 1972-01-01T00:00:00Z 2020-04-26T02:32:42Z Riastradh: 1972-07-01T00:00:00Z 2020-04-26T02:32:42Z Riastradh: 1973-01-01T00:00:00Z 2020-04-26T02:32:42Z Riastradh: 1974-01-01T00:00:00Z 2020-04-26T02:32:48Z Riastradh: 2272060800 10 # 1 Jan 1972 2020-04-26T02:32:48Z Riastradh: 2287785600 11 # 1 Jul 1972 2020-04-26T02:32:48Z Riastradh: 2303683200 12 # 1 Jan 1973 2020-04-26T02:32:48Z Riastradh: 2335219200 13 # 1 Jan 1974 2020-04-26T02:33:27Z cantstanya quit (Remote host closed the connection) 2020-04-26T02:34:10Z Fare: OK, I must have been reading the list wrong. 2020-04-26T02:34:55Z Riastradh: (define tm:leap-second-table 2020-04-26T02:34:55Z Riastradh: '((1230768000 . 34) 2020-04-26T02:34:55Z Riastradh: (1136073600 . 33) 2020-04-26T02:34:55Z Riastradh: (915148800 . 32) 2020-04-26T02:34:56Z Riastradh: That list? 2020-04-26T02:35:03Z Riastradh: (I reversed the order.) 2020-04-26T02:35:04Z Fare: I am now reading this file from IETF: https://www.ietf.org/timezones/data/leap-seconds.list and it looks like there was no leap second on 1972-01-01 indeed, but it's the date at which TAI starts, with offset 10. 2020-04-26T02:35:40Z Fare: that got me confused "hey, there is no leap second on 1972-01-01 in the NIST list or in Wikipedia" 2020-04-26T02:35:48Z Riastradh: Ah. Hm. 2020-04-26T02:35:54Z Riastradh: Well. 2020-04-26T02:36:10Z Riastradh: ;; each entry is ( utc seconds since epoch . # seconds to add for tai ) 2020-04-26T02:36:53Z Riastradh: The entry (60372000 . 10) in the table doesn't mean there was a leap second at 63072000 seconds after (proleptic) 1970-01-01T00:00:00Z; it just means that the TAI/UTC offset at that UTC date was 10sec. 2020-04-26T02:37:07Z Fare: so 1972-01-01 is not a leap second, it's a "leap start with 10 second difference". 2020-04-26T02:37:14Z cantstanya joined #scheme 2020-04-26T02:37:52Z Riastradh: Note that in principle the table could switch from ascending to descending (or from descending to ascending, depending on whether you're standing on your head or your feet when you read it!), if we ever inserted a negative leap second. 2020-04-26T02:38:14Z Riastradh: 34, 35, 36, 35, 36, 37 2020-04-26T02:38:29Z Riastradh: (it doesn't do this but in principle it could in the future) 2020-04-26T02:38:59Z Riastradh: So you should really read it as a list of offsets (or a _signed_ number of leap seconds!) rather than as a list of event dates. 2020-04-26T02:39:45Z seepel quit (Ping timeout: 240 seconds) 2020-04-26T02:39:55Z Fare: BTW, the .mil site cited as source for the data does not exist anymore. The SRFI should probably refer to the IETF data or some such instead. 2020-04-26T02:40:23Z Riastradh: Heh. 2020-04-26T02:40:30Z Riastradh: Should refer to the IERS, I think. 2020-04-26T02:41:00Z Riastradh: But I dunno if the IERS publishes a neat table like that. 2020-04-26T02:41:04Z Riastradh: NIST probably does. 2020-04-26T02:43:09Z seepel joined #scheme 2020-04-26T02:45:15Z Fare: Who's maintaining the SRFI-19 in practice? 2020-04-26T02:46:06Z Fare: Looks like Arthur Gleckler has his name all over the github for the srfi since 2016 2020-04-26T02:49:19Z jcowan: Yes, he's the present SRFI editor. 2020-04-26T02:49:57Z badkins joined #scheme 2020-04-26T02:51:13Z jcowan: And he transferred everything from the old system to github. 2020-04-26T02:51:26Z jcowan: But in practice no one is maintaining that particular SRFI 2020-04-26T02:52:18Z Riastradh: SRFIs were never really intended to be `maintained', exactly. 2020-04-26T02:54:14Z badkins quit (Ping timeout: 260 seconds) 2020-04-26T02:55:13Z jcowan: The TAI-UTC table is at http://maia.usno.navy.mil/ser7/tai-utc.dat, but the server seems to be down right now. 2020-04-26T02:56:04Z turtleman quit (Ping timeout: 246 seconds) 2020-04-26T02:57:10Z Fare: it must be mourning Kim Jong-un. 2020-04-26T03:00:59Z jcowan: The same data is at https://www.iers.org/IERS/EN/Science/Recommendations/resolutionB1.html which is probably closer to the source 2020-04-26T03:07:39Z Fare: ^ that documents stops in 1996. A ftp or http address listed as authoritative then may well have bitrotten since. 2020-04-26T03:07:53Z Fare: My, software archaelogists will have a fun time! 2020-04-26T03:13:16Z jcowan: There's a big mess between the beginning of TAI in 1961 and the beginning of UTC-as-we-know-it in 1972. 2020-04-26T03:13:30Z jcowan: fractional TAI-UTC etc. 2020-04-26T03:13:41Z jcowan: Fare: thanks, I'll try to find a better copy 2020-04-26T03:19:33Z lockywolf_ joined #scheme 2020-04-26T03:21:41Z lockywolf quit (Ping timeout: 244 seconds) 2020-04-26T03:22:32Z jcowan: http://web.archive.org/web/20191022082231/http://maia.usno.navy.mil/ser7/tai-utc.dat appears to be the best source atm 2020-04-26T03:26:18Z jcowan: 1961-2017 all appear to be correct 2020-04-26T03:35:25Z iv4nshm4k0v joined #scheme 2020-04-26T03:40:05Z badkins joined #scheme 2020-04-26T03:55:46Z jcowan: actually http://web.archive.org/web/20191022082231if_/http://maia.usno.navy.mil:80/ser7/tai-utc.dat is TRT 2020-04-26T03:57:14Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-26T03:58:13Z lockywolf joined #scheme 2020-04-26T04:05:01Z daviid quit (Ping timeout: 264 seconds) 2020-04-26T04:08:10Z seepel quit (Ping timeout: 246 seconds) 2020-04-26T04:09:27Z jayde quit (Read error: Connection reset by peer) 2020-04-26T04:09:47Z jayde joined #scheme 2020-04-26T04:12:18Z retropikzel joined #scheme 2020-04-26T04:24:35Z Fare: What is long-running software supposed to do when new leap seconds are declared? 2020-04-26T04:37:00Z badkins quit (Remote host closed the connection) 2020-04-26T04:40:33Z jayde quit (Quit: too sleepy) 2020-04-26T04:44:39Z badkins joined #scheme 2020-04-26T04:49:31Z badkins quit (Ping timeout: 244 seconds) 2020-04-26T05:01:22Z Riastradh: Fare: heh 2020-04-26T05:01:52Z Riastradh: Fare: So, leap seconds are _also_ disseminated through ntp. 2020-04-26T05:02:16Z Riastradh: The historical list serves mainly for calendrical calculations. 2020-04-26T05:02:36Z Riastradh: Fare: But, back up a moment. What does this long-running software do in the first place? 2020-04-26T05:03:22Z Riastradh: If you want to do historical calendar stuff, well, you could poll the leap second list every (say) six months or so, around March or September to give yourself plenty of time. 2020-04-26T05:04:06Z Riastradh: If you want a clock that reliably ticks on (approximately) SI seconds, well, the _historical_ leap seconds aren't terribly relevant to you, but the _upcoming_ ones are, and as it happens a POSIX clock does _not_ tick reliably like that... 2020-04-26T05:04:49Z Riastradh: Specifically, a POSIX clock will rewind itself at the end of a positive leap second (or, in principle, skip ahead as if two seconds had elapsed in the time for one, for a negative one). 2020-04-26T05:05:44Z Riastradh: So you'll see a series of samples like 1283742183.12, 1283742183.46, 1283742183.79, 1283742183.98, 1283742183.07, 1283742183.23... (Yes, the fractional part rewinds, but the integer part does not advance.) 2020-04-26T05:06:35Z Riastradh: (At least, this is how POSIX clocks are _defined_ to work. Some operators -- notably Google, after a very bad experience about 12 years ago -- switched to making their clocks run slow for a few hours instead.) 2020-04-26T05:07:50Z Riastradh: Fortunately, on most Unix systems, you can get an _actual_ (approximation to an) SI clock with the help of the ntp_gettime system call, which simultaneously tells you what the POSIX clock reads _and_ the UTC offset. 2020-04-26T05:08:01Z Riastradh: So at the same time as the fractional partof the second rewinds from 1283742183.98 to 1283742183.07, the UTC offset advances by 1. 2020-04-26T05:08:17Z Riastradh: This works because the leap seconds are disseminated by ntp, 2020-04-26T05:08:23Z Riastradh: which is consumed by ntpd, 2020-04-26T05:08:26Z Riastradh: which feeds it into the kernel, 2020-04-26T05:08:33Z Riastradh: which mashes it up in the gears of the kernel clock, 2020-04-26T05:08:39Z Riastradh: which spit it out when you query it for ntp_gettime. 2020-04-26T05:09:55Z Riastradh: Fare: Here's some sample code to take advantage of ntp_gettime it: https://git.savannah.gnu.org/cgit/mit-scheme.git/tree/src/microcode/uxenv.c#n32 2020-04-26T05:28:14Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-26T05:29:08Z lockywolf joined #scheme 2020-04-26T05:37:52Z terpri quit (Remote host closed the connection) 2020-04-26T05:38:18Z terpri joined #scheme 2020-04-26T05:49:06Z amirouche joined #scheme 2020-04-26T05:51:34Z zig quit (Ping timeout: 260 seconds) 2020-04-26T05:57:12Z gravicappa joined #scheme 2020-04-26T05:59:28Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-26T06:04:59Z keep_learning joined #scheme 2020-04-26T06:16:26Z klovett quit (Remote host closed the connection) 2020-04-26T06:17:03Z klovett joined #scheme 2020-04-26T06:22:05Z amirouche quit (Quit: WeeChat 2.6) 2020-04-26T06:42:52Z torbo quit (Remote host closed the connection) 2020-04-26T06:46:05Z badkins joined #scheme 2020-04-26T06:48:03Z badkins quit (Remote host closed the connection) 2020-04-26T06:48:12Z badkins_ joined #scheme 2020-04-26T06:51:10Z amirouche joined #scheme 2020-04-26T06:55:35Z badkins_ quit (Remote host closed the connection) 2020-04-26T07:01:34Z lockywolf_ joined #scheme 2020-04-26T07:04:06Z lockywolf_ quit (Remote host closed the connection) 2020-04-26T07:04:22Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-26T07:04:37Z lockywolf_ joined #scheme 2020-04-26T07:10:33Z nly quit (Ping timeout: 265 seconds) 2020-04-26T07:42:01Z luni joined #scheme 2020-04-26T07:45:44Z drakonis quit (Quit: WeeChat 2.8) 2020-04-26T07:47:14Z skapata quit (Remote host closed the connection) 2020-04-26T07:53:38Z v_m_v joined #scheme 2020-04-26T08:05:43Z rgherdt joined #scheme 2020-04-26T08:05:49Z amirouche quit (Quit: WeeChat 2.6) 2020-04-26T08:11:16Z lritter joined #scheme 2020-04-26T08:31:17Z badkins joined #scheme 2020-04-26T08:32:13Z badkins quit (Remote host closed the connection) 2020-04-26T08:33:26Z badkins joined #scheme 2020-04-26T08:36:32Z daviid joined #scheme 2020-04-26T08:38:14Z badkins quit (Ping timeout: 260 seconds) 2020-04-26T08:58:18Z ArthurStrong joined #scheme 2020-04-26T09:26:39Z stepnem quit (Ping timeout: 250 seconds) 2020-04-26T09:27:33Z stepnem joined #scheme 2020-04-26T09:31:00Z LisaMorales joined #scheme 2020-04-26T09:31:42Z zig joined #scheme 2020-04-26T09:33:43Z LisaMorales quit (Client Quit) 2020-04-26T09:48:45Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-26T10:24:54Z zig quit (Quit: WeeChat 1.9.1) 2020-04-26T10:27:22Z ngz joined #scheme 2020-04-26T10:35:06Z badkins joined #scheme 2020-04-26T10:39:15Z badkins quit (Ping timeout: 240 seconds) 2020-04-26T11:12:34Z sp1ff quit (Ping timeout: 256 seconds) 2020-04-26T11:15:43Z sp1ff joined #scheme 2020-04-26T11:17:34Z lockywolf_ joined #scheme 2020-04-26T11:36:58Z sp1ff quit (Ping timeout: 260 seconds) 2020-04-26T11:42:41Z badkins joined #scheme 2020-04-26T11:43:10Z sp1ff joined #scheme 2020-04-26T11:44:29Z badkins quit (Remote host closed the connection) 2020-04-26T11:45:55Z badkins joined #scheme 2020-04-26T11:50:05Z badkins quit (Ping timeout: 244 seconds) 2020-04-26T11:51:22Z sp1ff quit (Ping timeout: 260 seconds) 2020-04-26T11:54:03Z ggole joined #scheme 2020-04-26T11:55:03Z sp1ff joined #scheme 2020-04-26T12:19:49Z luni quit (Quit: Connection closed) 2020-04-26T12:21:10Z lockywolf__ joined #scheme 2020-04-26T12:21:45Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-26T12:22:00Z lockywolf__ quit (Remote host closed the connection) 2020-04-26T12:22:02Z TCZ joined #scheme 2020-04-26T12:22:27Z lockywolf__ joined #scheme 2020-04-26T12:22:51Z SGASAU quit (Remote host closed the connection) 2020-04-26T12:23:29Z SGASAU joined #scheme 2020-04-26T12:26:16Z jcowan: yes, it's for calendrical work that the table mattrs 2020-04-26T12:33:45Z TCZ quit (Quit: Leaving) 2020-04-26T12:39:53Z lockywolf__: has anyone seen a scheme interpreter in Minecraft redstone? 2020-04-26T12:42:05Z iv4nshm4k0v: Of all things I've expected to see discussed on this channel, 2020-04-26T12:42:25Z iv4nshm4k0v: NTP and leap seconds are pretty down on the list. 2020-04-26T12:45:23Z Fare: They got me down, big time. Just wasted 3 hours trying to use TAI instead of UTC in the probably vain hope of surviving leap seconds with more panache. 2020-04-26T12:47:27Z iv4nshm4k0v was just thinking if TAI is going to be brought up.. 2020-04-26T12:48:50Z Fare: Other more interesting issues: how is the software supposed to stay up-to-date as these definitions bitrot every 6 months. 2020-04-26T12:49:14Z Fare: What about servers that stay up more than 6 months at a time? 2020-04-26T12:49:37Z turtleman joined #scheme 2020-04-26T12:50:11Z lockywolf_ joined #scheme 2020-04-26T12:52:34Z lockywolf__ quit (Ping timeout: 260 seconds) 2020-04-26T13:00:06Z klovett quit (Remote host closed the connection) 2020-04-26T13:00:20Z klovett joined #scheme 2020-04-26T13:03:11Z jcowan: Riastradh: srfis aren't maintained as such, but sample implementations sometimes are 2020-04-26T13:04:23Z ArthurStrong left #scheme 2020-04-26T13:20:20Z amirouche joined #scheme 2020-04-26T13:22:02Z v_m_v quit (Remote host closed the connection) 2020-04-26T13:22:15Z amirouche: hello, yesterday I posted a message about my scheme, it was netsplit so not everybody got it. 2020-04-26T13:22:38Z amirouche: I am working on a R7RS on top Chez scheme 2020-04-26T13:23:14Z amirouche: the code is at https://github.com/amirouche/arew-scheme 2020-04-26T13:24:16Z amirouche: it support partially R6RS and R7RS libraries and ChezScheme builtins libraries, various SRFI (token from arcfide and some from SRFI process) 2020-04-26T13:24:24Z amirouche: The issue tracker is not up-to-date. 2020-04-26T13:24:55Z amirouche: regarding R7RS-small and R7RS-large support. The best thing you could contribute is (scheme text), but ping before doing so. 2020-04-26T13:25:38Z amirouche: Also, I will try to port babelia search engine to it. 2020-04-26T13:26:30Z wasamasa: I already wondered what the repo is about because the README isn't exactly helpful 2020-04-26T13:27:35Z amirouche: Those are libraries for Chez, there src/arew.scm that has the entry point to eval R7RS program. 2020-04-26T13:28:15Z sp1ff quit (Ping timeout: 244 seconds) 2020-04-26T13:28:58Z amirouche: I am trying to keep all my things in the same project, and avoid repeating myself or copy-pasting over-and-over again. 2020-04-26T13:29:51Z amirouche: Also, my goal is to work on the port of babelia for a while, push to production and make it work (in that order ;) 2020-04-26T13:30:43Z amirouche: since my idea to help wikidata, is a failure, I will not abandon the idea of nstore, but focus on babelia which might bring a useable search engine for scheme community. 2020-04-26T13:31:53Z wasamasa: that sounds interesting 2020-04-26T13:32:09Z wasamasa: I'm aware of the CHICKEN wiki using something less fancy for its search engine 2020-04-26T13:32:50Z wasamasa: hyper estraier: https://fallabs.com/hyperestraier/ 2020-04-26T13:33:52Z sp1ff joined #scheme 2020-04-26T13:34:16Z amirouche: I did not know about this project, looks good, it is from the creator of tokyo and kyoto cabinet which are big hits in OKVS 2020-04-26T13:34:21Z amirouche: thanks for sharing 2020-04-26T13:34:37Z wasamasa: yup, tokyocabinet is packaged for the same reason 2020-04-26T13:35:15Z izh_ joined #scheme 2020-04-26T13:35:20Z wasamasa: I wonder whether there's anything else 2020-04-26T13:35:29Z wasamasa: http://community.schemewiki.org/ errors out when trying to search :< 2020-04-26T13:36:09Z wasamasa: which apparently uses http://practical-scheme.net/wiliki/wiliki.cgi 2020-04-26T13:38:46Z amirouche: well, at least it is useful, unlike all project I made so far. 2020-04-26T13:38:47Z wasamasa: dbm, we meet again: https://github.com/shirok/WiLiKi/blob/master/src/wiliki/core.scm#L837 2020-04-26T13:39:53Z mdhughes: lockywolf__: All the redstone things I've seen emulate a CPU like a 6502 or Z80, you'd have to compile your Scheme code to that and load it in. 2020-04-26T13:46:40Z badkins joined #scheme 2020-04-26T13:51:30Z badkins quit (Ping timeout: 244 seconds) 2020-04-26T14:00:40Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-26T14:05:43Z civodul joined #scheme 2020-04-26T14:05:45Z v_m_v joined #scheme 2020-04-26T14:08:51Z bars0 joined #scheme 2020-04-26T14:16:07Z lockywolf_: amirouche, wiliki on scheme community wiki is outdated 2020-04-26T14:17:40Z amirouche: lockywolf_: well, at least Shiro (or whoever) manages to keep it up, unlike scheme-lang.com which was a single static page and is out at the moment. 2020-04-26T14:18:21Z lockywolf_: I emailed Shiro asking him to update the version, and he responded that he is not the one responsible for it :) 2020-04-26T14:18:52Z badkins joined #scheme 2020-04-26T14:19:07Z amirouche: scheme-lang.com is mine, I guess more stability in the physical world will help sustain it... 2020-04-26T14:19:11Z amirouche hopeful 2020-04-26T14:19:27Z daviid: #gnu 2020-04-26T14:20:02Z daviid: wrong buffer, sorry 2020-04-26T14:20:25Z lockywolf_: ERC user detected 2020-04-26T14:22:34Z andreycizov quit (Ping timeout: 240 seconds) 2020-04-26T14:23:01Z badkins quit (Remote host closed the connection) 2020-04-26T14:28:36Z retropikzel quit (Quit: Leaving) 2020-04-26T14:31:29Z lockywolf_: damn, before starting sicp, I had a nice, neat, well-configured Emacs. now it's a piece of a zombie 2020-04-26T14:32:04Z lockywolf_: cos I keep telling myself "as soon as I finish SICP, I'l deal with all the bugs" 2020-04-26T14:32:10Z lockywolf_: and it just never happens 2020-04-26T14:32:15Z badkins joined #scheme 2020-04-26T14:33:53Z amirouche: how big sloc is your .emacs? 2020-04-26T14:34:24Z amirouche: mine is 2,000 2020-04-26T14:35:57Z lockywolf_: 937 2020-04-26T14:36:14Z lockywolf_: yours is more than twice longer 2020-04-26T14:36:19Z lockywolf_: I grovel 2020-04-26T14:36:31Z amirouche: here is mine: https://gist.github.com/amirouche/98c0ab0ac9db93b73f9f6fcbeba2b5ca 2020-04-26T14:36:51Z lockywolf_: 76 warnings 2020-04-26T14:36:58Z lockywolf_: from flycheck 2020-04-26T14:37:02Z badkins quit (Ping timeout: 260 seconds) 2020-04-26T14:37:10Z amirouche: actually, if you do no count emacs stuff, it is 250 sloc 2020-04-26T14:37:11Z wasamasa: flycheck warnings are only relevant for emacs packages 2020-04-26T14:37:27Z amirouche: even 170 sloc 2020-04-26T14:37:42Z amirouche: I do not do elisp at all. Might explain, why my .emacs is so small. 2020-04-26T14:38:00Z amirouche: 2k last lines are generated by emacs 2020-04-26T14:38:32Z amirouche: lockywolf_: what do you put in your .emacs so that it is so big compared to mine? 2020-04-26T14:42:14Z lockywolf_: emacs stuff is about 150 lines 2020-04-26T14:43:43Z lockywolf_: lemme put it on gist 2020-04-26T14:44:30Z amirouche: do not put passwords in the wild ;) 2020-04-26T15:01:16Z v_m_v quit (Remote host closed the connection) 2020-04-26T15:01:42Z v_m_v joined #scheme 2020-04-26T15:05:58Z v_m_v quit (Ping timeout: 260 seconds) 2020-04-26T15:39:34Z lockywolf_: amirouche, oops, then my .emacs becomes much shorter 2020-04-26T15:43:28Z badkins joined #scheme 2020-04-26T15:43:55Z lockywolf_: amirouche, https://gist.github.com/lockywolf/3b4811c1297982bbeb7c9f1da5252ab3 2020-04-26T15:45:57Z amirouche: thanks for sharing 2020-04-26T15:46:32Z lockywolf_: I think my scheme->fortran compiler kinda takes shape. 2020-04-26T15:47:29Z lockywolf_: A couple of red-eyed nights, and it'll have the interpreter working 2020-04-26T15:47:45Z badkins quit (Ping timeout: 244 seconds) 2020-04-26T15:47:59Z lockywolf_: is there a scheme for CUDA? 2020-04-26T15:48:42Z bars0 quit (Quit: leaving) 2020-04-26T16:02:41Z ngz quit (Remote host closed the connection) 2020-04-26T16:18:50Z Fare quit (Ping timeout: 260 seconds) 2020-04-26T16:27:01Z sp1ff quit (Ping timeout: 246 seconds) 2020-04-26T16:31:15Z sp1ff joined #scheme 2020-04-26T16:34:51Z SGASAU quit (Remote host closed the connection) 2020-04-26T16:35:23Z SGASAU joined #scheme 2020-04-26T16:39:01Z badkins joined #scheme 2020-04-26T16:39:58Z SGASAU` joined #scheme 2020-04-26T16:44:02Z SGASAU quit (Ping timeout: 260 seconds) 2020-04-26T16:47:30Z Fare joined #scheme 2020-04-26T17:06:47Z drakonis joined #scheme 2020-04-26T17:14:19Z SGASAU` quit (Remote host closed the connection) 2020-04-26T17:26:48Z v_m_v joined #scheme 2020-04-26T17:50:25Z izh_ quit (Quit: Leaving) 2020-04-26T18:22:52Z Fare quit (Ping timeout: 246 seconds) 2020-04-26T18:34:52Z xkapastel joined #scheme 2020-04-26T18:35:23Z SGASAU joined #scheme 2020-04-26T18:47:24Z badkins quit (Remote host closed the connection) 2020-04-26T18:55:58Z skapata joined #scheme 2020-04-26T18:56:46Z badkins joined #scheme 2020-04-26T19:00:19Z seepel joined #scheme 2020-04-26T19:01:38Z badkins quit (Ping timeout: 260 seconds) 2020-04-26T19:07:45Z badkins joined #scheme 2020-04-26T19:09:08Z lritter quit (Quit: Leaving) 2020-04-26T19:12:55Z seepel quit (Read error: Connection reset by peer) 2020-04-26T19:15:37Z jayde joined #scheme 2020-04-26T19:19:09Z SGASAU quit (Remote host closed the connection) 2020-04-26T19:19:42Z SGASAU joined #scheme 2020-04-26T19:27:56Z bars0 joined #scheme 2020-04-26T19:28:58Z badkins quit (Remote host closed the connection) 2020-04-26T19:29:41Z badkins joined #scheme 2020-04-26T19:34:46Z badkins quit (Ping timeout: 260 seconds) 2020-04-26T19:51:21Z torbo joined #scheme 2020-04-26T20:00:04Z lucasb joined #scheme 2020-04-26T20:07:38Z terpri quit (Ping timeout: 244 seconds) 2020-04-26T20:12:59Z terpri joined #scheme 2020-04-26T20:21:13Z SweetSense joined #scheme 2020-04-26T20:23:40Z SweetSense quit (Client Quit) 2020-04-26T20:25:42Z badkins joined #scheme 2020-04-26T20:29:45Z badkins quit (Ping timeout: 240 seconds) 2020-04-26T20:31:26Z X-Scale quit (Ping timeout: 265 seconds) 2020-04-26T20:31:41Z [X-Scale] joined #scheme 2020-04-26T20:31:47Z bars0 quit (Quit: leaving) 2020-04-26T20:31:57Z [X-Scale] is now known as X-Scale 2020-04-26T20:32:32Z badkins joined #scheme 2020-04-26T20:33:20Z ggole quit (Quit: Leaving) 2020-04-26T20:33:23Z tryte quit (Ping timeout: 240 seconds) 2020-04-26T20:33:38Z tryte joined #scheme 2020-04-26T20:37:05Z badkins quit (Ping timeout: 244 seconds) 2020-04-26T20:41:31Z v_m_v quit (Remote host closed the connection) 2020-04-26T20:42:28Z v_m_v joined #scheme 2020-04-26T20:42:30Z amirouche quit (Ping timeout: 260 seconds) 2020-04-26T20:46:43Z gravicappa quit (Ping timeout: 246 seconds) 2020-04-26T20:54:23Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-26T20:55:10Z corpix_ quit (Quit: corpix_) 2020-04-26T20:55:31Z corpix joined #scheme 2020-04-26T21:00:53Z raingloom quit (Remote host closed the connection) 2020-04-26T21:01:13Z raingloom joined #scheme 2020-04-26T21:06:19Z badkins joined #scheme 2020-04-26T21:10:58Z badkins quit (Ping timeout: 260 seconds) 2020-04-26T21:15:25Z raingloom quit (Ping timeout: 246 seconds) 2020-04-26T21:22:11Z v_m_v quit (Remote host closed the connection) 2020-04-26T21:26:46Z badkins joined #scheme 2020-04-26T21:29:47Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-26T21:31:15Z badkins quit (Ping timeout: 240 seconds) 2020-04-26T21:40:44Z raingloom joined #scheme 2020-04-26T21:43:31Z badkins joined #scheme 2020-04-26T21:55:14Z badkins quit (Ping timeout: 260 seconds) 2020-04-26T22:01:29Z SGASAU quit (Remote host closed the connection) 2020-04-26T22:02:01Z raingloom quit (Read error: Connection reset by peer) 2020-04-26T22:02:02Z SGASAU joined #scheme 2020-04-26T22:02:21Z raingloom joined #scheme 2020-04-26T22:05:11Z badkins joined #scheme 2020-04-26T22:11:25Z SGASAU quit (Remote host closed the connection) 2020-04-26T22:11:38Z badkins quit (Ping timeout: 260 seconds) 2020-04-26T22:11:56Z SGASAU joined #scheme 2020-04-26T22:14:01Z badkins joined #scheme 2020-04-26T22:18:52Z badkins quit (Ping timeout: 244 seconds) 2020-04-26T22:20:45Z raingloom quit (Ping timeout: 240 seconds) 2020-04-26T22:29:54Z whiteline quit (Ping timeout: 256 seconds) 2020-04-26T22:33:39Z Fare joined #scheme 2020-04-26T22:37:54Z whiteline joined #scheme 2020-04-26T22:39:01Z badkins joined #scheme 2020-04-26T22:53:38Z rgherdt quit (Ping timeout: 260 seconds) 2020-04-26T22:55:02Z whiteline quit (Ping timeout: 244 seconds) 2020-04-26T22:56:24Z badkins quit (Remote host closed the connection) 2020-04-26T22:59:24Z whiteline joined #scheme 2020-04-26T23:08:25Z nly joined #scheme 2020-04-26T23:48:51Z keep_learning joined #scheme 2020-04-26T23:49:39Z lucasb quit (Quit: Connection closed for inactivity) 2020-04-26T23:57:30Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-26T23:58:59Z seepel joined #scheme 2020-04-26T23:59:18Z SGASAU quit (Remote host closed the connection) 2020-04-26T23:59:45Z drakonis quit (Quit: WeeChat 2.8) 2020-04-27T00:05:22Z SGASAU joined #scheme 2020-04-27T00:18:08Z klovett quit (Ping timeout: 246 seconds) 2020-04-27T00:19:36Z epony quit (Remote host closed the connection) 2020-04-27T00:39:28Z seepel quit (Ping timeout: 246 seconds) 2020-04-27T00:41:03Z klovett joined #scheme 2020-04-27T00:46:27Z seepel joined #scheme 2020-04-27T00:56:22Z lockywolf joined #scheme 2020-04-27T01:05:17Z SGASAU quit (Remote host closed the connection) 2020-04-27T01:06:50Z SGASAU joined #scheme 2020-04-27T01:41:35Z pilne_ joined #scheme 2020-04-27T01:43:10Z pilne quit (Ping timeout: 246 seconds) 2020-04-27T01:45:32Z Fare quit (Ping timeout: 244 seconds) 2020-04-27T01:49:16Z Riastradh quit (Remote host closed the connection) 2020-04-27T02:04:30Z raingloom joined #scheme 2020-04-27T02:12:07Z lockywolf_ joined #scheme 2020-04-27T02:12:11Z Fare joined #scheme 2020-04-27T02:14:42Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-27T02:27:12Z drakonis joined #scheme 2020-04-27T02:27:26Z Riastradh joined #scheme 2020-04-27T02:36:24Z pilne_ quit (Quit: IceChat - Keeping PC's cool since 2000) 2020-04-27T02:42:14Z seepel quit (Read error: Connection reset by peer) 2020-04-27T02:59:41Z lockywolf__ joined #scheme 2020-04-27T03:01:45Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-27T03:09:15Z turtleman quit (Ping timeout: 240 seconds) 2020-04-27T03:20:15Z raingloom quit (Ping timeout: 240 seconds) 2020-04-27T03:22:37Z lockywolf_ joined #scheme 2020-04-27T03:25:14Z lockywolf__ quit (Ping timeout: 260 seconds) 2020-04-27T03:27:17Z pjb quit (Ping timeout: 265 seconds) 2020-04-27T03:31:03Z badkins joined #scheme 2020-04-27T03:46:12Z stultulo joined #scheme 2020-04-27T03:48:45Z f8l quit (Ping timeout: 240 seconds) 2020-04-27T03:48:45Z stultulo is now known as f8l 2020-04-27T03:55:01Z terpri quit (Read error: Connection reset by peer) 2020-04-27T03:56:12Z f8l quit (Remote host closed the connection) 2020-04-27T03:57:59Z f8l joined #scheme 2020-04-27T03:58:38Z torbo quit (Remote host closed the connection) 2020-04-27T04:02:51Z badkins quit (Remote host closed the connection) 2020-04-27T04:28:33Z epony joined #scheme 2020-04-27T04:45:49Z deesix quit (Ping timeout: 250 seconds) 2020-04-27T04:53:06Z deesix joined #scheme 2020-04-27T04:55:06Z brutalist joined #scheme 2020-04-27T05:00:27Z drakonis quit (Quit: WeeChat 2.8) 2020-04-27T05:03:15Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-27T05:04:46Z lockywolf joined #scheme 2020-04-27T05:09:02Z rgherdt joined #scheme 2020-04-27T05:10:15Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-27T05:10:37Z lockywolf joined #scheme 2020-04-27T05:14:16Z daviid quit (Ping timeout: 244 seconds) 2020-04-27T05:18:51Z tryte_ joined #scheme 2020-04-27T05:19:03Z tryte quit (Ping timeout: 240 seconds) 2020-04-27T05:20:52Z pinoaffe quit (Ping timeout: 265 seconds) 2020-04-27T05:29:47Z jayde left #scheme 2020-04-27T05:34:20Z amirouche joined #scheme 2020-04-27T05:47:08Z gravicappa joined #scheme 2020-04-27T05:53:00Z terpri joined #scheme 2020-04-27T05:53:35Z brutalist quit (Quit: Textual IRC Client: www.textualapp.com) 2020-04-27T06:08:30Z klovett quit (Ping timeout: 260 seconds) 2020-04-27T06:09:03Z lockywolf_ joined #scheme 2020-04-27T06:11:50Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-27T06:19:26Z terpri quit (Quit: Leaving) 2020-04-27T06:23:19Z terpri joined #scheme 2020-04-27T06:24:24Z retropikzel joined #scheme 2020-04-27T06:47:11Z SGASAU quit (Remote host closed the connection) 2020-04-27T06:47:41Z SGASAU joined #scheme 2020-04-27T06:49:54Z barodaret quit (Read error: Connection reset by peer) 2020-04-27T06:56:30Z stultulo joined #scheme 2020-04-27T06:57:36Z f8l quit (Ping timeout: 244 seconds) 2020-04-27T06:57:39Z stultulo is now known as f8l 2020-04-27T07:13:00Z terpri quit (Remote host closed the connection) 2020-04-27T07:13:37Z terpri joined #scheme 2020-04-27T07:19:27Z DKordic quit (Read error: Connection reset by peer) 2020-04-27T07:31:51Z v_m_v joined #scheme 2020-04-27T07:39:52Z cpressey joined #scheme 2020-04-27T07:40:11Z retropikzel quit (Quit: Leaving) 2020-04-27T07:42:46Z Lysandros joined #scheme 2020-04-27T07:42:46Z Lysandros quit (Changing host) 2020-04-27T07:42:46Z Lysandros joined #scheme 2020-04-27T07:49:09Z DKordic joined #scheme 2020-04-27T07:52:06Z DKordic: jcowan: Shall We assume ""False = True"" is a ""SyntaxError"" rather than a Thought Crime? 2020-04-27T08:00:20Z raingloom joined #scheme 2020-04-27T08:06:10Z skapata quit (Quit: ฤœis!) 2020-04-27T08:06:43Z lritter joined #scheme 2020-04-27T08:11:53Z pjb joined #scheme 2020-04-27T08:12:56Z civodul joined #scheme 2020-04-27T08:14:23Z rgherdt quit (Ping timeout: 265 seconds) 2020-04-27T08:26:14Z Blkt quit (Quit: No Ping reply in 180 seconds.) 2020-04-27T08:26:14Z lockywolf joined #scheme 2020-04-27T08:27:10Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-27T08:27:30Z Blkt joined #scheme 2020-04-27T08:48:46Z lockywolf: Sorry for off-topic, but which stack-based language would people around recommend? 2020-04-27T08:49:58Z lockywolf: Or maybe, some book with an introduction to stack-based (concatenative) languages similar to sicp in the amount of detail. 2020-04-27T08:53:02Z wasamasa: https://www.forth.com/starting-forth/ 2020-04-27T08:54:34Z wasamasa: there's way less exercises though 2020-04-27T08:56:46Z wasamasa: there's also Thinking Forth 2020-04-27T08:57:58Z lockywolf_ joined #scheme 2020-04-27T08:58:54Z lockywolf_: wasamasa, thanks 2020-04-27T08:59:28Z wasamasa: both combined should be roughly equivalent to SICP 2020-04-27T08:59:51Z wasamasa: the books are interesting as you explore a completely different mindset, where abstraction isn't king :D 2020-04-27T09:00:17Z ecraven: is that true of forth? don't they abstract everything behind words? 2020-04-27T09:00:34Z lockywolf quit (Ping timeout: 244 seconds) 2020-04-27T09:02:35Z wasamasa: you don't really separate between high- and low-level layers 2020-04-27T09:02:48Z lockywolf_: I just got a job "programming in a concatenative language", since I'm "the only guy who managed to understand those parentheses, so must know everything about that" 2020-04-27T09:03:10Z wasamasa: and the abstractions tend to be minimal 2020-04-27T09:03:21Z lockywolf_ facepalms 2020-04-27T09:05:09Z wasamasa: due to this there's more refactoring involved 2020-04-27T09:05:11Z eagleflo quit (Remote host closed the connection) 2020-04-27T09:05:24Z lockywolf_: saying that, the guy who hired me didn't really understand anything about the subject. just had some spare grant money he urgently needed to spend 2020-04-27T09:05:51Z rain1 joined #scheme 2020-04-27T09:06:17Z wasamasa: anyway, Thinking Forth does a better job of explaining that mindset 2020-04-27T09:07:13Z lockywolf_: thanks for the suggestion 2020-04-27T09:07:41Z dmiles quit (Read error: Connection reset by peer) 2020-04-27T09:08:31Z wasamasa: I don't know about other concatenative languages, but jcowan mentions Joy occasionally in here and other scheme channels 2020-04-27T09:09:27Z wasamasa: and his name appears on the wikipedia page 2020-04-27T09:09:28Z wasamasa: zoinks 2020-04-27T09:09:29Z pjb quit (Ping timeout: 265 seconds) 2020-04-27T09:10:03Z lockywolf_: yes, I have just found it too. there is even a lisp implementation in joy 2020-04-27T09:10:48Z lockywolf_: ouch, forth is, like, paid-for? 2020-04-27T09:10:57Z wasamasa: what do you mean? 2020-04-27T09:11:09Z wasamasa: there's lots of implementations and some are proprietary 2020-04-27T09:11:22Z eagleflo joined #scheme 2020-04-27T09:11:41Z wasamasa: like this thing: https://8th-dev.com/ 2020-04-27T09:11:41Z dmiles joined #scheme 2020-04-27T09:11:58Z lockywolf_: I just looked at the website of starting-forth 2020-04-27T09:12:07Z lockywolf_: haven't done extensive research 2020-04-27T09:14:28Z wasamasa: I'd try pforth or gforth 2020-04-27T09:14:52Z wasamasa: maybe retro 2020-04-27T09:15:00Z wasamasa: http://retroforth.com/ 2020-04-27T09:15:14Z ecraven: if you're brave enough, colorforth ;D 2020-04-27T09:15:36Z wasamasa: look, it does literate programming: http://forth.works/examples/Casket-HTTP.forth.html 2020-04-27T09:16:59Z lockywolf_: cool, thanks 2020-04-27T09:17:11Z wasamasa: but then, it does depart from traditional forth 2020-04-27T09:17:14Z wasamasa: so does factor 2020-04-27T09:17:23Z lockywolf_: 8th is also attempting to sells things 2020-04-27T09:17:48Z wasamasa: I'm kind of surprised they'd try selling software instead of selling hardware 2020-04-27T09:17:55Z wasamasa: that's the kind of niche forth works better for 2020-04-27T09:17:59Z lockywolf_: I think, so far even Joy can be enough. 2020-04-27T09:18:28Z wasamasa: http://www.greenarraychips.com/ 2020-04-27T09:20:16Z lockywolf joined #scheme 2020-04-27T09:22:38Z lockywolf: That is an impressive thing. 2020-04-27T09:23:38Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-27T09:25:37Z lockywolf: wasamasa, why these machines are cool? 2020-04-27T09:25:53Z lockywolf: they are "super fast if you program them in forth"? 2020-04-27T09:27:34Z amirouche: I read it is because it is easy to write drivers in forth. 2020-04-27T09:27:42Z wasamasa: yeah, they lend themselves to be programmed in something less terrible than your typical ISA 2020-04-27T09:27:51Z amirouche: drivers for hardware. 2020-04-27T09:27:59Z lockywolf: drivers.. 2020-04-27T09:28:10Z wasamasa: this is by Chuck Moore who did colorforth 2020-04-27T09:28:43Z lockywolf: is it doable to compile scheme to forth? 2020-04-27T09:29:01Z amirouche: I read it is used in medical hardware, and telescopes. I guess, it works without OS. Also, you need to interop with the driver somehow, I do not know how that happens. 2020-04-27T09:29:04Z C-Keen: has been done 2020-04-27T09:31:31Z C-Keen: http://zwizwa.be/staapl/staapl.html 2020-04-27T09:33:07Z lockywolf: hm... looks sinful 2020-04-27T09:33:28Z lockywolf: in a good sense 2020-04-27T09:41:45Z Fare quit (Ping timeout: 240 seconds) 2020-04-27T09:42:32Z pjb joined #scheme 2020-04-27T09:54:26Z eagleflo quit (Remote host closed the connection) 2020-04-27T09:55:49Z longshi joined #scheme 2020-04-27T09:58:04Z lockywolf: amirouche, any useful stuff in the .emacs? 2020-04-27T09:58:12Z eagleflo joined #scheme 2020-04-27T09:59:39Z pjb quit (Ping timeout: 272 seconds) 2020-04-27T10:04:28Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-27T10:19:10Z raingloom quit (Ping timeout: 260 seconds) 2020-04-27T10:22:21Z v_m_v quit 2020-04-27T10:32:45Z terpri quit (Ping timeout: 240 seconds) 2020-04-27T10:34:40Z raingloom joined #scheme 2020-04-27T11:06:08Z cpressey quit (Quit: WeeChat 1.9.1) 2020-04-27T11:10:50Z lockywolf joined #scheme 2020-04-27T11:11:40Z TCZ joined #scheme 2020-04-27T11:28:27Z lockywolf: there is something astonishing that generating code is so much easier than parsing, and yet writing code is much harder than reading 2020-04-27T11:30:00Z amirouche: lockywolf: re .emacs, it is interesting but I do not use the feature you rely on (e.g. my use org-mode does not require more config) 2020-04-27T11:31:42Z lockywolf: pas du problรฉmes, it's a super newbie .emacs 2020-04-27T11:32:04Z lockywolf: des? 2020-04-27T11:33:26Z amirouche: de 2020-04-27T11:38:38Z lockywolf: merci 2020-04-27T11:55:59Z msiism joined #scheme 2020-04-27T12:01:20Z msiism: I'm reading tspl4. Chapter 2.5. explains lambda expressions. I think I get what they are and what they are good for. However, I'm having trouble understanding the follwing example: ((lambdaย (x)ย (+ย xย x))ย (*ย 3ย 4)). 2020-04-27T12:01:25Z msiism: I get what this does, but why do you need to have extra parentheses around the lambda? I mean, you don't write ((*) 3 4) either. Probably because in (* 3 4), * is simply a procedure application, and not at the same time a function definitionโ€ฆ 2020-04-27T12:02:29Z mdhughes: lambda just creates a procedure, (proc) evaluates it 2020-04-27T12:04:07Z msiism: Ok, what I was trying to say was that * is already a predfined function that you simply call. While (lambdaย (x)ย (+ย xย x)) includes a function definition and thus needs to be in parentheses, right? 2020-04-27T12:04:54Z mdhughes: (lambda ... ) creates the procedure, but it doesn't evaluate it. ((lambda ...) args) is the evaluation. 2020-04-27T12:05:30Z SGASAU quit (Remote host closed the connection) 2020-04-27T12:06:10Z SGASAU joined #scheme 2020-04-27T12:06:16Z msiism: Yes, that's what I mean, I guess. With (* 3 4), you don't create the * function inline, therefore no extra parentheses are needed. 2020-04-27T12:06:21Z wasamasa: * is a procedure, (lambda ...) is a procedure 2020-04-27T12:06:35Z wasamasa: (* ...) is a procedure call, ((lambda ...) ...) is a procedure call 2020-04-27T12:06:45Z TCZ: (lambda (x) (+ x x) (* 3 4)) would be giving 3 arguments to lambda but lambda needs 2 arguments.... 2020-04-27T12:07:01Z msiism: TCZ: Yes, I get that this would be wrong. 2020-04-27T12:07:39Z sdu quit (Ping timeout: 265 seconds) 2020-04-27T12:07:50Z lockywolf quit (Read error: Connection reset by peer) 2020-04-27T12:08:00Z mdhughes: Think about it as subexpressions: f=(lambda (x) (+ x x)); g=(* 3 4); (f g) 2020-04-27T12:08:43Z msiism: wasamasa: And the difference between the two in the above example is that lamda defines a function inline, or on the fly, right? 2020-04-27T12:08:49Z msiism: mdhughes: I see. That makes sense. 2020-04-27T12:08:57Z wasamasa: yes 2020-04-27T12:09:06Z lockywolf joined #scheme 2020-04-27T12:09:08Z badkins joined #scheme 2020-04-27T12:09:09Z sdu joined #scheme 2020-04-27T12:09:32Z msiism: Ok, I get it. Thanks. 2020-04-27T12:09:58Z mdhughes: Cool. (afk to play vidyagames now) 2020-04-27T12:10:14Z wasamasa: you can turn that anonymous procedure into a named one 2020-04-27T12:10:29Z msiism: By the way, tspl4 is a really nice book. It's really straight-forward and I like the layout a lot. 2020-04-27T12:10:31Z wasamasa: Dybvig prefers defining them that way instead of using syntactic sugar 2020-04-27T12:10:50Z msiism: wasamasa: Yeah there's an example in that chapter that does that. 2020-04-27T12:13:30Z badkins quit (Ping timeout: 260 seconds) 2020-04-27T12:16:05Z jobol joined #scheme 2020-04-27T12:16:09Z jobol_ joined #scheme 2020-04-27T12:16:16Z jobol_ quit (Remote host closed the connection) 2020-04-27T12:29:35Z klovett joined #scheme 2020-04-27T12:29:54Z turtleman joined #scheme 2020-04-27T12:36:21Z cpressey joined #scheme 2020-04-27T12:48:19Z amirouche: msiism: afaik, chez scheme only rely on (define foo (lambda (a b c . rest) (apply + a b c rest))) 2020-04-27T12:48:24Z amirouche: kind of definitions 2020-04-27T12:49:23Z mdhughes: ? You can do (define (foo x) ...) just fine in Chez. 2020-04-27T12:49:43Z zmt01 joined #scheme 2020-04-27T12:49:58Z amirouche: yes, but (define foo (lambda ...)) is prefered apparantly the source code of chez 2020-04-27T12:50:54Z msiism: I'm currently using GNU Guile, though the REPL is really not as nice as Racket's. Maybe because I'm using an older version. 2020-04-27T12:51:58Z amirouche: what is the probleme with guile REPL? with Chez I use 'rlwrap scheme' as REPL and I compile Chez without ncurse (and x11) support 2020-04-27T12:52:45Z zmt00 quit (Ping timeout: 240 seconds) 2020-04-27T12:56:01Z mdhughes: Chez source is written by Dybvig, who prefers the (define foo... form. And since I've started using case-lambda in lieu of optional keywords, he's got a good point. But the shorthand is used by most other people. 2020-04-27T12:56:40Z msiism: Well, the prompt looks weirdly verbose, but that can be configured. Then there's apparently no command-line history and line editiong is primitive. 2020-04-27T12:57:11Z mdhughes: guile probably has a readline module you have to enable in its config, like CHICKEN does. 2020-04-27T12:57:30Z msiism: I see. I'll look into that. 2020-04-27T12:57:34Z mdhughes: I massively prefer Chez's native editor, it's the best REPL of any existing Scheme. 2020-04-27T12:58:03Z mdhughes: And history just works, dumps to ~/.csi_history 2020-04-27T12:58:39Z ecraven: isn't csi chicken? 2020-04-27T12:58:45Z mdhughes: s/.csi_history/.chezscheme_history/ 2020-04-27T12:59:17Z ecraven: what do you like about chez's repl? what makes it better? 2020-04-27T12:59:36Z mdhughes: It has a full multi-line expression editor. 2020-04-27T12:59:45Z msiism: Hm... Chez Scheme doesn't seem to be in the repositories of the Linux system I use. 2020-04-27T13:00:29Z mdhughes: When you hit up, ^L you see the entire thing, can move around with emacs keys. 2020-04-27T13:02:10Z turtleman quit (Ping timeout: 246 seconds) 2020-04-27T13:06:02Z TCZ quit (Quit: Leaving) 2020-04-27T13:06:19Z TCZ joined #scheme 2020-04-27T13:11:07Z TCZ quit (Client Quit) 2020-04-27T13:12:57Z TCZ joined #scheme 2020-04-27T13:17:43Z TCZ quit (Client Quit) 2020-04-27T13:18:55Z raingloom quit (Remote host closed the connection) 2020-04-27T13:19:14Z raingloom joined #scheme 2020-04-27T13:32:51Z longshi quit (Ping timeout: 244 seconds) 2020-04-27T13:43:21Z drakonis joined #scheme 2020-04-27T13:51:18Z ahungry joined #scheme 2020-04-27T13:52:13Z cpressey quit (Quit: WeeChat 1.9.1) 2020-04-27T13:54:45Z badkins joined #scheme 2020-04-27T13:56:03Z corpix quit (Ping timeout: 240 seconds) 2020-04-27T13:57:45Z corpix joined #scheme 2020-04-27T13:59:50Z pjb joined #scheme 2020-04-27T13:59:51Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-27T14:00:01Z ArthurStrong joined #scheme 2020-04-27T14:00:59Z msiism is beginning to think nested lambdas are a recipe to melt brains. 2020-04-27T14:02:52Z amirouche: x) 2020-04-27T14:02:59Z amirouche: check out srfi-180 a json parser 2020-04-27T14:03:49Z amirouche: https://github.com/scheme-requests-for-implementation/srfi-180/blob/master/srfi/180/body.scm#L285 2020-04-27T14:04:58Z wasamasa: great, now throw some stress tests at it and see what it breaks on 2020-04-27T14:08:18Z DKordic: msiism: Exactly, I use bracket instead of parentheses for _FEXPR application_: "([lambda [x] (+ x x)] (* 3 4))". FEXPR application is not the same as application of FEXPR: "(lambda ...)" is not the same as "[lambda ...]"! 2020-04-27T14:08:32Z DKordic: msiism: See W:Currying . 2020-04-27T14:09:13Z mr_machina joined #scheme 2020-04-27T14:14:37Z msiism: DKordic: Okay, I'll look into that. It's not so much the parentheses that trip me off, though. It's wrapping my head around functions that take functions as arguments. Not the concept, I mean, but the actual workings of particular cases. 2020-04-27T14:17:27Z hugh_marera joined #scheme 2020-04-27T14:28:28Z rain1 quit (Quit: leaving) 2020-04-27T14:33:26Z hugh_marera quit (Ping timeout: 260 seconds) 2020-04-27T14:39:43Z rich_ joined #scheme 2020-04-27T14:43:52Z nly quit (Remote host closed the connection) 2020-04-27T14:43:53Z longshi joined #scheme 2020-04-27T14:44:57Z msiism left #scheme 2020-04-27T14:56:46Z lockywolf_ joined #scheme 2020-04-27T14:58:41Z cpressey joined #scheme 2020-04-27T14:59:18Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-27T15:00:26Z ahungry quit (Remote host closed the connection) 2020-04-27T15:05:20Z TCZ joined #scheme 2020-04-27T15:10:11Z rain1 joined #scheme 2020-04-27T15:12:26Z rgherdt joined #scheme 2020-04-27T15:19:53Z drakonis quit (Quit: WeeChat 2.8) 2020-04-27T15:22:36Z badkins quit (Remote host closed the connection) 2020-04-27T15:27:47Z badkins joined #scheme 2020-04-27T15:31:27Z retropikzel joined #scheme 2020-04-27T15:39:51Z titanbiscuit quit (Ping timeout: 260 seconds) 2020-04-27T15:40:39Z lockywolf__ joined #scheme 2020-04-27T15:40:52Z titanbiscuit joined #scheme 2020-04-27T15:41:15Z lockywolf__ quit (Remote host closed the connection) 2020-04-27T15:41:41Z lockywolf__ joined #scheme 2020-04-27T15:42:28Z lockywolf_ quit (Ping timeout: 246 seconds) 2020-04-27T15:58:54Z raingloom quit (Ping timeout: 260 seconds) 2020-04-27T15:58:55Z cpressey quit (Quit: WeeChat 1.9.1) 2020-04-27T15:59:59Z daviid joined #scheme 2020-04-27T16:08:05Z rgherdt quit (Remote host closed the connection) 2020-04-27T16:17:15Z longshi quit (Ping timeout: 240 seconds) 2020-04-27T16:18:00Z TCZ2 joined #scheme 2020-04-27T16:18:31Z Lysandros quit (Remote host closed the connection) 2020-04-27T16:19:05Z SGASAU` joined #scheme 2020-04-27T16:19:08Z f8l quit (Read error: Connection reset by peer) 2020-04-27T16:19:15Z edgar-xyz joined #scheme 2020-04-27T16:20:18Z stepnem quit (Ping timeout: 260 seconds) 2020-04-27T16:20:46Z edgar-rft quit (Ping timeout: 244 seconds) 2020-04-27T16:20:46Z dozzie_ joined #scheme 2020-04-27T16:21:11Z stepnem joined #scheme 2020-04-27T16:21:48Z cmatei quit (Ping timeout: 244 seconds) 2020-04-27T16:23:22Z f8l joined #scheme 2020-04-27T16:26:34Z daviid quit (*.net *.split) 2020-04-27T16:26:34Z TCZ quit (*.net *.split) 2020-04-27T16:26:34Z mr_machina quit (*.net *.split) 2020-04-27T16:26:34Z SGASAU quit (*.net *.split) 2020-04-27T16:26:35Z whiteline quit (*.net *.split) 2020-04-27T16:26:36Z lockywolf__ quit (*.net *.split) 2020-04-27T16:26:36Z _apg quit (*.net *.split) 2020-04-27T16:26:37Z Blukunfando quit (*.net *.split) 2020-04-27T16:26:37Z nchambers quit (*.net *.split) 2020-04-27T16:26:37Z tolja quit (*.net *.split) 2020-04-27T16:26:37Z yosafbridge quit (*.net *.split) 2020-04-27T16:26:37Z scal_ quit (*.net *.split) 2020-04-27T16:26:38Z copec quit (*.net *.split) 2020-04-27T16:26:38Z fiddlerwoaroof quit (*.net *.split) 2020-04-27T16:26:38Z dozzie quit (*.net *.split) 2020-04-27T16:26:38Z fgudin quit (*.net *.split) 2020-04-27T16:27:22Z dozzie_ is now known as dozzie 2020-04-27T16:28:45Z cmatei joined #scheme 2020-04-27T16:28:49Z nchambers joined #scheme 2020-04-27T16:29:09Z fiddlerwoaroof joined #scheme 2020-04-27T16:29:33Z turtleman joined #scheme 2020-04-27T16:31:52Z daviid joined #scheme 2020-04-27T16:31:52Z mr_machina joined #scheme 2020-04-27T16:31:52Z whiteline joined #scheme 2020-04-27T16:32:45Z lockywolf__ joined #scheme 2020-04-27T16:32:45Z _apg joined #scheme 2020-04-27T16:32:45Z tolja joined #scheme 2020-04-27T16:32:45Z yosafbridge joined #scheme 2020-04-27T16:32:45Z scal_ joined #scheme 2020-04-27T16:32:45Z copec joined #scheme 2020-04-27T16:32:45Z fgudin joined #scheme 2020-04-27T16:40:38Z badkins quit (Remote host closed the connection) 2020-04-27T16:45:13Z lockywolf__ quit (Ping timeout: 264 seconds) 2020-04-27T16:46:02Z gravicappa quit (Ping timeout: 260 seconds) 2020-04-27T16:46:20Z lockywolf joined #scheme 2020-04-27T16:46:42Z rgherdt joined #scheme 2020-04-27T16:46:44Z lockywolf quit (Remote host closed the connection) 2020-04-27T16:46:45Z gravicappa joined #scheme 2020-04-27T16:47:09Z jayde joined #scheme 2020-04-27T16:47:17Z lockywolf joined #scheme 2020-04-27T16:49:45Z lockywolf quit (Remote host closed the connection) 2020-04-27T16:50:11Z lockywolf joined #scheme 2020-04-27T16:50:59Z lockywolf quit (Max SendQ exceeded) 2020-04-27T16:52:05Z lockywolf joined #scheme 2020-04-27T16:58:46Z zaifir: The ฮป-calculus is meant to be minimal, not easily comprehensible. 2020-04-27T17:00:06Z badkins joined #scheme 2020-04-27T17:04:39Z TCZ2 quit (Quit: Leaving) 2020-04-27T17:06:38Z turtleman quit (Ping timeout: 256 seconds) 2020-04-27T17:18:27Z turtleman joined #scheme 2020-04-27T17:18:37Z f8l quit (Remote host closed the connection) 2020-04-27T17:21:32Z cmatei quit (Ping timeout: 256 seconds) 2020-04-27T17:21:44Z f8l joined #scheme 2020-04-27T17:23:55Z badkins quit (Remote host closed the connection) 2020-04-27T17:26:18Z gravicappa quit (*.net *.split) 2020-04-27T17:26:18Z _apg quit (*.net *.split) 2020-04-27T17:26:19Z tolja quit (*.net *.split) 2020-04-27T17:26:19Z yosafbridge quit (*.net *.split) 2020-04-27T17:26:19Z scal_ quit (*.net *.split) 2020-04-27T17:26:20Z copec quit (*.net *.split) 2020-04-27T17:26:20Z fgudin quit (*.net *.split) 2020-04-27T17:26:20Z daviid quit (*.net *.split) 2020-04-27T17:26:21Z mr_machina quit (*.net *.split) 2020-04-27T17:26:21Z whiteline quit (*.net *.split) 2020-04-27T17:28:47Z edgar-xyz quit (Quit: Leaving) 2020-04-27T17:29:36Z gravicappa joined #scheme 2020-04-27T17:29:36Z _apg joined #scheme 2020-04-27T17:29:36Z tolja joined #scheme 2020-04-27T17:29:36Z yosafbridge joined #scheme 2020-04-27T17:29:36Z scal_ joined #scheme 2020-04-27T17:29:36Z copec joined #scheme 2020-04-27T17:29:36Z fgudin joined #scheme 2020-04-27T17:29:38Z cmatei joined #scheme 2020-04-27T17:29:43Z daviid joined #scheme 2020-04-27T17:29:43Z mr_machina joined #scheme 2020-04-27T17:29:43Z whiteline joined #scheme 2020-04-27T17:30:41Z edgar-rft joined #scheme 2020-04-27T17:34:30Z turtleman quit (Ping timeout: 260 seconds) 2020-04-27T17:35:52Z edgar-rft quit (Quit: Leaving) 2020-04-27T17:36:12Z edw joined #scheme 2020-04-27T17:36:51Z edgar-rft joined #scheme 2020-04-27T17:39:49Z amirouche quit (Ping timeout: 244 seconds) 2020-04-27T17:44:14Z retropikzel quit (Quit: Leaving) 2020-04-27T17:46:10Z edgar-rft quit (Quit: Leaving) 2020-04-27T17:49:31Z edgar-rft joined #scheme 2020-04-27T17:51:28Z skapata joined #scheme 2020-04-27T18:17:13Z badkins joined #scheme 2020-04-27T18:18:41Z f8l quit (Remote host closed the connection) 2020-04-27T18:19:20Z lloda quit (Remote host closed the connection) 2020-04-27T18:19:57Z zig joined #scheme 2020-04-27T18:20:14Z edgar-rft quit (Ping timeout: 260 seconds) 2020-04-27T18:20:31Z f8l joined #scheme 2020-04-27T18:20:55Z zig: hello #scheme 2020-04-27T18:21:15Z cmatei quit (Ping timeout: 240 seconds) 2020-04-27T18:23:19Z edw quit (Remote host closed the connection) 2020-04-27T18:23:26Z edw joined #scheme 2020-04-27T18:24:45Z zig: about the nano compiler approach, I mean nanopass, I read that the pass should be constructed starting from the target, is that a real thing? 2020-04-27T18:24:46Z raingloom joined #scheme 2020-04-27T18:24:50Z lockywolf_ joined #scheme 2020-04-27T18:25:02Z zig: because I can not make sense of it. 2020-04-27T18:25:17Z zig: In my head I see both ends but the middle is very blur 2020-04-27T18:26:49Z lockywolf quit (Ping timeout: 258 seconds) 2020-04-27T18:26:54Z edgar-rft joined #scheme 2020-04-27T18:29:29Z gwatt: zig: are talking specifically about https://github.com/nanopass/nanopass-framework-scheme ? 2020-04-27T18:30:38Z cmatei joined #scheme 2020-04-27T18:30:41Z zig: yes 2020-04-27T18:31:38Z gwatt: You should have two languages defined: a source and a target. 2020-04-27T18:33:12Z gwatt: Do you have those? 2020-04-27T18:33:15Z zig: yes 2020-04-27T18:34:13Z gwatt: And then you the define-pass syntax. It's a pattern matcher that (iirc) guarantees all source forms are matched. 2020-04-27T18:34:49Z luni joined #scheme 2020-04-27T18:35:04Z gwatt: So your patterns should match some part of the source language, and this is where the metavariable names come in. 2020-04-27T18:36:19Z gwatt: You use those metavariable names with some suffix to identify expressions in the source language and then transform them to the target language 2020-04-27T18:36:48Z zig: I know, I already did some nanopass framework, I ported the scheme->c compiler to javascript 2020-04-27T18:37:08Z zig: I am trying to figure it again but without looking at existing material.. 2020-04-27T18:37:16Z gwatt: Oh, I misread your opening statement. I thought you were confused about how to construct passes 2020-04-27T18:37:19Z gwatt: nevermind 2020-04-27T18:37:51Z zig: I wonder how if I should go upward from the target to the source OR from the source to the target when creating my pass 2020-04-27T18:37:59Z zaifir: Isn't it just a set of macros that generates a compiler from a context-free grammar? 2020-04-27T18:38:07Z zaifir hasn't looked at that paper in a while. 2020-04-27T18:38:19Z Fare joined #scheme 2020-04-27T18:41:49Z gwatt: zig: the approach taken in the IU compilers course, where nanopass came from, is to start at the lowest level and build up to a reasonable imitation of scheme. 2020-04-27T18:42:54Z zig: gwatt: so that is the real thing, I will try that way. Thanks! 2020-04-27T18:44:31Z gwatt: We started in the first week with what was effectively amd64 assembly wrapped in parenthesis and then targeted that language in the second, and so on 2020-04-27T18:45:54Z zaifir: gwatt: So today's source language is always tomorrow's target? 2020-04-27T18:46:53Z gwatt: zaifir: certainly if you have a nanopass 2020-04-27T18:47:20Z zig: I am not aware of the next leap in programming language 2020-04-27T18:47:26Z zig still waiting on probkanren 2020-04-27T18:47:43Z Riastradh: zig: https://github.com/probcomp/Venturecxx 2020-04-27T18:49:02Z zaifir: (Sometimes today's source *is* tomorrow's target: https://ro-che.info/ccc/20) 2020-04-27T18:49:51Z zig: (maybe I should have stayed quiet this time) 2020-04-27T18:50:44Z zaifir: zig: You might also be interested in ฮฑKanren (nominal logic): http://webyrd.net/alphamk/alphamk.pdf 2020-04-27T18:54:00Z zaifir: Riastradh: libboost! *runs* 2020-04-27T18:54:41Z Riastradh: zaifir: Can probably skip the boost parts of it if you just use the lite backend. 2020-04-27T18:55:10Z Riastradh: I don't think the C++ backend has been maintained in a while (much longer than the Python backend). 2020-04-27T18:57:58Z cpressey joined #scheme 2020-04-27T19:01:26Z amirouche joined #scheme 2020-04-27T19:01:43Z brutalist joined #scheme 2020-04-27T19:02:05Z cpressey quit (Client Quit) 2020-04-27T19:14:12Z edw: Anyone know offhand if `brew install -HEAD guile` installs 3.0.x on OS X? 2020-04-27T19:14:29Z edw: s/-HEAD/--HEAD/ 2020-04-27T19:15:50Z edw quit (Remote host closed the connection) 2020-04-27T19:20:05Z edw joined #scheme 2020-04-27T19:24:11Z edw quit (Remote host closed the connection) 2020-04-27T19:24:38Z edw joined #scheme 2020-04-27T20:04:23Z rain1 quit (Quit: leaving) 2020-04-27T20:13:17Z lockywolf__ joined #scheme 2020-04-27T20:15:20Z lockywolf_ quit (Ping timeout: 244 seconds) 2020-04-27T20:16:31Z brutalist quit (Quit: My MacBook Air has gone to sleep. ZZZzzzโ€ฆ) 2020-04-27T20:17:26Z f8l quit (Remote host closed the connection) 2020-04-27T20:19:18Z lockywolf_ joined #scheme 2020-04-27T20:21:05Z f8l joined #scheme 2020-04-27T20:21:15Z lockywolf__ quit (Ping timeout: 240 seconds) 2020-04-27T20:29:12Z brutalist joined #scheme 2020-04-27T20:32:57Z X-Scale` joined #scheme 2020-04-27T20:33:28Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-27T20:33:35Z X-Scale` is now known as X-Scale 2020-04-27T20:35:30Z xkapastel joined #scheme 2020-04-27T20:46:41Z lritter quit (Remote host closed the connection) 2020-04-27T20:55:46Z Blukunfando joined #scheme 2020-04-27T21:05:43Z lockywolf__ joined #scheme 2020-04-27T21:08:14Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-27T21:12:56Z SGASAU` quit (Remote host closed the connection) 2020-04-27T21:13:27Z SGASAU` joined #scheme 2020-04-27T21:31:38Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-27T21:33:12Z SGASAU` quit (Remote host closed the connection) 2020-04-27T21:33:56Z SGASAU` joined #scheme 2020-04-27T21:42:16Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-27T21:43:01Z SGASAU joined #scheme 2020-04-27T21:57:53Z longshi joined #scheme 2020-04-27T22:02:01Z raingloom quit (Remote host closed the connection) 2020-04-27T22:02:17Z raingloom joined #scheme 2020-04-27T22:02:27Z jobol quit (Quit: Leaving) 2020-04-27T22:09:25Z lockywolf_ joined #scheme 2020-04-27T22:11:46Z lockywolf__ quit (Ping timeout: 260 seconds) 2020-04-27T22:12:13Z gravicappa quit (Ping timeout: 264 seconds) 2020-04-27T22:13:46Z keep_learning joined #scheme 2020-04-27T22:15:23Z pjb quit (Ping timeout: 265 seconds) 2020-04-27T22:18:06Z f8l quit (Remote host closed the connection) 2020-04-27T22:19:20Z f8l joined #scheme 2020-04-27T22:21:55Z longshi quit (Ping timeout: 244 seconds) 2020-04-27T22:30:39Z longshi joined #scheme 2020-04-27T22:30:43Z X-Scale` joined #scheme 2020-04-27T22:31:50Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-27T22:31:51Z X-Scale` is now known as X-Scale 2020-04-27T22:35:30Z zig quit (Ping timeout: 260 seconds) 2020-04-27T22:43:23Z badkins quit (Remote host closed the connection) 2020-04-27T22:48:47Z SGASAU quit (Remote host closed the connection) 2020-04-27T22:49:17Z SGASAU joined #scheme 2020-04-27T22:50:04Z pjb joined #scheme 2020-04-27T22:51:32Z SGASAU quit (Remote host closed the connection) 2020-04-27T22:51:57Z SGASAU joined #scheme 2020-04-27T22:54:27Z badkins joined #scheme 2020-04-27T22:54:56Z turtleman joined #scheme 2020-04-27T23:10:16Z titanbiscuit quit (Quit: ZNC 1.7.5 - https://znc.in) 2020-04-27T23:10:36Z titanbiscuit joined #scheme 2020-04-27T23:12:15Z brutalist quit (Ping timeout: 240 seconds) 2020-04-27T23:13:53Z stultulo joined #scheme 2020-04-27T23:14:01Z f8l quit (Ping timeout: 264 seconds) 2020-04-27T23:14:14Z stultulo is now known as f8l 2020-04-27T23:15:25Z ArthurStrong quit (Quit: leaving) 2020-04-27T23:22:43Z rgherdt quit (Ping timeout: 272 seconds) 2020-04-27T23:41:51Z badkins quit (Remote host closed the connection) 2020-04-27T23:42:30Z badkins joined #scheme 2020-04-27T23:45:05Z torbo joined #scheme 2020-04-27T23:49:19Z badkins quit (Ping timeout: 246 seconds) 2020-04-27T23:50:37Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-27T23:52:43Z zooey quit (Ping timeout: 240 seconds) 2020-04-27T23:52:55Z zooey joined #scheme 2020-04-28T00:00:34Z corpix quit (Remote host closed the connection) 2020-04-28T00:00:51Z corpix joined #scheme 2020-04-28T00:04:28Z terpri joined #scheme 2020-04-28T00:24:48Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-28T00:26:33Z badkins joined #scheme 2020-04-28T00:27:49Z pilne joined #scheme 2020-04-28T00:33:25Z rain joined #scheme 2020-04-28T00:35:58Z raingloom quit (Ping timeout: 260 seconds) 2020-04-28T00:50:15Z luni quit (Ping timeout: 240 seconds) 2020-04-28T00:57:36Z lockywolf joined #scheme 2020-04-28T01:06:04Z jao joined #scheme 2020-04-28T01:10:36Z badkins quit (Remote host closed the connection) 2020-04-28T01:11:11Z badkins joined #scheme 2020-04-28T01:14:19Z badkins quit (Remote host closed the connection) 2020-04-28T01:14:35Z badkins joined #scheme 2020-04-28T01:25:01Z badkins quit (Remote host closed the connection) 2020-04-28T01:25:32Z badkins joined #scheme 2020-04-28T01:29:35Z ahungry joined #scheme 2020-04-28T01:30:02Z badkins quit (Ping timeout: 260 seconds) 2020-04-28T01:41:03Z mdhughes: % brew info guile 2020-04-28T01:41:03Z mdhughes: guile: stable 2.2.7 (bottled), HEAD 2020-04-28T01:41:03Z dmiles quit (Read error: No route to host) 2020-04-28T01:42:07Z mdhughes: % port info guile 2020-04-28T01:42:07Z mdhughes: guile @2.2.4_2 (lang) 2020-04-28T01:42:18Z lockywolf_ joined #scheme 2020-04-28T01:45:02Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-28T01:45:13Z dmiles joined #scheme 2020-04-28T01:46:52Z mr_machi` joined #scheme 2020-04-28T01:47:19Z mr_machina quit (Remote host closed the connection) 2020-04-28T01:59:30Z badkins joined #scheme 2020-04-28T02:04:40Z terpri quit (Remote host closed the connection) 2020-04-28T02:17:35Z badkins quit (Remote host closed the connection) 2020-04-28T02:18:33Z badkins joined #scheme 2020-04-28T02:18:46Z lockywolf__ joined #scheme 2020-04-28T02:20:06Z ahungry quit (Ping timeout: 244 seconds) 2020-04-28T02:21:22Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-28T02:23:14Z badkins quit (Ping timeout: 260 seconds) 2020-04-28T02:24:00Z badkins joined #scheme 2020-04-28T02:31:22Z daviid quit (Ping timeout: 246 seconds) 2020-04-28T02:35:37Z badkins quit (Remote host closed the connection) 2020-04-28T02:37:56Z mr_machi` quit (Remote host closed the connection) 2020-04-28T02:39:20Z badkins joined #scheme 2020-04-28T02:41:01Z turtleman quit (Ping timeout: 264 seconds) 2020-04-28T02:43:58Z badkins quit (Ping timeout: 246 seconds) 2020-04-28T02:58:16Z titanbiscuit quit (Quit: ZNC 1.7.5 - https://znc.in) 2020-04-28T02:58:24Z raingloom joined #scheme 2020-04-28T02:59:07Z titanbiscuit joined #scheme 2020-04-28T02:59:43Z rain quit (Ping timeout: 246 seconds) 2020-04-28T03:07:59Z terpri joined #scheme 2020-04-28T03:16:11Z terpri quit (Remote host closed the connection) 2020-04-28T03:16:38Z terpri joined #scheme 2020-04-28T03:18:59Z pilne quit (Quit: Hard work pays off in the future, laziness pays off now) 2020-04-28T03:19:45Z terpri quit (Remote host closed the connection) 2020-04-28T03:22:30Z terpri joined #scheme 2020-04-28T03:23:10Z terpri quit (Remote host closed the connection) 2020-04-28T03:23:37Z terpri joined #scheme 2020-04-28T03:32:45Z terpri quit (Remote host closed the connection) 2020-04-28T03:33:12Z terpri joined #scheme 2020-04-28T03:35:18Z SGASAU quit (Remote host closed the connection) 2020-04-28T03:35:47Z SGASAU joined #scheme 2020-04-28T03:37:10Z terpri quit (Remote host closed the connection) 2020-04-28T03:37:39Z terpri joined #scheme 2020-04-28T03:41:38Z raingloom quit (Ping timeout: 260 seconds) 2020-04-28T03:42:15Z terpri quit (Remote host closed the connection) 2020-04-28T03:42:42Z terpri joined #scheme 2020-04-28T03:43:58Z titanbiscuit quit (Ping timeout: 260 seconds) 2020-04-28T03:46:23Z titanbiscuit joined #scheme 2020-04-28T03:52:12Z terpri quit (Remote host closed the connection) 2020-04-28T03:52:44Z terpri joined #scheme 2020-04-28T03:56:11Z terpri quit (Remote host closed the connection) 2020-04-28T04:01:16Z jao quit (Remote host closed the connection) 2020-04-28T04:09:45Z lockywolf__ quit (Ping timeout: 240 seconds) 2020-04-28T04:11:07Z lockywolf joined #scheme 2020-04-28T04:28:18Z lockywolf_ joined #scheme 2020-04-28T04:31:06Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-28T04:39:24Z drakonis joined #scheme 2020-04-28T04:40:00Z torbo quit (Remote host closed the connection) 2020-04-28T04:46:18Z lockywolf__ joined #scheme 2020-04-28T04:48:23Z lockywolf_ quit (Ping timeout: 244 seconds) 2020-04-28T04:59:24Z terpri joined #scheme 2020-04-28T04:59:27Z terpri quit (Client Quit) 2020-04-28T04:59:49Z terpri joined #scheme 2020-04-28T05:06:15Z longshi quit (Ping timeout: 240 seconds) 2020-04-28T05:11:45Z orblu joined #scheme 2020-04-28T05:12:19Z stepnem quit (Ping timeout: 265 seconds) 2020-04-28T05:13:50Z klovett quit (Ping timeout: 256 seconds) 2020-04-28T05:14:29Z stepnem joined #scheme 2020-04-28T05:18:18Z lockywolf__ quit (Ping timeout: 260 seconds) 2020-04-28T05:19:27Z lockywolf joined #scheme 2020-04-28T05:30:15Z terpri quit (Remote host closed the connection) 2020-04-28T05:32:55Z terpri joined #scheme 2020-04-28T05:33:15Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-28T05:34:28Z lockywolf joined #scheme 2020-04-28T05:37:15Z terpri quit (Remote host closed the connection) 2020-04-28T05:37:43Z terpri joined #scheme 2020-04-28T05:46:25Z drakonis quit (Quit: WeeChat 2.8) 2020-04-28T05:49:45Z terpri quit (Remote host closed the connection) 2020-04-28T05:54:25Z gravicappa joined #scheme 2020-04-28T06:04:38Z klovett joined #scheme 2020-04-28T06:10:06Z jayde quit (Quit: +_+) 2020-04-28T06:15:14Z orblu quit (Ping timeout: 260 seconds) 2020-04-28T06:17:05Z orblu joined #scheme 2020-04-28T06:30:16Z jobol joined #scheme 2020-04-28T06:31:12Z longshi joined #scheme 2020-04-28T06:40:46Z badkins joined #scheme 2020-04-28T06:42:53Z longshi quit (Ping timeout: 272 seconds) 2020-04-28T06:45:34Z badkins quit (Ping timeout: 260 seconds) 2020-04-28T07:01:52Z seepel joined #scheme 2020-04-28T07:04:50Z klovett quit (Remote host closed the connection) 2020-04-28T07:05:29Z klovett joined #scheme 2020-04-28T07:06:12Z dioxirane joined #scheme 2020-04-28T07:07:30Z orblu quit (Ping timeout: 260 seconds) 2020-04-28T07:12:21Z rgherdt joined #scheme 2020-04-28T07:14:36Z Oddity quit (Ping timeout: 265 seconds) 2020-04-28T07:17:40Z dioxirane is now known as luni 2020-04-28T07:21:03Z Oddity joined #scheme 2020-04-28T07:36:53Z ngz joined #scheme 2020-04-28T07:37:45Z lockywolf_ joined #scheme 2020-04-28T07:40:15Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-28T07:44:03Z cpressey joined #scheme 2020-04-28T07:54:53Z orblu joined #scheme 2020-04-28T07:59:55Z lockywolf_: Why does (apply-primitive-procedure ) accept no environment argument? 2020-04-28T08:00:21Z lockywolf_: The one explained in SICP, I mean. 2020-04-28T08:01:36Z civodul joined #scheme 2020-04-28T08:11:46Z amirouche quit (Ping timeout: 256 seconds) 2020-04-28T08:18:20Z orblu quit (Ping timeout: 256 seconds) 2020-04-28T08:23:02Z seepel quit (Ping timeout: 260 seconds) 2020-04-28T08:23:05Z notnotdan: probably because it doesn't need one? can you link to the definition 2020-04-28T08:30:08Z rgherdt_ joined #scheme 2020-04-28T08:42:19Z badkins joined #scheme 2020-04-28T08:46:44Z badkins quit (Ping timeout: 256 seconds) 2020-04-28T08:47:16Z Fare quit (Ping timeout: 246 seconds) 2020-04-28T08:48:28Z Fare joined #scheme 2020-04-28T08:57:02Z amirouche joined #scheme 2020-04-28T09:11:39Z seepel joined #scheme 2020-04-28T09:13:45Z lritter joined #scheme 2020-04-28T09:15:15Z terpri joined #scheme 2020-04-28T09:33:55Z h11 joined #scheme 2020-04-28T09:34:33Z ArthurStrong joined #scheme 2020-04-28T09:40:25Z copec quit (Ping timeout: 264 seconds) 2020-04-28T09:47:41Z copec joined #scheme 2020-04-28T09:54:14Z Fare quit (Ping timeout: 240 seconds) 2020-04-28T09:55:33Z longshi joined #scheme 2020-04-28T09:55:54Z Fare joined #scheme 2020-04-28T09:59:05Z C-Keen quit (Ping timeout: 250 seconds) 2020-04-28T09:59:22Z C-Keen joined #scheme 2020-04-28T09:59:31Z seepel quit (Remote host closed the connection) 2020-04-28T09:59:46Z C-Keen is now known as Guest18165 2020-04-28T09:59:55Z seepel joined #scheme 2020-04-28T10:02:31Z lockywolf_: notnotdan, (define (apply-primitive-procedure proc args) (apply-in-underlying-scheme (primitive-implementation proc) args)) 2020-04-28T10:03:24Z lockywolf_: section 5.2.4, page 520 in "Unofficial Texinfo Format 2.andresraba5.6" 2020-04-28T10:06:59Z lockywolf_: Or, maybe, the definition of (apply) on page 547 is better. 2020-04-28T10:07:42Z lockywolf_: (or page 498, also going to work) 2020-04-28T10:11:50Z lockywolf_: This sort of makes sense, if we believe that primitive procedures are always defined in the top-level environment. 2020-04-28T10:14:56Z Blukunfando quit (Read error: Connection reset by peer) 2020-04-28T10:18:35Z skapata quit (Remote host closed the connection) 2020-04-28T10:24:00Z rain1 joined #scheme 2020-04-28T10:28:04Z lockywolf_ quit (Ping timeout: 246 seconds) 2020-04-28T10:31:30Z dpk quit (Ping timeout: 256 seconds) 2020-04-28T10:32:01Z fgudin quit (Ping timeout: 264 seconds) 2020-04-28T10:32:07Z corpix_ joined #scheme 2020-04-28T10:32:23Z corpix quit (Ping timeout: 240 seconds) 2020-04-28T10:33:26Z dpk joined #scheme 2020-04-28T10:36:06Z Oddity quit (Ping timeout: 260 seconds) 2020-04-28T10:38:26Z fgudin joined #scheme 2020-04-28T10:38:34Z seepel quit (Ping timeout: 265 seconds) 2020-04-28T10:40:41Z Guest18165 quit (Changing host) 2020-04-28T10:40:41Z Guest18165 joined #scheme 2020-04-28T10:40:43Z Guest18165 is now known as C-Keen 2020-04-28T10:42:45Z Oddity joined #scheme 2020-04-28T10:43:10Z badkins joined #scheme 2020-04-28T10:47:19Z badkins quit (Ping timeout: 246 seconds) 2020-04-28T10:58:53Z ArthurStrong quit (Quit: leaving) 2020-04-28T11:03:53Z TCZ joined #scheme 2020-04-28T11:16:23Z cpressey quit (Quit: WeeChat 1.9.1) 2020-04-28T11:18:17Z raingloom joined #scheme 2020-04-28T11:28:31Z lockywolf_ joined #scheme 2020-04-28T12:08:30Z dmiles quit (Ping timeout: 260 seconds) 2020-04-28T12:14:45Z dmiles joined #scheme 2020-04-28T12:21:58Z luni quit (Ping timeout: 260 seconds) 2020-04-28T12:25:32Z turtleman joined #scheme 2020-04-28T12:31:34Z cpressey joined #scheme 2020-04-28T12:40:09Z SGASAU quit (Remote host closed the connection) 2020-04-28T12:40:41Z badkins joined #scheme 2020-04-28T12:40:45Z SGASAU joined #scheme 2020-04-28T12:58:11Z raingloom quit (Ping timeout: 244 seconds) 2020-04-28T13:01:51Z jcowan: It isn't that, it's that a primitive procedure (one defined in the implementation language) doesn't normally depend on the values of variables in the language being defined. + is + and it operates on numbers, not variables. 2020-04-28T13:04:31Z klovett quit (Remote host closed the connection) 2020-04-28T13:04:47Z klovett joined #scheme 2020-04-28T13:05:04Z turtleman quit (Ping timeout: 256 seconds) 2020-04-28T13:05:35Z kopiyka quit (Remote host closed the connection) 2020-04-28T13:08:36Z amirouche quit (Quit: WeeChat 2.6) 2020-04-28T13:12:36Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-28T13:15:02Z klovett_ joined #scheme 2020-04-28T13:15:30Z klovett quit (Ping timeout: 256 seconds) 2020-04-28T13:26:58Z lockywolf__ joined #scheme 2020-04-28T13:28:58Z lockywolf__ quit (Remote host closed the connection) 2020-04-28T13:29:29Z lockywolf__ joined #scheme 2020-04-28T13:29:42Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-28T13:46:27Z TCZ quit (Quit: Leaving) 2020-04-28T13:52:49Z badkins quit (Remote host closed the connection) 2020-04-28T13:55:55Z badkins joined #scheme 2020-04-28T13:58:16Z luni joined #scheme 2020-04-28T14:00:11Z klovett_ quit (Ping timeout: 244 seconds) 2020-04-28T14:00:30Z badkins quit (Ping timeout: 260 seconds) 2020-04-28T14:02:52Z badkins joined #scheme 2020-04-28T14:07:35Z badkins quit (Ping timeout: 260 seconds) 2020-04-28T14:08:23Z badkins joined #scheme 2020-04-28T14:13:18Z lloda joined #scheme 2020-04-28T14:21:28Z ahungry joined #scheme 2020-04-28T14:25:34Z copec quit (Ping timeout: 240 seconds) 2020-04-28T14:36:03Z klovett joined #scheme 2020-04-28T14:37:46Z TCZ joined #scheme 2020-04-28T15:19:20Z klovett_ joined #scheme 2020-04-28T15:22:25Z klovett quit (Ping timeout: 264 seconds) 2020-04-28T15:28:05Z SGASAU quit (Remote host closed the connection) 2020-04-28T15:28:48Z SGASAU joined #scheme 2020-04-28T15:39:25Z theseb joined #scheme 2020-04-28T15:47:38Z TheGreekOwl joined #scheme 2020-04-28T15:52:11Z TCZ quit (Quit: Leaving) 2020-04-28T15:53:49Z daviid joined #scheme 2020-04-28T15:54:12Z daviid is now known as Guest93705 2020-04-28T15:54:14Z Guest93705 quit (Remote host closed the connection) 2020-04-28T15:55:03Z daviid` joined #scheme 2020-04-28T15:55:18Z daviid` quit (Remote host closed the connection) 2020-04-28T15:58:03Z TCZ joined #scheme 2020-04-28T15:58:37Z TCZ quit (Remote host closed the connection) 2020-04-28T16:05:39Z daviid` joined #scheme 2020-04-28T16:05:45Z daviid` quit (Remote host closed the connection) 2020-04-28T16:06:34Z cpressey quit (Quit: WeeChat 1.9.1) 2020-04-28T16:14:49Z lockywolf__: jcowan, yes, normally it doesn't. it's just I am not sure it is a fundamental restriction, and that if lifted it can't be used for some interesting tricks 2020-04-28T16:15:25Z jcowan: some primitives might need access to dynamic variables in the embedded language, though 2020-04-28T16:15:33Z jcowan: if the e.l. has any 2020-04-28T16:16:44Z Riastradh: lockywolf__: The whole point of the _concept_ of a primitive procedure is that it does not depend on the variables by which you've wired up abstractions and combinations of the primitive procedures. 2020-04-28T16:17:06Z Riastradh: That's the idea of breaking a language down into primitives, combinations, and abstractions. 2020-04-28T16:17:51Z Riastradh: Primitives can do real stuff; combinations make primitives do stuff with specific things; abstractions let you make patterns of combinations and primitives with variables. 2020-04-28T16:19:47Z Riastradh: So yes, you could `lift the restriction', just like you could lift the restriction that lambdas can only refer to their own variables and not to the call site's variables, 2020-04-28T16:20:02Z Riastradh: but this does not lead to enabling clearer reasoning about programs or any particularly useful new expressiveness. 2020-04-28T16:20:33Z copec joined #scheme 2020-04-28T16:21:39Z badkins quit (Remote host closed the connection) 2020-04-28T16:36:23Z drakonis joined #scheme 2020-04-28T16:43:25Z gwatt: I think it's also worth pointing out that most procedures, primitive or not, don't need to inspect the environment to get stuff done. 2020-04-28T16:55:48Z jao joined #scheme 2020-04-28T16:57:21Z rgherdt_ quit (Remote host closed the connection) 2020-04-28T17:02:34Z sp1ff quit (Ping timeout: 244 seconds) 2020-04-28T17:04:54Z daviid joined #scheme 2020-04-28T17:05:02Z daviid quit (Remote host closed the connection) 2020-04-28T17:06:04Z sp1ff joined #scheme 2020-04-28T17:08:24Z daviid joined #scheme 2020-04-28T17:08:48Z daviid is now known as Guest38650 2020-04-28T17:21:38Z amirouche joined #scheme 2020-04-28T17:27:01Z Guest38650 is now known as daviid 2020-04-28T17:34:58Z amirouche quit (Quit: WeeChat 2.6) 2020-04-28T17:39:26Z raingloom joined #scheme 2020-04-28T17:45:44Z kopiyka joined #scheme 2020-04-28T17:48:54Z copec quit (Ping timeout: 240 seconds) 2020-04-28T17:55:22Z longshi quit (Quit: WeeChat 2.8) 2020-04-28T18:13:10Z skapata joined #scheme 2020-04-28T18:24:07Z zaifir: Do people consider the `case' form important enough to discuss in a basic intro to Scheme conditional forms, or is it enough to talk about `if' and `cond'? 2020-04-28T18:24:30Z zaifir: (I'm working on a rewrite of the Scheme wikibook.) 2020-04-28T18:26:32Z jcowan: Case is marginal IMO 2020-04-28T18:27:10Z jcowan: Riastradh: The case I was thinking about is a language implemented in Scheme that wants to make use of a version of Scheme's write that depends on various parameters. 2020-04-28T18:27:19Z Riastradh: Marginal, eh? Bit of an edge case, I suppose! 2020-04-28T18:27:43Z jcowan: Fortunately,Scheme parameters are first-class 2020-04-28T18:29:10Z zaifir: Yeah, I agree it can probably wait until a later section. Eisenberg's Scheme book starts with if, then adds cond, and has a small section on case later. 2020-04-28T18:30:08Z zaifir: And SICP and The Little/Seasoned Schemer do without case entirely. 2020-04-28T18:41:12Z jao quit (Remote host closed the connection) 2020-04-28T18:42:43Z jao joined #scheme 2020-04-28T18:53:01Z erkin: zaifir: I think `case' can be mentioned later on, as a specialisation of `cond'. 2020-04-28T18:53:19Z Riastradh: case is bad actually 2020-04-28T18:55:06Z hugh_marera joined #scheme 2020-04-28T18:55:45Z bars0 joined #scheme 2020-04-28T18:58:38Z Riastradh quit (Remote host closed the connection) 2020-04-28T19:09:29Z jobol quit (Quit: Leaving) 2020-04-28T19:13:09Z Riastradh joined #scheme 2020-04-28T19:16:04Z erkin: case considered harmful? 2020-04-28T19:16:33Z Riastradh: `considered harmful' is bad actually 2020-04-28T19:16:37Z Riastradh: `is bad actually' considered harmful 2020-04-28T19:16:44Z whiteline quit (Remote host closed the connection) 2020-04-28T19:17:50Z whiteline joined #scheme 2020-04-28T19:18:09Z gwatt: Riastradh: is case actually that bad? 2020-04-28T19:18:14Z whiteline quit (Remote host closed the connection) 2020-04-28T19:18:19Z gwatt: I've found it occasionally useful 2020-04-28T19:18:39Z whiteline joined #scheme 2020-04-28T19:18:40Z gwatt: (one might say, it's a case-by-case basis) 2020-04-28T19:20:13Z Riastradh: case silently accepts typos. 2020-04-28T19:21:50Z zaifir: Riastradh: Can you give an example? 2020-04-28T19:21:54Z gwatt: Hmm. That's true, but that's true of anytime you have to write a literal list of things. 2020-04-28T19:25:25Z gwatt: zaifir: the left hand side just takes a list of literal data (symbols, numbers, strings, chars) and as such cannot be checked by the implementation for correctness 2020-04-28T19:25:47Z Riastradh: (case tag ((fixnum) (generate-inline-fixnum-test arg)) ((flounm) (generate-inline-flonum-test arg)) (else (generate-out-of-line-test arg))) 2020-04-28T19:26:36Z Riastradh: gwatt: You can cross-check it. 2020-04-28T19:26:49Z Riastradh: For example, the typical pattern in C would be to define an enum, and then use the enumerands in switch cases. 2020-04-28T19:27:59Z zaifir: gwatt: Ah, thanks. 2020-04-28T19:28:14Z jcowan has his enum proposal on the short list, but it won't work with case. 2020-04-28T19:28:26Z jcowan: I should probably provide an enum-case macro 2020-04-28T19:28:30Z bars0 quit (Ping timeout: 260 seconds) 2020-04-28T19:29:22Z Riastradh: T had (select k ((x y) ...) ((p q) ...) (else ...)) which would evaluate rather than auto-quote x, y, p, q, &c. 2020-04-28T19:29:47Z jcowan nods 2020-04-28T19:32:31Z TCZ joined #scheme 2020-04-28T19:33:18Z gwatt: Riastradh: the C enums fall down though because you can pass an int pretty easily as an enum value. 2020-04-28T19:33:42Z Riastradh: gwatt: enums aren't perfect but they don't have this problem. 2020-04-28T19:34:00Z gwatt: fair enough. 2020-04-28T19:34:34Z Riastradh quit (Remote host closed the connection) 2020-04-28T19:40:14Z izh_ joined #scheme 2020-04-28T19:43:57Z drakonis quit (Ping timeout: 265 seconds) 2020-04-28T19:44:34Z bars0 joined #scheme 2020-04-28T19:44:51Z drakonis joined #scheme 2020-04-28T19:45:04Z amirouche joined #scheme 2020-04-28T19:51:48Z amirouche: what's up #scheme? 2020-04-28T19:53:41Z amirouche: I keep changing project every two days, I hope there is cure?! 2020-04-28T19:54:27Z amirouche: rudybot: is github a graveyard? 2020-04-28T19:54:28Z rudybot: amirouche: ah yes, the "let me learned myself a new thing" github graveyard 2020-04-28T19:54:45Z amirouche: to the point! 2020-04-28T19:55:13Z amirouche: rudybot: what about changing project every two days? 2020-04-28T19:55:16Z rudybot: amirouche: I keep changing project every two days, I hope there is cure?! 2020-04-28T19:55:33Z amirouche: rudybot: my writing 2020-04-28T19:55:35Z rudybot: amirouche: eh, if I were writing new code I might be bothered, but I'm not going to change my existing libs to work with it 2020-04-28T19:55:51Z amirouche: that is a mistake, but I understand 2020-04-28T19:57:24Z amirouche: zaifir: you are quiet dedicated to the wikibook... 2020-04-28T19:57:37Z amirouche: is it r 2020-04-28T19:57:49Z rain1: hey amz 2020-04-28T19:57:51Z amirouche: is it r6rs or r7rs or something else? 2020-04-28T19:57:54Z zaifir: amirouche: I think it's worth the effort. 2020-04-28T19:58:02Z zaifir: amirouche: R7 2020-04-28T19:58:15Z amirouche: rain1: long time no see :) (I am zig and amz3, I have identity issues ;) 2020-04-28T19:58:34Z rain1 quit (Quit: leaving) 2020-04-28T19:58:42Z amirouche: oops 2020-04-28T19:58:45Z zaifir: amirouche: I might include a section on R6, but I think it's best to move to R7 and not look back. The tricky thing is suggesting good implementions to work with. 2020-04-28T19:59:23Z amirouche: zaifir: well I tried them all, and decided to go with Arew aka. R7RS on top of Chez but it has it woes 2020-04-28T19:59:34Z amirouche: not all actually, I did not try gauch 2020-04-28T19:59:36Z amirouche: not all actually, I did not try gauche 2020-04-28T19:59:50Z zaifir: The main challenge at the moment is Wikibooks's "review" system, whereby changes to this (ancient, unmaintained) Wikibook aren't fully pushed until some established user gets around to checking them. 2020-04-28T20:00:07Z zaifir: amirouche: Ah, that's interesting. 2020-04-28T20:00:08Z amirouche: how the review system works? 2020-04-28T20:00:52Z pilne joined #scheme 2020-04-28T20:02:17Z amirouche: re arew: the thing is guile is difficult to maintain and read (lot of C code), gambit is always moving, maybe 5.0 might fix this, also not SMP, chibi is slow but has most of the scheme world love for it, what else? 2020-04-28T20:02:48Z amirouche: not SMP yet, it is wip. 2020-04-28T20:03:41Z zaifir: Reviewers have to check a new revision before it becomes the default version (although you can turn on seeing unreviewed changes). It seems you can get Wikibooks reviewer status once you've made 100 edits. 2020-04-28T20:04:00Z amirouche: never heard of that feature 2020-04-28T20:04:07Z zaifir: Wikipedia doesn't have it. 2020-04-28T20:04:34Z amirouche: btw that is a feature I added to my wikidata replacement 2020-04-28T20:04:38Z zaifir: It's to keep books from being dramatically restructured or otherwise trashed, I guess. It would work better if there were more users. 2020-04-28T20:05:28Z amirouche: and more reviewer :) 2020-04-28T20:11:17Z amirouche: erkin: was working on a macro tutorial I think ;) 2020-04-28T20:13:29Z zaifir: Here would be a good place to put it: https://en.wikibooks.org/wiki/Scheme_Programming/Macros 2020-04-28T20:25:46Z zaifir: That page has a lot of material, although it begins with defmacro... 2020-04-28T20:26:44Z Riastradh joined #scheme 2020-04-28T20:40:37Z jayde joined #scheme 2020-04-28T20:41:00Z badkins joined #scheme 2020-04-28T20:57:25Z copec joined #scheme 2020-04-28T21:10:23Z SirDayBat quit (Ping timeout: 260 seconds) 2020-04-28T21:12:01Z ahungry quit (Remote host closed the connection) 2020-04-28T21:16:36Z SirDayBat joined #scheme 2020-04-28T21:22:22Z keep_learning joined #scheme 2020-04-28T21:30:49Z bars0 quit (Ping timeout: 264 seconds) 2020-04-28T21:34:00Z lritter quit (Quit: Leaving) 2020-04-28T21:39:15Z gravicappa quit (Ping timeout: 240 seconds) 2020-04-28T21:44:07Z TCZ quit (Quit: Leaving) 2020-04-28T21:44:44Z turtleman joined #scheme 2020-04-28T21:45:08Z duncanm: dum de dum 2020-04-28T21:47:03Z jcowan: I got some code that is R7RS, but requires SRFI 64 and SRFI 158, and I have yet to find any Scheme with both 2020-04-28T21:47:23Z jcowan: not that I can't port them to Chibi or whatever, but I don't want to do that if I don't have to. 2020-04-28T21:50:57Z jcowan: looks like Gauche maybe 2020-04-28T21:51:10Z zaifir: IIRC chibi has a simple interface to snow fort, which has 64, at least: http://snow-fort.org/s/fisher.cx/robert/srfi/64/0.1.0/index.html 2020-04-28T21:51:37Z jcowan: oh, nice 2020-04-28T21:52:27Z jcowan: perhaps the 121 impl in Chibi will be sufficient for 158 2020-04-28T21:52:33Z jcowan: (gnerators but not accumulators) 2020-04-28T22:19:47Z torbo joined #scheme 2020-04-28T22:21:59Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-28T22:22:40Z SGASAU quit (Remote host closed the connection) 2020-04-28T22:23:14Z SGASAU joined #scheme 2020-04-28T22:30:12Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-28T22:31:11Z X-Scale quit (Ping timeout: 258 seconds) 2020-04-28T22:31:34Z X-Scale` joined #scheme 2020-04-28T22:32:04Z X-Scale` is now known as X-Scale 2020-04-28T22:34:43Z hugh_marera_ joined #scheme 2020-04-28T22:34:44Z izh_ quit (Quit: Leaving) 2020-04-28T22:34:52Z hugh_marera_ quit (Remote host closed the connection) 2020-04-28T22:36:51Z hugh_marera quit (Ping timeout: 244 seconds) 2020-04-28T22:39:59Z luni quit (Read error: Connection reset by peer) 2020-04-28T22:40:21Z luni joined #scheme 2020-04-28T22:47:03Z f8l quit (Remote host closed the connection) 2020-04-28T22:48:25Z f8l joined #scheme 2020-04-28T22:52:43Z theseb quit (Quit: Leaving) 2020-04-28T22:55:03Z jcowan: apparently so, but the tests hang, I don't know why yet. 2020-04-28T22:55:06Z jcowan: arrgh 2020-04-28T23:00:26Z keep_learning joined #scheme 2020-04-28T23:01:07Z keep_learning quit (Remote host closed the connection) 2020-04-28T23:01:54Z zooey quit (Remote host closed the connection) 2020-04-28T23:02:12Z zooey joined #scheme 2020-04-28T23:05:38Z X-Scale` joined #scheme 2020-04-28T23:05:48Z X-Scale quit (Ping timeout: 265 seconds) 2020-04-28T23:06:26Z X-Scale` is now known as X-Scale 2020-04-28T23:14:40Z keep_learning joined #scheme 2020-04-28T23:28:13Z pjb quit (Ping timeout: 265 seconds) 2020-04-28T23:31:03Z badkins quit (Remote host closed the connection) 2020-04-28T23:31:32Z badkins joined #scheme 2020-04-28T23:32:10Z badkins quit (Remote host closed the connection) 2020-04-28T23:32:19Z badkins joined #scheme 2020-04-28T23:40:07Z lockywolf__ quit (Ping timeout: 246 seconds) 2020-04-28T23:42:19Z TGO joined #scheme 2020-04-28T23:45:37Z TheGreekOwl quit (Ping timeout: 265 seconds) 2020-04-29T00:00:42Z pjb joined #scheme 2020-04-29T00:02:01Z xkapastel joined #scheme 2020-04-29T00:26:28Z TCZ joined #scheme 2020-04-29T00:33:46Z TGO quit (Remote host closed the connection) 2020-04-29T00:34:03Z TGO joined #scheme 2020-04-29T00:39:23Z TGO quit (Quit: I must go, my planet needs me.) 2020-04-29T00:39:41Z drakonis quit (Quit: WeeChat 2.8) 2020-04-29T00:59:22Z luni quit (Ping timeout: 260 seconds) 2020-04-29T01:01:38Z lockywolf joined #scheme 2020-04-29T01:14:33Z ngz quit (Ping timeout: 265 seconds) 2020-04-29T01:17:09Z lockywolf_ joined #scheme 2020-04-29T01:19:15Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-29T01:36:02Z badkins quit (Remote host closed the connection) 2020-04-29T01:36:36Z badkins joined #scheme 2020-04-29T01:37:01Z lockywolf_: zaifir, choosing an implementation is the most ungrateful thing on Earth, but chibi is good enough to solve all of SICP, and has perhaps the best support for r7rs available 2020-04-29T01:37:51Z badkins quit (Remote host closed the connection) 2020-04-29T01:38:00Z badkins_ joined #scheme 2020-04-29T01:38:03Z pilne_ joined #scheme 2020-04-29T01:38:40Z lockywolf_: I wouldn't care about speed at all in an introductory book. It may be even better to have an implementation that is a bit on the slow side, so that gross algorithmic errors are more explicit. 2020-04-29T01:39:51Z lockywolf_: On the other hand, debugging may be a more valid concern, and so far I appreciated MIT's integration with Emacs. 2020-04-29T01:40:10Z pilne quit (Ping timeout: 246 seconds) 2020-04-29T01:42:46Z pilne_ quit (Ping timeout: 260 seconds) 2020-04-29T01:44:03Z zaifir: lockywolf_: Trying to pick *one* implementation to use would indeed be miserable. I'm hoping the book can be implementation-agnostic, but there should be Schemes that readers can follow along with, without beating their heads against their keyboards. 2020-04-29T01:44:44Z lockywolf_: zaifir, my SICP solution is _almost_ implementation-agnostic 2020-04-29T01:45:03Z lockywolf_: as much as it can be ATM, I think 2020-04-29T01:45:04Z zaifir: lockywolf_: I also lean toward Chibi. 2020-04-29T01:45:27Z lockywolf_: I tested some of the solutions on Chicken 2020-04-29T01:46:09Z lockywolf_: I had a plan to summarize the implementation-specific things needed to solve sicp into an srfi. 2020-04-29T01:46:22Z lockywolf_: Not sure I have enough willpower to finish this plan though. 2020-04-29T01:51:38Z lockywolf_: zaifir, why do you want to write a wikibook, not simply another book on Scheme and publish it under your own name? 2020-04-29T01:51:39Z zaifir: lockywolf_: At the very least it would be a useful resource. 2020-04-29T01:54:12Z zaifir: lockywolf_: It's less intimidating, among other things. :) Also, I'd like it to be a community project/resource, assuming I can get more Schemers involved. 2020-04-29T01:56:53Z zaifir: e.g. the Haskell wikibook is a really nice resource which that community often points noobs to: https://en.wikibooks.org/wiki/Haskell 2020-04-29T01:59:52Z lockywolf_: People often point noobs to the Scheme Community Wiki 2020-04-29T02:00:19Z lockywolf_: A wiki with a surprisingly small amount of vandalism. 2020-04-29T02:01:41Z lockywolf_: I'm not trying to depreciate your work. Just saying that it may be worth making links to it from the wikibook. 2020-04-29T02:02:24Z zaifir: Definitely. 2020-04-29T02:03:51Z zaifir: A common question here seems to be "what's a good starting book on Scheme?" And while SICP and The Little Schemer are great books, they don't really teach Scheme programming. If Eisenberg's Programming In Scheme were available and up-to-date, that would fit the bill. 2020-04-29T02:04:01Z zaifir: But alas. Thus, there's a big gap for new Schemers. 2020-04-29T02:07:46Z zaifir: community.schemewiki.org is good and could be even better. There's just no continuous series of intro-to-Scheme articles on it, AFAICT. 2020-04-29T02:11:09Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-29T02:15:50Z jcowan: Racket has a specific SRFI mode and an IDE-style debugger of a kind that's supposed to be good for both programming n00bs and IDE users general. 2020-04-29T02:18:54Z lockywolf_: doesn't Racket claim they are not scheme any more? 2020-04-29T02:19:02Z teardown quit (Ping timeout: 256 seconds) 2020-04-29T02:19:13Z lockywolf_: zaifir, what about TSPL? 2020-04-29T02:19:35Z lockywolf_: is your main disappointment about it in that it is r6rs? 2020-04-29T02:20:01Z turtleman quit (Ping timeout: 264 seconds) 2020-04-29T02:20:20Z lockywolf_: There is also "Scheme and the Art of Programming" 2020-04-29T02:21:20Z zaifir: lockywolf_: TSPL is not an easy read, IMHO. 2020-04-29T02:21:49Z lockywolf_: I don't know. On the first glance, it's easier than SICP. 2020-04-29T02:23:04Z lockywolf_: I intended to do the continuation-passing-style exercises from it. Even though SICP speaks about the cps, it does so without using explicit call/cc. 2020-04-29T02:23:06Z zaifir: lockywolf_: It's definitely a good book. 2020-04-29T02:25:25Z zaifir: It's also "All rights reserved", which is to me a big, though unrelated flaw. 2020-04-29T02:27:35Z lockywolf_: it's downloadable from chez' website 2020-04-29T02:28:44Z zaifir: But not reproduceable expect by permission from the author. Thus not a good community resource, IMO. 2020-04-29T02:29:52Z lockywolf_: it is certainly not a community resource 2020-04-29T02:30:31Z zaifir: It really reads like a standard document. From the *introduction*: "A delimiter or any other Unicode character may be included anywhere within the name of an identifier as an escape of the form \xsv;, where sv is the scalar value of the character in hexadecimal notation." 2020-04-29T02:31:15Z zaifir: Sorry, I'll stop ragging on it. 2020-04-29T02:35:42Z TCZ quit (Quit: Leaving) 2020-04-29T02:49:27Z lockywolf_: zaifir, no, you're absolutely correct 2020-04-29T02:49:42Z lockywolf_: scheme has a very-very high entry barrier 2020-04-29T02:58:50Z jcowan: Racket can be any language, including SICP-Scheme. 2020-04-29T03:03:47Z mdhughes: I don't think that's particularly hard to read, for a technical manual aimed at experienced programmers. Which is what TSPL is; I don't think you'd give it to a newbie. 2020-04-29T03:04:36Z zaifir: mdhughes: Exactly. If you want a technical manual on Scheme, TSPL is good. 2020-04-29T03:15:59Z pjb quit (Ping timeout: 272 seconds) 2020-04-29T03:17:46Z badkins_ quit (Remote host closed the connection) 2020-04-29T03:18:29Z badkins joined #scheme 2020-04-29T03:20:27Z tessier quit (Ping timeout: 260 seconds) 2020-04-29T03:23:37Z badkins quit (Ping timeout: 264 seconds) 2020-04-29T03:28:53Z pjb joined #scheme 2020-04-29T03:40:41Z torbo quit (Remote host closed the connection) 2020-04-29T03:47:25Z ahungry joined #scheme 2020-04-29T03:58:45Z raingloom quit (Ping timeout: 240 seconds) 2020-04-29T04:49:06Z SGASAU quit (Remote host closed the connection) 2020-04-29T04:49:30Z SGASAU joined #scheme 2020-04-29T04:54:25Z jao quit (Ping timeout: 246 seconds) 2020-04-29T04:55:45Z daviid quit (Ping timeout: 240 seconds) 2020-04-29T05:02:33Z klovett_ quit (Remote host closed the connection) 2020-04-29T05:03:10Z klovett joined #scheme 2020-04-29T05:08:40Z ahungry quit (Remote host closed the connection) 2020-04-29T05:20:44Z skapata quit (Quit: ฤœis!) 2020-04-29T05:40:52Z pjb quit (Ping timeout: 265 seconds) 2020-04-29T05:48:41Z lockywolf__ joined #scheme 2020-04-29T05:48:45Z orblu joined #scheme 2020-04-29T05:51:13Z lockywolf_ quit (Ping timeout: 264 seconds) 2020-04-29T05:59:13Z gravicappa joined #scheme 2020-04-29T06:06:50Z tryte_ quit (Quit: _) 2020-04-29T06:07:36Z tryte joined #scheme 2020-04-29T06:09:45Z SGASAU quit (Remote host closed the connection) 2020-04-29T06:10:18Z SGASAU joined #scheme 2020-04-29T06:19:56Z tryte quit (Remote host closed the connection) 2020-04-29T06:21:22Z tryte joined #scheme 2020-04-29T06:36:11Z lockywolf_ joined #scheme 2020-04-29T06:38:41Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-29T06:39:41Z lockywolf joined #scheme 2020-04-29T06:41:30Z lockywolf_ quit (Ping timeout: 260 seconds) 2020-04-29T06:50:36Z jobol joined #scheme 2020-04-29T06:57:05Z amirouche: I am the only one that wants to forget about ports? 2020-04-29T06:57:19Z wasamasa: what, you prefer FILE*? 2020-04-29T06:57:21Z amirouche: and replace them with file descriptors represented as integer? 2020-04-29T06:57:24Z wasamasa: lol 2020-04-29T06:57:28Z amirouche: ? 2020-04-29T06:57:29Z wasamasa: let's not go there 2020-04-29T06:58:07Z amirouche: why is that? 2020-04-29T06:58:08Z wasamasa: there's more than file ports 2020-04-29T06:58:20Z Riastradh: FILE* and file descriptors are both better, for different purposes, yeah. 2020-04-29T06:58:48Z wasamasa: for example string ports, these are handy 2020-04-29T06:59:09Z SGASAU quit (Remote host closed the connection) 2020-04-29T06:59:09Z Riastradh: fmemopen 2020-04-29T06:59:17Z wasamasa: isn't that GNU 2020-04-29T06:59:24Z Riastradh: STANDARDS The fmemopen() function conforms to IEEE Std 1003.1-2008 ("POSIX.1"). 2020-04-29T06:59:33Z SGASAU joined #scheme 2020-04-29T06:59:50Z wasamasa: ah, I was thinking of fopencookie 2020-04-29T07:00:56Z amirouche: I think to implement (define fd (open path-to-file)) to return an integer, then use (fd->generator fd) to read it as a stream of char. 2020-04-29T07:01:24Z Riastradh: amirouche: Might want a GC'able wrapper around the fd number, at least. 2020-04-29T07:01:37Z Riastradh: (also `stream of char' is a bad concept) 2020-04-29T07:01:49Z amirouche: It seems to me custom ports, make put a strain on the implementation, their behavior is every special cases, and rely on practices that are not re-used elsewhere 2020-04-29T07:02:08Z amirouche: Riastradh: why a GC'able wrapper? to close it? 2020-04-29T07:02:26Z Riastradh: amirouche: So if you make a mistake at the REPL, it will be automagically closed for you. 2020-04-29T07:02:41Z Riastradh: (eventually) 2020-04-29T07:03:20Z Riastradh: This is not to say you should avoid doing (close fd) to make sure it gets closed _promptly_ when you're done with it -- just that the GC should be able to take care of closing it so you don't leak indefinitely if you make a mistake. 2020-04-29T07:04:26Z amirouche: ok, then open would return a define-record-type, with a way to access the integer, it would require to specify the GC finalizers, to be able to create other fd based stuff. 2020-04-29T07:04:44Z wasamasa: how do you express sockets if not in terms of custom ports? 2020-04-29T07:04:59Z amirouche: generators and accumulators 2020-04-29T07:05:27Z wasamasa: is this supposed to give me flashbacks to emacs sentinels and process filters? 2020-04-29T07:05:29Z amirouche: and fd is passed to the procedures just like POSIX does (except wrapped in record) 2020-04-29T07:05:30Z Fare: One reason I *love* Gerbil Scheme: (defrule {x} (hash-get opt 'x)) 2020-04-29T07:05:47Z amirouche: process filters? 2020-04-29T07:06:08Z wasamasa: yes, that's how you handle (network) processes, with two callbacks for status changes and accepting output 2020-04-29T07:06:30Z wasamasa: which by default lands in a buffer for further inspection 2020-04-29T07:07:29Z wasamasa: it's painful, but at least it's async 2020-04-29T07:07:46Z amirouche: I was thinking more along the lines of finding the superset of POSIX fd, so that one does not have to add a custom kind of object to the implementation 2020-04-29T07:07:52Z amirouche: and it works perfectly with async 2020-04-29T07:07:54Z amirouche: ;) 2020-04-29T07:08:15Z Riastradh: amirouche: Here's a sketch of what I meant (with some details that I would definitely not do the same way again today): https://mumble.net/~campbell/darcs/stubber/examples/unix-fd.scm 2020-04-29T07:08:21Z wasamasa: these things accumulate output, hence why I mentioned it 2020-04-29T07:08:40Z amirouche: why socket a byte or char generators are a bad thing? 2020-04-29T07:09:09Z wasamasa: I still have no idea what you mean with generators/accumulators 2020-04-29T07:09:34Z wasamasa: is there a SRFI or code showing it in action? 2020-04-29T07:11:17Z amirouche: wasamasa: yes, https://srfi.schemers.org/srfi-158/srfi-158.html 2020-04-29T07:11:52Z wasamasa: thank you 2020-04-29T07:12:08Z lockywolf_ joined #scheme 2020-04-29T07:12:27Z Riastradh: General-purpose generators and accumulators are a bad way to do I/O... 2020-04-29T07:13:02Z amirouche: generator for fd will have to be custom, but at least, it possible to define them, without creating a new type. 2020-04-29T07:13:08Z Riastradh: (going through a control transfer and value-passing mechanism for every single byte becomes a bottleneck) 2020-04-29T07:13:10Z orblu quit (Ping timeout: 260 seconds) 2020-04-29T07:13:46Z Riastradh: This is why stdio FILE* provides buffered byte I/O that is usually exposed via macros in C, so that direct access to the buffer is part of the ABI contract. 2020-04-29T07:14:15Z lockywolf quit (Ping timeout: 240 seconds) 2020-04-29T07:14:30Z wasamasa: hm, so instead of (process-send p ...) you do (define p (process->accumulator ...)) followed by (p ...) 2020-04-29T07:15:24Z wasamasa: I don't really see the issue with that and it avoids at least one abstraction layer of custom ports 2020-04-29T07:18:39Z lockywolf__ joined #scheme 2020-04-29T07:19:33Z lockywolf__ quit (Max SendQ exceeded) 2020-04-29T07:20:04Z lockywolf__ joined #scheme 2020-04-29T07:20:57Z lockywolf_ quit (Ping timeout: 258 seconds) 2020-04-29T07:20:57Z lockywolf__ quit (Max SendQ exceeded) 2020-04-29T07:21:37Z lockywolf__ joined #scheme 2020-04-29T07:21:42Z jayde quit (Quit: quit) 2020-04-29T07:38:21Z pjb joined #scheme 2020-04-29T07:50:52Z SGASAU quit (Remote host closed the connection) 2020-04-29T07:51:45Z SGASAU joined #scheme 2020-04-29T08:06:10Z SGASAU quit (Read error: Connection reset by peer) 2020-04-29T08:06:50Z SGASAU joined #scheme 2020-04-29T08:08:39Z SGASAU quit (Remote host closed the connection) 2020-04-29T08:10:46Z SGASAU joined #scheme 2020-04-29T08:11:11Z pjb quit (Ping timeout: 265 seconds) 2020-04-29T08:13:27Z orblu joined #scheme 2020-04-29T08:19:29Z dTal joined #scheme 2020-04-29T08:30:40Z rgherdt_ joined #scheme 2020-04-29T08:36:53Z cpressey joined #scheme 2020-04-29T08:49:22Z rgherdt quit (Ping timeout: 265 seconds) 2020-04-29T08:59:01Z stepnem quit (Ping timeout: 264 seconds) 2020-04-29T09:10:15Z orblu quit (Ping timeout: 240 seconds) 2020-04-29T09:22:41Z amirouche: re avoid abstraction layer: that is the idea. 2020-04-29T09:45:35Z civodul joined #scheme 2020-04-29T09:51:17Z pjb joined #scheme 2020-04-29T09:51:55Z Fare quit (Quit: Leaving) 2020-04-29T09:53:05Z lockywolf_ joined #scheme 2020-04-29T09:55:53Z lockywolf__ quit (Ping timeout: 265 seconds) 2020-04-29T09:58:43Z stepnem joined #scheme 2020-04-29T10:10:44Z TCZ joined #scheme 2020-04-29T10:15:38Z SGASAU quit (Remote host closed the connection) 2020-04-29T10:16:41Z SGASAU joined #scheme 2020-04-29T10:24:57Z lritter joined #scheme 2020-04-29T10:32:45Z rain1 joined #scheme 2020-04-29T10:36:29Z jao joined #scheme 2020-04-29T10:44:04Z mdhughes: I don't see what the problem with ports is. They all look the same to basic read/write operations, and you use type-specific procedures to manage them, just like you would any representation of I/O. 2020-04-29T10:44:46Z lockywolf_ quit (Ping timeout: 246 seconds) 2020-04-29T10:45:44Z mdhughes: You can always FFI to call C's I/O, but to what benefit? My speed tests haven't shown ports are any slower than C's, they're all I/O bound, not CPU. 2020-04-29T10:52:41Z zaifir: It seems fine to have both ports and generators. It does seem that a lot of higher-order port functions (port-map, port-for-each, etc.) can be avoided, since SRFI 158 generator functions provide more general functionality. 2020-04-29T10:54:54Z SGASAU quit (Ping timeout: 260 seconds) 2020-04-29T10:55:21Z rain1: hello 2020-04-29T11:01:34Z cpressey quit (Quit: Lunch.) 2020-04-29T11:41:06Z rain1 quit (Ping timeout: 256 seconds) 2020-04-29T11:41:28Z rain1 joined #scheme 2020-04-29T11:48:18Z lumidify joined #scheme 2020-04-29T12:10:31Z cpressey joined #scheme 2020-04-29T12:17:24Z lockywolf joined #scheme 2020-04-29T12:17:26Z turtleman joined #scheme 2020-04-29T12:27:44Z rgherdt joined #scheme 2020-04-29T12:39:32Z xkapastel joined #scheme 2020-04-29T12:49:10Z lavaflow quit (Ping timeout: 256 seconds) 2020-04-29T12:51:06Z pinoaffe joined #scheme 2020-04-29T12:53:54Z jao quit (Ping timeout: 240 seconds) 2020-04-29T12:59:10Z lockywolf quit (Ping timeout: 246 seconds) 2020-04-29T13:04:23Z turtleman quit (Ping timeout: 265 seconds) 2020-04-29T13:19:48Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-29T13:24:29Z klovett quit (Remote host closed the connection) 2020-04-29T13:24:40Z lockywolf joined #scheme 2020-04-29T13:24:44Z klovett joined #scheme 2020-04-29T13:25:34Z lockywolf quit (Remote host closed the connection) 2020-04-29T13:26:00Z lockywolf joined #scheme 2020-04-29T13:28:04Z lockywolf quit (Remote host closed the connection) 2020-04-29T13:28:31Z lockywolf joined #scheme 2020-04-29T13:28:49Z raingloom joined #scheme 2020-04-29T13:30:33Z lockywolf quit (Remote host closed the connection) 2020-04-29T13:31:00Z lockywolf joined #scheme 2020-04-29T13:33:04Z lockywolf quit (Remote host closed the connection) 2020-04-29T13:33:30Z lockywolf joined #scheme 2020-04-29T13:33:51Z jcowan: I have a pre-srfi that wraps port I/O functions into generators and accumulators. 2020-04-29T13:36:56Z jcowan: SRFI 158 gen/accs use the same protocol as ports with eof-objects (you can't have a stream of objects that includes eof objects, poor you) 2020-04-29T13:37:13Z jcowan: so wrapping read or read-line as a generator is trivial 2020-04-29T13:37:53Z jcowan: The need for custom ports arises out of S-expression I/O, which doesn't have any portabe way to plug in sources and sinks that are not ports 2020-04-29T13:39:59Z amirouche quit (Ping timeout: 244 seconds) 2020-04-29T13:41:01Z TCZ quit (Quit: Leaving) 2020-04-29T13:52:20Z badkins joined #scheme 2020-04-29T13:57:19Z turtleman joined #scheme 2020-04-29T14:03:54Z turtleman quit (Ping timeout: 256 seconds) 2020-04-29T14:03:59Z nisstyre quit (Quit: WeeChat 2.7) 2020-04-29T14:05:19Z nisstyre joined #scheme 2020-04-29T14:07:44Z badkins quit (Remote host closed the connection) 2020-04-29T14:08:55Z ahungry joined #scheme 2020-04-29T14:20:21Z jao joined #scheme 2020-04-29T14:23:28Z TCZ joined #scheme 2020-04-29T14:28:42Z badkins joined #scheme 2020-04-29T14:30:03Z lockywolf quit (Remote host closed the connection) 2020-04-29T14:30:39Z lockywolf joined #scheme 2020-04-29T14:31:27Z lockywolf quit (Max SendQ exceeded) 2020-04-29T14:31:57Z lockywolf joined #scheme 2020-04-29T14:32:14Z cantstanya quit (Remote host closed the connection) 2020-04-29T14:32:49Z lockywolf quit (Max SendQ exceeded) 2020-04-29T14:33:16Z cantstanya joined #scheme 2020-04-29T14:33:24Z lockywolf joined #scheme 2020-04-29T14:36:04Z lockywolf quit (Remote host closed the connection) 2020-04-29T14:36:31Z lockywolf joined #scheme 2020-04-29T14:37:26Z lockywolf quit (Max SendQ exceeded) 2020-04-29T14:38:04Z lockywolf joined #scheme 2020-04-29T14:39:33Z lockywolf quit (Remote host closed the connection) 2020-04-29T14:40:04Z lockywolf joined #scheme 2020-04-29T14:40:56Z lockywolf quit (Max SendQ exceeded) 2020-04-29T14:41:25Z lockywolf joined #scheme 2020-04-29T14:43:04Z lockywolf quit (Remote host closed the connection) 2020-04-29T14:43:29Z lockywolf joined #scheme 2020-04-29T14:43:37Z SGASAU joined #scheme 2020-04-29T14:50:11Z xuxx joined #scheme 2020-04-29T14:50:36Z xuxx: I have a problem with do in racket. It set variable at each step before checking the stop expr 2020-04-29T14:50:42Z xuxx: is that normal , 2020-04-29T14:56:38Z daviid joined #scheme 2020-04-29T14:57:03Z erkin: Yes. 2020-04-29T14:58:05Z erkin: It's how C's `for' works too. 2020-04-29T14:58:20Z erkin: Actually wait, no, it's not. 2020-04-29T14:59:23Z erkin: Yeah, I can see how it can be counterintuitive. 2020-04-29T15:00:11Z xuxx: erkin: but on racket it's not what they said 2020-04-29T15:00:23Z xuxx: If it produces #f, each expr is evaluated for its side-effect. The ids are then effectively updated with the values of the step-exprs, where the default step-expr for id is just id; more precisely, iteration continues with fresh locations for the ids that are initialized with the values of the corresponding step-exprs. 2020-04-29T15:01:21Z xuxx: so it check before for the do condition 2020-04-29T15:01:24Z xuxx: then update 2020-04-29T15:01:30Z xuxx: ? 2020-04-29T15:02:48Z xuxx: https://docs.racket-lang.org/reference/for.html 3.18.3 2020-04-29T15:05:39Z erkin: You should note that `step-expr's run after `expr's. 2020-04-29T15:06:10Z erkin: It goes like stop?-expr expr step-expr 2020-04-29T15:12:47Z xuxx: erkin: and if I want to step expr a cvariable that use another variable in the do 2020-04-29T15:12:53Z xuxx: it's not possible ? 2020-04-29T15:15:35Z erkin: Chances are that you want recursion instead of a `do' loop. 2020-04-29T15:15:56Z raingloom quit (Ping timeout: 256 seconds) 2020-04-29T15:18:46Z SGASAU quit (Ping timeout: 256 seconds) 2020-04-29T15:22:03Z lockywolf quit (Remote host closed the connection) 2020-04-29T15:22:33Z lockywolf joined #scheme 2020-04-29T15:23:24Z gwatt: do is simple tail recursion. 2020-04-29T15:23:37Z lockywolf quit (Max SendQ exceeded) 2020-04-29T15:24:00Z erkin: With the added benefit of confusing syntax. 2020-04-29T15:24:32Z lockywolf joined #scheme 2020-04-29T15:29:15Z gwatt: yeah, I'll grant that named lets are easier to understand 2020-04-29T15:31:27Z erkin: Honestly, I haven't seen anyone actually use `do'. Is it a leftover from Maclisp? 2020-04-29T15:32:47Z wasamasa: yup 2020-04-29T15:33:20Z erkin: http://maclisp.info/pitmanual/contro.html#5.8.1 Seems so. 2020-04-29T15:33:35Z wasamasa: I occasionally use it for nested integer loops 2020-04-29T15:33:39Z erkin: And wow, the syntax is identical too. 2020-04-29T15:33:41Z wasamasa: like when doing image processing 2020-04-29T15:33:43Z Riastradh: (do ((i 0 (+ i 1))) ((>= i n)) ...) is pretty much the only way I use it. 2020-04-29T15:34:03Z erkin: Corecursion then. 2020-04-29T15:35:14Z Riastradh: (foof-loop would be better but I haven't imported it into MIT Scheme.) 2020-04-29T15:35:26Z Riastradh: (loop ((for i (up-from 0 (to n)))) ...) 2020-04-29T15:35:31Z Riastradh: (slightly longer too) 2020-04-29T15:36:11Z erkin: Is foof-loop compatible with CL loop? 2020-04-29T15:40:07Z Riastradh: no it's better 2020-04-29T15:40:27Z Riastradh: https://mumble.net/~campbell/tmp/foof-loop.txt 2020-04-29T15:40:33Z Riastradh: https://mumble.net/~campbell/tmp/foof-loop.scm 2020-04-29T15:40:50Z Riastradh: (there was supposed to be another release in a place not labelled `tmp' but I got bored and that never happened) 2020-04-29T15:41:16Z Riastradh: also https://mumble.net/~campbell/tmp/nested-foof-loop.txt, https://mumble.net/~campbell/tmp/nested-foof-loop.scm 2020-04-29T15:41:34Z Riastradh: https://mumble.net/~campbell/tmp/loop-comparison.scm 2020-04-29T15:47:03Z amirouche joined #scheme 2020-04-29T15:55:27Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-29T15:55:30Z amirouche: jcowan: neat 2020-04-29T15:56:02Z cpressey quit (Quit: A la prochaine.) 2020-04-29T15:57:04Z jcowan: CL has do* as well, which is to do as let* is to let. 2020-04-29T15:57:15Z drakonis joined #scheme 2020-04-29T15:57:50Z rain1 quit (Quit: leaving) 2020-04-29T15:57:52Z jcowan: A fundamental difference, however, is that CL do *assigns* the variables to new values, whereas Scheme do *rebinds* them. 2020-04-29T15:58:32Z Riastradh: an assignation with mutable state 2020-04-29T16:00:54Z jcowan: No thanks. Mutable State isn't sexy. 2020-04-29T16:12:13Z rgherdt_ quit (Remote host closed the connection) 2020-04-29T16:15:05Z marmulak[m]: It's the forbidden fruit 2020-04-29T16:15:15Z mdhughes: Until I wrote my `for` macro, I used `do` integer loops, so now I have a bunch of those littered in my library and code. 2020-04-29T16:16:39Z mdhughes: `do` isn't too bad if you're accustomed to C, it just works completely differently. But if you're used to a nice language, it's painful. 2020-04-29T16:29:49Z lavaflow joined #scheme 2020-04-29T16:40:35Z jobol quit (Quit: Leaving) 2020-04-29T16:42:53Z gwatt: I feel like `do' is almost good. 2020-04-29T16:43:33Z gwatt: The moment you want to have conditional state transitions it becomes awkward. 2020-04-29T16:44:02Z rain1 joined #scheme 2020-04-29T16:46:15Z zaifir: It could be worse. At least it's not LOOP. 2020-04-29T16:46:46Z Riastradh: gwatt: foof-loop makes conditional transitions much nicer. 2020-04-29T16:54:18Z gwatt: Riastradh: I believe it 2020-04-29T17:00:58Z TCZ quit (Quit: Leaving) 2020-04-29T17:15:55Z skapata joined #scheme 2020-04-29T17:17:18Z edw: Anyone have any thoughts re: why this R7RS import statement isn't working in Gambit GitHub master? 2020-04-29T17:23:35Z SGASAU joined #scheme 2020-04-29T17:23:52Z sp1ff quit (Remote host closed the connection) 2020-04-29T17:26:18Z mdhughes: You might try renaming the library adderlib, the name collision could be a problem 2020-04-29T17:26:39Z wasamasa: is it just in the repl? 2020-04-29T17:27:04Z mdhughes: And you don't need a begin in a library body. 2020-04-29T17:50:35Z raingloom joined #scheme 2020-04-29T17:53:50Z edw: Thanks folks, let me try out those suggestions. mdhughes: The R7RS standard suggests the begin is indeed necesarry. 2020-04-29T17:55:27Z edw: Also, the suggestion to avoid a name collision doesn't fix the problem. 2020-04-29T17:56:06Z emacsomancer quit (Read error: Connection reset by peer) 2020-04-29T17:57:09Z amirouche: edw: where is adder.scm? 2020-04-29T17:57:19Z amirouche: which directory? what is the load path of gambit? 2020-04-29T17:57:31Z mdhughes: All right. Weird, R5 modules and R6 libraries didn't use a begin. 2020-04-29T17:57:53Z amirouche: IIRC gambit is very forgiving about where you put adder, but it must be in the load path. 2020-04-29T17:58:03Z amirouche: mdhughes: begin in define-library is legit 2020-04-29T17:58:05Z mdhughes: I don't have a pure Gambit version of my main/library example. 2020-04-29T17:58:17Z ahungry quit (Read error: Connection reset by peer) 2020-04-29T17:58:51Z amirouche: edw: sorry, I read your example better. I do not know how define-library works in the REPL. 2020-04-29T17:58:55Z mdhughes: amirouche: Yeah, I just looked it up in the spec, it doesn't have a BODY, just begin. 2020-04-29T17:59:09Z edw: Update . And, yeah, mdhughes, the random variation of library/moudle definition syntax is tedious. 2020-04-29T17:59:26Z ahungry joined #scheme 2020-04-29T17:59:42Z edw: amirouche: adder.sld is in lib. Updated gist above. 2020-04-29T18:00:16Z amirouche: edw: you must add ./lib/ to load path or library path not sure what the name is in gambit, try gambit -:h 2020-04-29T18:00:22Z amirouche: or the thing to have the command line options 2020-04-29T18:01:03Z genevino joined #scheme 2020-04-29T18:02:17Z badkins quit (Remote host closed the connection) 2020-04-29T18:02:33Z amirouche: genevino: welcome :) 2020-04-29T18:02:55Z badkins joined #scheme 2020-04-29T18:04:00Z genevino: amirouche: hello :) 2020-04-29T18:04:14Z emacsomancer joined #scheme 2020-04-29T18:04:25Z amirouche: genevino: are you new around? 2020-04-29T18:04:59Z genevino: amirouche: uh basically, yea. and to be fair, i just joined a couple of interesting seeming channels on this client here. 2020-04-29T18:05:22Z genevino: amirouche: i'm actually just a bash/nixos/freebsd/idm/tapedecks/keyboards nerd. 2020-04-29T18:05:41Z edw: amirouche: I'll look into your load path point, but simply pasting the DEFINE-LIBRARY form into the REPL causes the IMPORT to fail identically. 2020-04-29T18:05:47Z amirouche: genevino: there is a pseudo-fork of nixos using guile, called guix 2020-04-29T18:06:05Z amirouche: edw: it works in chez ;-) 2020-04-29T18:06:10Z genevino: amirouche: that's one of the reasons i stumbled on scheme in the first place, if not the reason. 2020-04-29T18:06:27Z amirouche: genevino: oh! 2020-04-29T18:06:39Z amirouche: most guix are on #guix tho 2020-04-29T18:07:05Z genevino: amirouche: i mean i basically successfully automated the deployment of my nixos desktop machines and it's working nicely and whatnot, but yesterday evening i was like "ok what is this guix thing people keep talking about anyway?" 2020-04-29T18:07:31Z badkins quit (Ping timeout: 246 seconds) 2020-04-29T18:08:04Z edw: amirouche: And I have plenty of code working swimingly in Chibi. And: Huh? I thought Chez was sticking with R6RS? 2020-04-29T18:08:20Z genevino: amirouche: the CLI interface to manage packages is said to be easier to understand in guix, so i will definitely have a look at it at some point. 2020-04-29T18:09:09Z amirouche: edw: well, I am a bit ashemed, but I do have a project that translate R7RS to Chez R6RS, but it is incomple and no REPL 2020-04-29T18:09:17Z amirouche: edw: https://github.com/amirouche/arew-scheme 2020-04-29T18:09:49Z amirouche: edw: it is backward compatible with R6RS and does not support full define-library form stuff... hence the shame 2020-04-29T18:10:15Z genevino: amirouche: the 3d fractal on that page, did you create that? 2020-04-29T18:10:19Z amirouche: I mean you can import Chez .ss stuff or .sls 2020-04-29T18:10:22Z nly joined #scheme 2020-04-29T18:10:41Z edw: amirouche: This is what I get for reading scheme-reports-wg2: someone mentioned Gambit's R7RS support and I couldn't help picking up the yak razor. 2020-04-29T18:11:02Z edw: Greedy for speed. 2020-04-29T18:11:04Z zaifir: edw: By the way, wb. 2020-04-29T18:11:07Z SGASAU` joined #scheme 2020-04-29T18:11:12Z amirouche: genevino: no, it is le Louvre Abou Dabi (see from below https://www.louvre.fr/sites/default/files/imagecache/940x250/medias/medias_images/images/louvre-la-plaza-du-louvre-abu-dhabi_0.jpg?1504773513) 2020-04-29T18:11:13Z rudybot: https://teensy.info/RxEq18FpSK 2020-04-29T18:11:34Z edw: wb, zaifir? 2020-04-29T18:11:38Z genevino: amirouche: interesting. i render 3d fractals that look like that. 2020-04-29T18:11:45Z zaifir: edw: Haven't seen you in #scheme for quite a bit. 2020-04-29T18:11:46Z genevino: amirouche: https://unix.porn/fractals/ 2020-04-29T18:11:49Z amirouche: edw: I tried gambit before starting my project, maybe gambit 5 will be good. 2020-04-29T18:11:58Z edw: Ah, welcome back. 2020-04-29T18:12:10Z Riastradh: wb = weight-balanced, a flavour of binary tree 2020-04-29T18:12:21Z amirouche: genevino: nice! I like that! 2020-04-29T18:12:40Z genevino: (: 2020-04-29T18:12:41Z Riastradh: https://mumble.net/~campbell/hg/picopb/usr.bin/picopbc/wb.c 2020-04-29T18:13:01Z amirouche: genevino: do you know that chez scheme manual has a computer generated image for its of its chapters, but only black-white. 2020-04-29T18:13:04Z edw: I was thinking white balance. Been doing a lot of photography recently. I've been gone, mostly on my motorcycle. 2020-04-29T18:13:37Z amirouche: genevino: here is the cover https://scheme.com/tspl4/canned/medium-cover.png 2020-04-29T18:14:09Z genevino: noice 2020-04-29T18:14:14Z amirouche: genevino: I do not remember how I found that photo, it is from unsplash, it is architecture. 2020-04-29T18:14:28Z amirouche: I mean te photo from github. 2020-04-29T18:14:43Z genevino: amirouche: well the fractals i all rendered within a program called mandelbulber2 2020-04-29T18:14:49Z genevino: it's free even 2020-04-29T18:15:00Z SGASAU quit (Ping timeout: 256 seconds) 2020-04-29T18:16:06Z amirouche: genevino: if you are into guile and this stuff you might be interested by https://libfive.com/ 2020-04-29T18:16:39Z amirouche: genevino: it based on some (I assume) complicated math, where you substrct and add primitives and you end up with... stuff. 2020-04-29T18:17:05Z genevino: amirouche: now THAT's cool 2020-04-29T18:17:07Z amirouche: very neat software. 2020-04-29T18:17:37Z Riastradh: wb = write back, a cacheability attribute for a memory mapping 2020-04-29T18:17:37Z amirouche: genevino: click https://libfive.com/studio/ 2020-04-29T18:18:20Z amirouche: genevino: what is your xp with scheme programming language? 2020-04-29T18:18:29Z amirouche: genevino: what are you plans? 2020-04-29T18:20:12Z amirouche: There is another CPU based 3d render for latex I forget the name, it had the ability to cut a torus with plan. 2020-04-29T18:20:27Z amirouche: very awesome stuff with the perfect curvres of latex of course 2020-04-29T18:21:03Z amirouche: it might be cairo based, but the result blend into latex document like a charm 2020-04-29T18:23:38Z amirouche: genevino: myself, I am into database stuff no one heard about, do you know foundationdb? 2020-04-29T18:24:22Z SGASAU` quit (Remote host closed the connection) 2020-04-29T18:25:03Z SGASAU` joined #scheme 2020-04-29T18:25:09Z badkins joined #scheme 2020-04-29T18:27:24Z SGASAU` quit (Remote host closed the connection) 2020-04-29T18:31:08Z SGASAU joined #scheme 2020-04-29T18:34:29Z jayde joined #scheme 2020-04-29T18:36:29Z amirouche: rudybot: we lost genevino 2020-04-29T18:36:30Z rudybot: amirouche: doesn't matter how many times we add it, it gets lost in the precision limit 2020-04-29T18:36:46Z amirouche: ah at last something not rude 2020-04-29T18:38:59Z msiism joined #scheme 2020-04-29T18:41:24Z msiism: In tspl4, there's an example of simple recursion, demonstrating how to get the length of a list. I've written a slightly modified version as an exercise and it works: https://paste.debian.net/plainh/ab2f067c Only, I don't get how this could ever work. 2020-04-29T18:42:12Z msiism: My specific problem is: That I don't get how this function can know the length of a list at all. 2020-04-29T18:44:09Z msiism: The answer is probably that it doesn't. 2020-04-29T18:46:22Z msiism: This is, apparently, equivalent to just incementing a numeric variable as long as the argument is not NULL. 2020-04-29T18:47:54Z Riastradh: msiism: Try adding (write ls) (newline) at the beginning of llen. Does that help to explain it? 2020-04-29T18:47:56Z amirouche: there is not NULL in scheme there '() and its predicate null? 2020-04-29T18:48:49Z skapata is now known as bellissimo 2020-04-29T18:49:04Z amirouche: msiism: the definition seems correct to me 2020-04-29T18:51:48Z msiism: Riastradh: Right, this shows how llen reduces the list on every recursion. But I can't seem to understand how (+ (llen (cdr ls)) 1) really works. 2020-04-29T18:52:19Z Riastradh: msiism: What's (llen '())? 2020-04-29T18:52:29Z msiism: 0 2020-04-29T18:53:21Z Riastradh: OK. Given that (llen '()) is 0, what's (llen (cons 'a '()))? 2020-04-29T18:53:49Z Riastradh: In particular, what's (cdr (cons 'a '())), and given that, how is (llen (cons 'a '())) evaluated? 2020-04-29T18:55:07Z msiism: Well, (cdr(cond 'a '())) evaluates to the empty list. 2020-04-29T18:56:46Z msiism: And (llen (cons 'a '())) will return an empty list + 1. 2020-04-29T18:57:35Z msiism: And that's what I don't get. How can you add the numeric value 1 to a list and have a numeric value returned? 2020-04-29T18:57:39Z Riastradh: Well, it won't return an empty list. It will return (+ (llen (cdr ls)) 1). 2020-04-29T18:57:49Z Riastradh: If ls is the result of (cons 'a '()), what's (cdr ls)? 2020-04-29T18:58:04Z msiism: The empty list. 2020-04-29T18:58:50Z Riastradh: Right. So it's the same as doing (+ (llen '()) 1), when ls is the result of (cons 'a '()). 2020-04-29T18:58:57Z Riastradh: Now what did we establish (llen '()) is, earlier? 2020-04-29T18:59:50Z msiism: Well, that is 0. 2020-04-29T19:00:07Z Riastradh: Right. So (+ (llen '()) 1) is the same as (+ 0 1). 2020-04-29T19:00:39Z msiism: But, llen's argument is zero, there is not recursion. because it just resturns 0. Oh, ok, I'm beginning to seeโ€ฆ 2020-04-29T19:01:39Z Riastradh: Now what if it were (cons 'x (cons 'a '()))? 2020-04-29T19:01:50Z Riastradh: If that's ls, then what's (cdr ls)? 2020-04-29T19:02:15Z msiism: '(a), I believe 2020-04-29T19:02:28Z Riastradh: Right. So, if that's ls, then what's (+ (llen (cdr ls)) 1)? 2020-04-29T19:02:38Z msiism: 1 2020-04-29T19:02:48Z Riastradh: That is: if ls is the result of (cons 'x (cons 'a '())), what's (+ (llen (cdr ls)) 1)? 2020-04-29T19:04:20Z msiism: I think I need to really parse a three-element list by hand to, maybe, get it. Let me try. 2020-04-29T19:11:35Z msiism: Riastradh: OK, I tried replacing the REPL with my brain. This is how it wokred out: https://paste.debian.net/plainh/af71190b 2020-04-29T19:14:57Z msiism: So, this is actually not incrementing anyhting at all, but creating an expression that evaluates to an addition of the appropriate amount of 1s. 2020-04-29T19:17:59Z Riastradh: What's the difference between adding an appropriate number of 1s and incrementing something an appropriate number of times? 2020-04-29T19:18:28Z Riastradh: (that trace is almost right -- but you're taking the wrong element off the list in each step!) 2020-04-29T19:18:41Z msiism: oh... 2020-04-29T19:18:44Z msiism: Right 2020-04-29T19:19:57Z msiism: Well, the difference is that, with recursion, you buildup the whole expression first and then evaluate it, while with incremention, you simply say "make this one more" on every loop. That's the difference I'd see. 2020-04-29T19:20:48Z msiism: Riastradh: It's gotta be '(a b c), '(b c), '(c). 2020-04-29T19:21:28Z Riastradh: Correct! 2020-04-29T19:22:13Z msiism: s/incremention/incrementing 2020-04-29T19:23:12Z msiism: A classical increment in a while loop would also need an extra numeric variable. Recursion does not. 2020-04-29T19:23:45Z zaifir: msiism: It's just recursion with an accumulating parameter. 2020-04-29T19:24:51Z msiism: Yeah, but it's... I don't knowโ€ฆ โ€œstatelessโ€? 2020-04-29T19:25:30Z msiism: Like, it seems to me that it's building up an expression and then: boom - 3. 2020-04-29T19:26:30Z msiism: While in a loop you could ask for the current state at every iteration. Maybe that's not how things are implemented in general. But it's what, e.g., a shell script looks like. 2020-04-29T19:26:33Z zaifir: msiism: You mean the accumulating version is "stateless", or the recursive? 2020-04-29T19:26:34Z lockywolf_ joined #scheme 2020-04-29T19:27:04Z msiism: zaifir: I mean the recursion is โ€œstatelessโ€, although that's probably not the right word. 2020-04-29T19:27:39Z zaifir: msiism: OK. Yeah, in a sense, the iterative version is passing state to the next call. 2020-04-29T19:28:45Z zaifir: (length-iter STATE lis) => (length-iter NEW-STATE (cdr lis)) 2020-04-29T19:28:54Z lockywolf quit (Ping timeout: 258 seconds) 2020-04-29T19:29:42Z zaifir: Whereas with the recursive version the "state" is given by the recursion pattern of the list type. 2020-04-29T19:29:54Z msiism: I see. 2020-04-29T19:29:59Z zaifir: Er, that's sort of a weird way to put it. 2020-04-29T19:30:16Z msiism: zaifir: Well, Scheme is weird, soโ€ฆ :P 2020-04-29T19:30:49Z msiism: Riastradh: Thanks, by the way. This was very helpful. 2020-04-29T19:31:25Z zaifir: msiism: Actually, state is a weird way to think about list operations. Lists are inductively-defined, so recursion is the natural way to think about operations on them. 2020-04-29T19:32:09Z msiism: zaifir: Yeah, my comment wasn't too well-thought-out. I was just trying to get the difference. 2020-04-29T19:40:41Z zaifir: It's also worthwhile to consider left and right folds on lists, since they give you the general pattern of iteration and recursion, respectively. 2020-04-29T19:45:16Z msiism: Ok, I'll look into that. 2020-04-29T19:46:54Z zaifir: e.g. (fold-left add-1 0 lis) => (fold-left add-1 (add-1 0) (cdr lis)) [tail-recursion], whereas (fold-right add-1 0 lis) => (add-1 (fold-right add-1 0 lis)) [recursion] 2020-04-29T19:48:13Z zaifir: Both compute the same result (by a duality theorem on folds), but the fold-right version will likely use more space. 2020-04-29T19:48:53Z zaifir: (Oops, should be (cdr lis) at the end of that last expression.) 2020-04-29T19:50:39Z msiism: Ok, I'll surely get there in the course of reading the book. 2020-04-29T19:56:45Z badkins quit (Remote host closed the connection) 2020-04-29T19:57:23Z badkins joined #scheme 2020-04-29T20:02:18Z badkins quit (Ping timeout: 260 seconds) 2020-04-29T20:06:24Z zaifir: The unary add-1 in my example was also wrong. It would be (lambda (_ n) (+ 1 n)). 2020-04-29T20:16:23Z badkins joined #scheme 2020-04-29T20:19:10Z rain1 quit (Quit: leaving) 2020-04-29T20:31:23Z jcowan: mdhughes: The reason Scheme code in a library must be wrapped in begin is that the inside of a define-library is not Scheme but a separate language. With all Scheme wrapped, new library directives can be added by the implementation or a future standard without interfering with code. 2020-04-29T20:32:02Z jcowan: We could have used (scheme ...) or (code ...), but begin is already familiar. 2020-04-29T20:42:04Z pjb quit (Remote host closed the connection) 2020-04-29T20:44:40Z sugarwren joined #scheme 2020-04-29T20:46:18Z pjb joined #scheme 2020-04-29T20:52:49Z casaca quit (Quit: leaving) 2020-04-29T20:55:00Z SGASAU quit (Remote host closed the connection) 2020-04-29T20:55:25Z SGASAU joined #scheme 2020-04-29T21:06:16Z casaca joined #scheme 2020-04-29T21:06:35Z SGASAU` joined #scheme 2020-04-29T21:10:26Z SGASAU quit (Ping timeout: 260 seconds) 2020-04-29T21:13:27Z msiism left #scheme 2020-04-29T21:15:25Z casaca quit (Quit: leaving) 2020-04-29T21:16:47Z drakonis quit (Quit: WeeChat 2.8) 2020-04-29T21:19:16Z casaca joined #scheme 2020-04-29T21:20:58Z rgherdt quit (Quit: Leaving) 2020-04-29T21:23:49Z ahungry quit (Remote host closed the connection) 2020-04-29T21:31:14Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-29T21:31:52Z SGASAU joined #scheme 2020-04-29T21:32:37Z sugarwren quit (Quit: Leaving) 2020-04-29T21:35:46Z lritter quit (Quit: Leaving) 2020-04-29T21:40:42Z tessier joined #scheme 2020-04-29T21:40:42Z tessier quit (Changing host) 2020-04-29T21:40:42Z tessier joined #scheme 2020-04-29T21:41:32Z emacsomancer quit (Read error: Connection reset by peer) 2020-04-29T21:43:46Z tessier quit (Client Quit) 2020-04-29T21:48:33Z emacsomancer joined #scheme 2020-04-29T21:50:54Z nly quit (Ping timeout: 256 seconds) 2020-04-29T21:57:23Z minusoneplusone joined #scheme 2020-04-29T21:59:42Z SGASAU quit (Remote host closed the connection) 2020-04-29T22:00:08Z SGASAU joined #scheme 2020-04-29T22:04:36Z rain joined #scheme 2020-04-29T22:06:54Z raingloom quit (Ping timeout: 260 seconds) 2020-04-29T22:11:01Z SGASAU quit (Remote host closed the connection) 2020-04-29T22:11:26Z SGASAU joined #scheme 2020-04-29T22:12:02Z TCZ joined #scheme 2020-04-29T22:16:34Z gravicappa quit (Ping timeout: 256 seconds) 2020-04-29T22:23:12Z cantstanya quit (Remote host closed the connection) 2020-04-29T22:23:14Z SGASAU quit (Remote host closed the connection) 2020-04-29T22:23:39Z SGASAU joined #scheme 2020-04-29T22:24:13Z cantstanya joined #scheme 2020-04-29T22:25:59Z SGASAU quit (Remote host closed the connection) 2020-04-29T22:26:25Z SGASAU joined #scheme 2020-04-29T22:31:21Z keep_learning joined #scheme 2020-04-29T22:40:54Z minusoneplusone quit (Quit: Connection closed) 2020-04-29T22:43:27Z TCZ quit (Quit: Leaving) 2020-04-29T22:48:53Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-29T23:03:20Z X-Scale` joined #scheme 2020-04-29T23:06:13Z X-Scale quit (Ping timeout: 264 seconds) 2020-04-29T23:06:15Z X-Scale` is now known as X-Scale 2020-04-29T23:14:09Z badkins quit (Remote host closed the connection) 2020-04-29T23:15:50Z badkins joined #scheme 2020-04-29T23:17:07Z TCZ joined #scheme 2020-04-29T23:20:38Z badkins quit (Ping timeout: 260 seconds) 2020-04-29T23:42:15Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-29T23:44:54Z badkins joined #scheme 2020-04-29T23:46:16Z keep_learning joined #scheme 2020-04-29T23:59:53Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-30T00:17:54Z pilne joined #scheme 2020-04-30T00:24:17Z SGASAU quit (Remote host closed the connection) 2020-04-30T00:25:04Z SGASAU joined #scheme 2020-04-30T00:28:14Z xuxx quit (Ping timeout: 260 seconds) 2020-04-30T00:32:06Z turtleman joined #scheme 2020-04-30T00:33:19Z armin_ joined #scheme 2020-04-30T00:33:26Z armin_ quit (Client Quit) 2020-04-30T00:58:15Z ahungry joined #scheme 2020-04-30T00:59:48Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-30T01:00:11Z keep_learning joined #scheme 2020-04-30T01:00:13Z lockywolf joined #scheme 2020-04-30T01:30:13Z dan64- quit (Quit: ZNC - http://znc.in) 2020-04-30T01:31:41Z dan64 joined #scheme 2020-04-30T01:48:03Z TCZ quit (Quit: Leaving) 2020-04-30T01:48:21Z torbo joined #scheme 2020-04-30T01:53:34Z LeoNerd quit (Remote host closed the connection) 2020-04-30T01:53:53Z LeoNerd joined #scheme 2020-04-30T02:07:03Z badkins quit (Remote host closed the connection) 2020-04-30T02:10:30Z badkins joined #scheme 2020-04-30T02:13:02Z lockywolf_ joined #scheme 2020-04-30T02:15:32Z badkins quit (Ping timeout: 256 seconds) 2020-04-30T02:15:34Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-30T02:19:22Z turtleman quit (Ping timeout: 260 seconds) 2020-04-30T02:29:03Z pilne quit (Quit: Tis but a scratch) 2020-04-30T02:46:03Z jao quit (Ping timeout: 260 seconds) 2020-04-30T02:48:42Z mdhughes: So future-proofing +1, but uglier introduction of yet another level that's not in R5 module or R6 library -1000. 2020-04-30T02:52:02Z rain quit (Ping timeout: 260 seconds) 2020-04-30T03:01:07Z torbo quit (Remote host closed the connection) 2020-04-30T03:02:18Z drakonis joined #scheme 2020-04-30T03:24:50Z zaifir: What's an "R5 module"? 2020-04-30T03:26:43Z zaifir: R7's define-library is also a lot more flexible than R6's all-the-exports-then-all-the-imports-then-body format. 2020-04-30T03:28:45Z mdhughes: Every R5 has its own half-assed library system. In CHICKEN, it's `(declare (unit foo)) (module foo () (import ...) BODY )` 2020-04-30T03:29:20Z zaifir: Right, but R5RS itself doesn't standardize any module system. 2020-04-30T03:29:47Z mdhughes: And how can anything be more flexible than just treating those as top-level directives? More structure is less flexible, just more future-proof so someone can't squat on a useful directive name. 2020-04-30T03:31:00Z mdhughes: But you're already rewriting the prologue for every single impl, so that future-proofing doesn't matter. 2020-04-30T03:32:26Z zaifir: Rewriting the prologue? It's fairly easy to write a library portable to R7 Schemes. 2020-04-30T03:32:50Z ahungry quit (Remote host closed the connection) 2020-04-30T03:33:18Z mdhughes: Apparently not, given this morning's Gambit difficulty. 2020-04-30T03:33:45Z Riastradh: I think the original idea was to avoid putting the define-library in existing code at all, so that it could coexist with other module systems like Scheme48's... 2020-04-30T03:34:16Z aeth: That makes a lot of sense. 2020-04-30T03:34:31Z aeth: You can also have two R7RS libraries from the same file 2020-04-30T03:34:35Z zaifir: That makes sense. 2020-04-30T03:34:46Z aeth: I mean, assuming you do a .scm and .sld divide or something similar 2020-04-30T03:35:02Z zaifir: Especially with the include and include- forms. 2020-04-30T03:35:14Z mdhughes: And in R6. But not in every R5 or R7, where some just assume one file = one module/library. 2020-04-30T03:35:41Z zaifir: Weirdly, it seems that R6 was missing include. 2020-04-30T03:35:49Z Riastradh: (FYI, mdhughes is probably still ignoring me, so responses like `That makes a lot of sense.' probably don't make sense.) 2020-04-30T03:37:24Z Riastradh: (or appear to be responses to something different!) 2020-04-30T03:37:28Z aeth: Riastradh: that makes a lot of sense. 2020-04-30T03:38:17Z mdhughes: load, include, compile, etc. are impl-specific, there might not be a filesystem or source files. 2020-04-30T03:40:52Z aeth: mdhughes: I think that the idea behind R7RS's system is afaik to do define-library in a separate file (e.g. a .sld file if chibi-compatible) so that multilingual Scheme code can exist, where .scm is shared in common and the library/module/package/etc. file is separate and implementation-specific. You could even define e.g. two different chibi .sld files with different define-library definitions using the same .scm implementation file 2020-04-30T03:41:34Z drakonis quit (Quit: WeeChat 2.8) 2020-04-30T03:42:05Z aeth: The disadvantage being that you use twice as many files. 2020-04-30T03:42:18Z aeth: (At a minimum, since the idea is that different module/library/etc. systems can coexist) 2020-04-30T03:42:59Z mdhughes: Yeah, it's a throwback to .h/.c where I have two files open all the time so I can put declarations far away from the implementation. 2020-04-30T03:43:06Z Riastradh: aeth: In Scheme48 it's not necessary to double the number of files; usually you have one file that lists all the modules. 2020-04-30T03:43:16Z Riastradh: .h/.c is good actually 2020-04-30T03:43:39Z Riastradh: Keep the interface/ABI contract separate from the implementation so you can change the implementation without recompiling everything downstream. 2020-04-30T03:43:43Z aeth: mdhughes: It's also not unlike CL's package.lisp although I personally don't like that convention that much, either 2020-04-30T03:43:58Z aeth: (except in CL it's very much optional and just a convention) 2020-04-30T03:44:19Z zaifir: I'll always use a separate library declaration, if only to avoid a global indent. 2020-04-30T03:45:43Z zaifir: And yes, implementation changes don't touch the external interface definitions. 2020-04-30T03:49:39Z aeth: Riastradh: eh... in practice, a Scheme might recompile everything downstream anyway 2020-04-30T03:51:51Z aeth: In particular, if functional 2020-04-30T03:53:43Z rudybot quit (Ping timeout: 260 seconds) 2020-04-30T03:54:48Z Riastradh: In practice a C compiler might recompile everything with LTO too, but that doesn't mean separating the API and ABI contract from the implementation is useless. 2020-04-30T03:55:35Z aeth: I mean it's sort of like TCO though 2020-04-30T03:55:40Z aeth: if a C compiler does it, it's an "O" 2020-04-30T03:55:51Z aeth: But it could just be... the way the Scheme works 2020-04-30T03:56:22Z rudybot joined #scheme 2020-04-30T04:06:01Z dmiles quit (Read error: Connection reset by peer) 2020-04-30T04:07:30Z logicmoo joined #scheme 2020-04-30T04:10:32Z zmt00 joined #scheme 2020-04-30T04:11:54Z badkins joined #scheme 2020-04-30T04:12:45Z zmt01 quit (Ping timeout: 240 seconds) 2020-04-30T04:16:26Z badkins quit (Ping timeout: 260 seconds) 2020-04-30T04:16:26Z keep_learning quit (Ping timeout: 260 seconds) 2020-04-30T04:17:11Z keep_learning joined #scheme 2020-04-30T04:22:41Z zooey_ joined #scheme 2020-04-30T04:22:43Z zooey quit (Ping timeout: 240 seconds) 2020-04-30T04:32:05Z zooey_ is now known as zooey 2020-04-30T04:38:59Z stux|work quit (Ping timeout: 260 seconds) 2020-04-30T04:39:10Z stux|wor- joined #scheme 2020-04-30T04:49:17Z KindOne quit (Quit: K-Lined) 2020-04-30T04:57:46Z KindOne joined #scheme 2020-04-30T05:06:36Z lockywolf__ joined #scheme 2020-04-30T05:08:53Z lockywolf_ quit (Ping timeout: 258 seconds) 2020-04-30T05:09:04Z lockywolf__ quit (Remote host closed the connection) 2020-04-30T05:09:34Z lockywolf__ joined #scheme 2020-04-30T05:12:35Z lockywolf_ joined #scheme 2020-04-30T05:15:19Z lockywolf__ quit (Ping timeout: 246 seconds) 2020-04-30T05:28:11Z logicmoo is now known as dmiles 2020-04-30T05:53:08Z gravicappa joined #scheme 2020-04-30T05:57:09Z vyzo quit (Ping timeout: 265 seconds) 2020-04-30T05:58:52Z SGASAU quit (Remote host closed the connection) 2020-04-30T05:59:17Z SGASAU joined #scheme 2020-04-30T06:07:49Z lockywolf_ quit (Ping timeout: 246 seconds) 2020-04-30T06:08:15Z jayde quit (Quit: quit) 2020-04-30T06:11:07Z seepel joined #scheme 2020-04-30T06:12:51Z badkins joined #scheme 2020-04-30T06:15:50Z rgherdt joined #scheme 2020-04-30T06:16:59Z lockywolf joined #scheme 2020-04-30T06:17:27Z badkins quit (Ping timeout: 260 seconds) 2020-04-30T06:23:14Z lockywolf_ joined #scheme 2020-04-30T06:24:18Z seepel quit (Ping timeout: 260 seconds) 2020-04-30T06:25:40Z lockywolf quit (Ping timeout: 246 seconds) 2020-04-30T06:26:43Z zooey quit (Ping timeout: 240 seconds) 2020-04-30T06:27:59Z seepel joined #scheme 2020-04-30T06:29:31Z zooey joined #scheme 2020-04-30T06:32:55Z bellissimo quit (Quit: ฤœis!) 2020-04-30T06:34:43Z seepel quit (Ping timeout: 260 seconds) 2020-04-30T06:43:25Z daviid quit (Ping timeout: 264 seconds) 2020-04-30T07:11:06Z vyzo joined #scheme 2020-04-30T07:18:19Z jobol joined #scheme 2020-04-30T07:18:57Z xuxx joined #scheme 2020-04-30T07:45:03Z amirouche: I like the fact that with a few lines of code one can implement a switch over numbers 2020-04-30T07:45:05Z amirouche: https://paste.gnome.org/prdaysjvb 2020-04-30T07:53:03Z cpressey joined #scheme 2020-04-30T07:56:33Z wasamasa: hm, interesting 2020-04-30T07:56:44Z wasamasa: I wonder how hard a generalized variant would be, similar to condp in clojure 2020-04-30T07:58:17Z wasamasa: it's more like ecase though since it requires the else 2020-04-30T08:00:05Z wasamasa: oh, it doesn't 2020-04-30T08:00:20Z wasamasa: but then it misbehaves 2020-04-30T08:00:33Z rain joined #scheme 2020-04-30T08:01:50Z wasamasa: https://paste.gnome.org/pbt12ei70/rydshz 2020-04-30T08:07:59Z amirouche: yeah, there is the else, IIRC Racket2 will always have `else` in `case` and `cond` with a default implementation that raise 2020-04-30T08:08:28Z wasamasa: I've added an extra rule without the else and a syntax-error in the expansion 2020-04-30T08:08:41Z wasamasa: not sure whether this is the way to go, I rarely use macros 2020-04-30T08:09:13Z amirouche: I rarely use macro too. 2020-04-30T08:13:44Z badkins joined #scheme 2020-04-30T08:18:10Z badkins quit (Ping timeout: 260 seconds) 2020-04-30T08:28:13Z mdhughes: amirouche: At least yours lets you use defined variables/constants, but only one value per row limits its useโ€ฆ 2020-04-30T08:29:20Z mdhughes: I keep playing with some kind of match that'll take multiple values and a comparator, but I'm not happy with how any of it looks so I end up just writing big cond chains. 2020-04-30T08:35:28Z tiodargy joined #scheme 2020-04-30T08:36:14Z wasamasa: I rarely have a need for multiple values, but the comparator is very useful 2020-04-30T08:42:44Z tiodargy quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-30T08:56:24Z siraben quit (Quit: killed) 2020-04-30T08:56:24Z marmulak[m] quit (Quit: killed) 2020-04-30T08:56:24Z dieggsy quit (Quit: killed) 2020-04-30T08:56:25Z Ericson2314 quit (Quit: killed) 2020-04-30T08:56:25Z mbakke quit (Quit: killed) 2020-04-30T08:56:26Z keep-learning[m] quit (Quit: killed) 2020-04-30T08:56:34Z amnesic[m] quit (Quit: killed) 2020-04-30T08:56:35Z xavierm02 quit (Quit: killed) 2020-04-30T08:56:39Z spectrumgomas[m] quit (Quit: killed) 2020-04-30T08:56:40Z Gnuxie[m] quit (Quit: killed) 2020-04-30T08:56:54Z mouloud[m] quit (Quit: killed) 2020-04-30T08:57:01Z hansbauer[m] quit (Quit: killed) 2020-04-30T09:08:44Z keep-learning[m] joined #scheme 2020-04-30T09:16:59Z siraben joined #scheme 2020-04-30T09:16:59Z mbakke joined #scheme 2020-04-30T09:16:59Z dieggsy joined #scheme 2020-04-30T09:16:59Z marmulak[m] joined #scheme 2020-04-30T09:16:59Z amnesic[m] joined #scheme 2020-04-30T09:16:59Z Ericson2314 joined #scheme 2020-04-30T09:16:59Z Gnuxie[m] joined #scheme 2020-04-30T09:16:59Z mouloud[m] joined #scheme 2020-04-30T09:17:05Z hansbauer[m] joined #scheme 2020-04-30T09:17:05Z spectrumgomas[m] joined #scheme 2020-04-30T09:17:06Z xavierm02 joined #scheme 2020-04-30T09:21:33Z lockywolf joined #scheme 2020-04-30T09:22:15Z lockywolf_ quit (Ping timeout: 240 seconds) 2020-04-30T09:30:29Z rain1 joined #scheme 2020-04-30T09:30:33Z rain1 quit (Changing host) 2020-04-30T09:30:33Z rain1 joined #scheme 2020-04-30T09:42:08Z civodul joined #scheme 2020-04-30T10:02:22Z lockywolf quit (Ping timeout: 260 seconds) 2020-04-30T10:03:55Z q3d joined #scheme 2020-04-30T10:04:19Z lritter joined #scheme 2020-04-30T10:09:13Z z-memory joined #scheme 2020-04-30T10:14:40Z badkins joined #scheme 2020-04-30T10:19:07Z badkins quit (Ping timeout: 246 seconds) 2020-04-30T10:24:07Z TCZ joined #scheme 2020-04-30T10:41:25Z cpressey quit (Quit: WeeChat 1.9.1) 2020-04-30T11:10:09Z daviid joined #scheme 2020-04-30T11:16:36Z q3d quit (Ping timeout: 240 seconds) 2020-04-30T11:22:49Z stux|wor- quit (Quit: Aloha!) 2020-04-30T11:24:43Z stux|work joined #scheme 2020-04-30T11:32:37Z SGASAU quit (Remote host closed the connection) 2020-04-30T11:33:55Z SGASAU joined #scheme 2020-04-30T11:47:10Z lockywolf joined #scheme 2020-04-30T11:55:20Z retropikzel joined #scheme 2020-04-30T11:55:49Z retropikzel quit (Remote host closed the connection) 2020-04-30T12:03:29Z turtleman joined #scheme 2020-04-30T12:04:23Z cpressey joined #scheme 2020-04-30T12:07:43Z jao joined #scheme 2020-04-30T12:15:39Z badkins joined #scheme 2020-04-30T12:20:22Z badkins quit (Ping timeout: 260 seconds) 2020-04-30T12:22:42Z SGASAU quit (Remote host closed the connection) 2020-04-30T12:23:45Z SGASAU joined #scheme 2020-04-30T12:28:48Z lritter quit (Quit: Leaving) 2020-04-30T12:29:52Z lritter joined #scheme 2020-04-30T12:31:47Z corpix joined #scheme 2020-04-30T12:32:03Z corpix_ quit (Remote host closed the connection) 2020-04-30T12:32:15Z pflanze quit (Ping timeout: 272 seconds) 2020-04-30T12:32:23Z tryte quit (Ping timeout: 240 seconds) 2020-04-30T12:33:57Z tryte joined #scheme 2020-04-30T12:36:09Z ggole joined #scheme 2020-04-30T12:45:42Z corpix_ joined #scheme 2020-04-30T12:45:57Z pflanze joined #scheme 2020-04-30T12:45:58Z corpix quit (Remote host closed the connection) 2020-04-30T12:46:35Z SGASAU quit (Remote host closed the connection) 2020-04-30T12:47:06Z SGASAU joined #scheme 2020-04-30T12:54:58Z z-memory quit (Quit: Connection closed for inactivity) 2020-04-30T12:58:05Z corpix_ quit (Remote host closed the connection) 2020-04-30T13:00:33Z lritter_ joined #scheme 2020-04-30T13:01:02Z lritter quit (Ping timeout: 260 seconds) 2020-04-30T13:03:01Z corpix joined #scheme 2020-04-30T13:03:16Z turtleman quit (Ping timeout: 246 seconds) 2020-04-30T13:13:30Z mr_machina joined #scheme 2020-04-30T13:53:52Z keep_learning quit (Quit: This computer has gone to sleep) 2020-04-30T13:53:54Z ahungry joined #scheme 2020-04-30T14:12:17Z badkins joined #scheme 2020-04-30T14:26:27Z xallad joined #scheme 2020-04-30T14:30:40Z TCZ quit (Quit: Leaving) 2020-04-30T14:34:13Z emacsomancer quit (Read error: Connection reset by peer) 2020-04-30T14:36:59Z emacsomancer joined #scheme 2020-04-30T15:10:48Z nly joined #scheme 2020-04-30T15:23:12Z cpressey quit (Quit: WeeChat 1.9.1) 2020-04-30T15:23:41Z theseb joined #scheme 2020-04-30T15:24:48Z theseb: newb closure/lexical scoping question..... (define x 5) 2020-04-30T15:24:48Z theseb: (define (double) (* x 2)) 2020-04-30T15:24:48Z theseb: (define x 10) 2020-04-30T15:24:48Z theseb: (double) <--- Why does this print 20 instead of 10? I thought the closure froze the function def to use the x value at the time of creation!? 2020-04-30T15:25:35Z rain1: try (define double (* x 2)) 2020-04-30T15:25:39Z rain1: and double instead of (double) 2020-04-30T15:25:48Z rain1: in this case it will have resolved x initially and you get 10 2020-04-30T15:26:07Z rain1: in your example it doesn't resolve x since its code inside a function 2020-04-30T15:26:26Z rain1: only after x was redefined to a new value do you call double, then x is resolved with value 10 and 20 is returned 2020-04-30T15:27:00Z rain1: the second define is mutating the value of x, the double function looks up the value of x when it is called 2020-04-30T15:27:23Z rain1: also try (let ((x 10)) (double)) 2020-04-30T15:30:12Z theseb: rain1: ok trying now... 2020-04-30T15:30:56Z Riastradh: theseb: At the top level, or at the REPL, (define x ...) (define x ...) is like (define x ...) (set! x ...). 2020-04-30T15:31:27Z Riastradh: The purpose of that semantics is that you can interactively re-evaluate definitions, and existing procedures will catch the new definitions. 2020-04-30T15:33:20Z badkins quit (Remote host closed the connection) 2020-04-30T15:33:52Z theseb: rain1: interesting....so closure applies to (define double ...) but not (define (double) ..) 2020-04-30T15:34:01Z badkins joined #scheme 2020-04-30T15:35:20Z theseb: rain1: but why does "the double function looks up the value of x when it is called" ? Isn't that "dynamic scope" since you are relying on runtime info when you invoke function? 2020-04-30T15:35:34Z theseb: rain1: i thought that wasn't allowed in lexical scoping (early binding) 2020-04-30T15:38:25Z rain1: it is lexical scope because the x refers to the x that is available when the function is defined 2020-04-30T15:38:36Z rain1: but it looks up the value of that x at the time the procedure is executed 2020-04-30T15:38:46Z badkins quit (Ping timeout: 260 seconds) 2020-04-30T15:39:06Z Riastradh: theseb: Start by rewriting the _second_ (define x ...) as (set! x ...) in your head, e.g. 2020-04-30T15:39:09Z Riastradh: (define x 5) 2020-04-30T15:39:12Z Riastradh: (define (double) (* x 2)) 2020-04-30T15:39:14Z Riastradh: (set! x 10) 2020-04-30T15:39:16Z Riastradh: (double) 2020-04-30T15:39:19Z Riastradh: (let ((x 20)) (double)) 2020-04-30T15:39:45Z Riastradh: There are two different variables both named `x' in different scopes here. 2020-04-30T15:40:31Z Riastradh: One of them -- the top-level `x' created with `define' -- takes on two different values, 5 and 10, at different times in the program, but it's the same variable both times and it's the one `double' refers to. 2020-04-30T15:44:24Z balkamos quit (Ping timeout: 265 seconds) 2020-04-30T15:45:22Z DKordic: Riastradh: I thought Global Scope is Dynamic to implement Mutual Recursion. 2020-04-30T15:46:06Z Riastradh: ...? 2020-04-30T15:46:13Z Riastradh: No variables are dynamically scoped in Scheme. 2020-04-30T15:52:24Z balkamos joined #scheme 2020-04-30T15:56:33Z jcowan: Ordinary REPLs allow you to refer to global variables not yet defined (typically, procedures not yet written). It is possible to construct REPLs that don't have this property, like Owl Lisp's, where forward references are impossible. 2020-04-30T15:57:59Z gwatt: ikarus/vicare has that functionality as well. 2020-04-30T15:58:25Z badkins joined #scheme 2020-04-30T16:05:28Z SGASAU quit (Remote host closed the connection) 2020-04-30T16:06:11Z SGASAU joined #scheme 2020-04-30T16:15:06Z balkamos quit (Ping timeout: 240 seconds) 2020-04-30T16:18:11Z jobol quit (Quit: Leaving) 2020-04-30T16:20:51Z klovett quit (Ping timeout: 260 seconds) 2020-04-30T16:30:41Z balkamos joined #scheme 2020-04-30T16:41:14Z balkamos quit (Ping timeout: 246 seconds) 2020-04-30T16:47:54Z xallad quit (Ping timeout: 256 seconds) 2020-04-30T16:49:54Z xallad joined #scheme 2020-04-30T16:55:55Z xkapastel joined #scheme 2020-04-30T16:56:28Z balkamos joined #scheme 2020-04-30T16:59:43Z theseb: rain1, Riastradh: i think i see my mistake now....lexical scoping freezes the *symbol* (i.e. variable) used but not the _value_ ! 2020-04-30T16:59:47Z theseb: thanks a million! 2020-04-30T17:00:20Z theseb: Riastradh: is that right? 2020-04-30T17:01:00Z klovett joined #scheme 2020-04-30T17:02:02Z zaifir: theseb: Not quite. 2020-04-30T17:02:19Z rain1: yes 2020-04-30T17:04:23Z zaifir: theseb: When your `double' procedure is evaluated, x is looked up in the top-level environment. If it included a binding for x, then the value would always be whatever x is bound to internally. 2020-04-30T17:05:36Z balkamos quit (Ping timeout: 265 seconds) 2020-04-30T17:05:46Z ln^ joined #scheme 2020-04-30T17:06:13Z wasamasa: http://ix.io/2kc1 2020-04-30T17:08:25Z Riastradh: zaifir: (`bound' is sometimes taken to be a relation between a name, like x, and a meaning, like the variable that was introduced by (define x ...) at the top level) 2020-04-30T17:08:53Z Riastradh: (another meaning for a name might be a macro that was introduced by writing (define-syntax y ...)) 2020-04-30T17:09:30Z zaifir: Riastradh: OK, by "included a binding" I was of course thinking of a let or internal define. 2020-04-30T17:11:06Z zaifir: theseb: Actually, a really simple example of lexical scope is (define x 10) (define id (lambda (x) x)) (id 4) ; => 4 2020-04-30T17:13:27Z balkamos joined #scheme 2020-04-30T17:17:10Z theseb: zaifir: would your code emit a 4 also if scheme had dynamic scoping? 2020-04-30T17:18:01Z badkins quit (Remote host closed the connection) 2020-04-30T17:18:35Z badkins joined #scheme 2020-04-30T17:23:19Z badkins quit (Ping timeout: 246 seconds) 2020-04-30T17:29:33Z ArthurStrong joined #scheme 2020-04-30T17:32:58Z ecraven: (define x 10) (define (id) x) (let ((x 3)) (id)) 2020-04-30T17:33:06Z ecraven: with lexical binding, you get 10, with dynamic binding, 3 2020-04-30T17:33:28Z amirouche quit (Ping timeout: 246 seconds) 2020-04-30T17:43:10Z theseb: ecraven: i tried zaifir's example in elisp here: https://repl.it/languages/elisp ...i did (defvar x 10) (defun id (x) x) (print (id 4)) and it gave 4...but i thought unlike scheme elisp is dynamic scope 2020-04-30T17:45:44Z gwatt: theseb: lexical vs dynamic scoping affects the resolution of free variables. Bound variables are going to work the same in any language. Otherwise, madness ensues 2020-04-30T17:47:26Z gwatt: because you defined `x' as the argument to `id', any referene to `x' inside of `id' is going to have the value of whatever you passed when calling `id' 2020-04-30T17:48:40Z gwatt: If you instead had done something like: (defun id () x) (print (id)) (let ((x 4)) (print (id))) you should see different values printed 2020-04-30T17:52:37Z theseb: gwatt: do you mind making a new version that does not use let? I want to test my lisp implementation's scope and haven't implemented 'let' yet ;) 2020-04-30T17:53:14Z gwatt: theseb: ((lambda (x) (print (id))) 4) 2020-04-30T17:53:55Z SGASAU quit (Remote host closed the connection) 2020-04-30T17:54:11Z SGASAU` joined #scheme 2020-04-30T17:54:15Z theseb: gwatt: thanks 2020-04-30T17:59:09Z theseb: gwatt: actually id needs 1 args...so it i did ((lambda (x) (print (id x))) 4) and it stil gave 4!? 2020-04-30T17:59:38Z gwatt: going to quote what I wrote earlier: 2020-04-30T17:59:54Z gwatt: lexical vs dynamic scoping affects the resolution of free variables. Bound variables are going to work the same in any language. Otherwise, madness ensues 2020-04-30T17:59:59Z gwatt: because you defined `x' as the argument to `id', any referene to `x' inside of `id' is going to have the value of whatever you passed when calling `id' 2020-04-30T18:00:49Z gwatt: That's why I specifically wrote a version of `id' that took no arguments and referenced `x' as a free variable 2020-04-30T18:04:28Z ecraven: theseb: use (lambda (a) (x)) if you need a parameter 2020-04-30T18:04:42Z ecraven: but as gwatt and others repeatedly told you, this is not about function parameters, but about free variables 2020-04-30T18:23:25Z izh_ joined #scheme 2020-04-30T18:30:01Z SGASAU` quit (Remote host closed the connection) 2020-04-30T18:30:27Z SGASAU` joined #scheme 2020-04-30T18:32:52Z amirouche joined #scheme 2020-04-30T18:42:22Z theseb: If a lisp uses environments, instead of having a single variable lookup table, does that alone immediately imply it is lexically scoped? 2020-04-30T18:46:58Z theseb: oh wait....n/m....you have environments w/ dynamic scope too 2020-04-30T18:47:05Z theseb: sorry i'm slow today 2020-04-30T18:54:58Z deesix_ joined #scheme 2020-04-30T18:56:07Z sugarwren joined #scheme 2020-04-30T18:57:15Z sz0 quit (Quit: Connection closed for inactivity) 2020-04-30T18:58:02Z deesix quit (Ping timeout: 260 seconds) 2020-04-30T18:58:39Z xallad quit (Quit: xallad) 2020-04-30T18:59:57Z deesix joined #scheme 2020-04-30T19:00:30Z ggole quit (Quit: Leaving) 2020-04-30T19:00:58Z deesix_ quit (Ping timeout: 256 seconds) 2020-04-30T19:08:33Z dan64- joined #scheme 2020-04-30T19:08:50Z hugh_marera joined #scheme 2020-04-30T19:09:14Z kjak quit (Ping timeout: 256 seconds) 2020-04-30T19:11:02Z dan64 quit (Ping timeout: 260 seconds) 2020-04-30T19:18:28Z duncanm: la la la 2020-04-30T19:21:34Z skapata joined #scheme 2020-04-30T19:41:01Z sugarwren quit (Ping timeout: 272 seconds) 2020-04-30T19:42:19Z amirouche: I am the only one to cycle between projects? 2020-04-30T19:44:44Z badkins joined #scheme 2020-04-30T19:45:36Z kjak joined #scheme 2020-04-30T19:47:28Z wasamasa: depends on the definition of cycling 2020-04-30T19:47:43Z wasamasa: I like cycling around the city 2020-04-30T19:55:32Z edw: In R7RS, is it possible to have a library with an exported macro that expands to another macro that is not exported? 2020-04-30T19:56:59Z edw: I'm trying to adapt the SRFI 26 (cut, cute) example implenentation to Gambit. 2020-04-30T19:57:35Z edw: One possibility might be using LET-SYNTAX within the expansion of CUT(E), but that seems ridiculously inefficient. 2020-04-30T20:00:13Z edw: And also some infernal violation of macroexpansion phasing. 2020-04-30T20:01:47Z klovett_ joined #scheme 2020-04-30T20:03:30Z drakonis joined #scheme 2020-04-30T20:05:19Z rain1 quit (Quit: leaving) 2020-04-30T20:05:22Z klovett quit (Ping timeout: 246 seconds) 2020-04-30T20:07:04Z denis__ joined #scheme 2020-04-30T20:07:05Z Riastradh: edw: Sure oughta be possible. 2020-04-30T20:07:14Z Riastradh: edw: Did you try it, and find that it doesn't work? 2020-04-30T20:08:22Z ecraven: edw: isn't that the normal behaviour? I wouldn't expect a macro to use the usage environment for further expansion? 2020-04-30T20:09:34Z izh_ quit (Ping timeout: 246 seconds) 2020-04-30T20:12:12Z lockywolf quit (Ping timeout: 256 seconds) 2020-04-30T20:14:49Z jcowan: amirouche: By no means, I juggle several 2020-04-30T20:15:30Z aeth quit (Quit: Reconnecting) 2020-04-30T20:15:46Z aeth joined #scheme 2020-04-30T20:17:16Z SGASAU` quit (Remote host closed the connection) 2020-04-30T20:17:23Z aeth: 2-3 is the optimal number of projects because you can procrastinate one by doing the other. And if they're in the same language, you might find some common abstractions. 2020-04-30T20:17:51Z SGASAU` joined #scheme 2020-04-30T20:18:26Z KindOne quit (Ping timeout: 256 seconds) 2020-04-30T20:20:31Z denis__ quit (Quit: Leaving) 2020-04-30T20:20:40Z hugh_marera quit (Quit: hugh_marera) 2020-04-30T20:21:27Z KindOne joined #scheme 2020-04-30T20:22:24Z xuxx quit (Quit: Lost terminal) 2020-04-30T20:26:13Z mdhughes: I keep a Stickies with a list of all projects I actually intend to work on. Currently at 8. 2020-04-30T20:26:22Z pilne joined #scheme 2020-04-30T20:27:31Z mdhughes: It's a good thing I can be hyperproductive a couple days a week, because I goof off and I'm <25% useful on one project every other day. 2020-04-30T20:32:37Z edw: Riastradh, ecraven: If one wraps [this](https://srfi.schemers.org/srfi-26/cut.scm) with a .sld file that exports only CUT and CUTE, Gambit cannot find the implementation dependency macro. ecraven: I'm not sure what behavior you were describing as normal. 2020-04-30T20:33:33Z Riastradh: edw: Got a minimum working example? 2020-04-30T20:39:52Z edw: Plugging away at one... 2020-04-30T20:43:12Z SGASAU` quit (Remote host closed the connection) 2020-04-30T20:43:43Z SGASAU` joined #scheme 2020-04-30T20:45:29Z xkapastel quit (Quit: Connection closed for inactivity) 2020-04-30T20:46:39Z badkins_ joined #scheme 2020-04-30T20:47:14Z TCZ joined #scheme 2020-04-30T20:49:38Z badkins_ quit (Client Quit) 2020-04-30T20:49:59Z edw: Riastradh: https://gist.github.com/edw/8a625a73fbc4028edbbb424c4fd1b334 2020-04-30T20:50:26Z badkins quit (Ping timeout: 260 seconds) 2020-04-30T20:51:53Z Riastradh: Got a minimaler example of a macro that expands to a use of an unexported name? 2020-04-30T20:53:10Z edw: Plugging away again... 2020-04-30T20:53:33Z amoe quit (*.net *.split) 2020-04-30T20:53:33Z ft quit (*.net *.split) 2020-04-30T20:53:33Z erkin quit (*.net *.split) 2020-04-30T20:53:33Z belmarca quit (*.net *.split) 2020-04-30T20:53:33Z rotty quit (*.net *.split) 2020-04-30T20:53:34Z stux16777216Away quit (*.net *.split) 2020-04-30T20:53:34Z cross quit (*.net *.split) 2020-04-30T20:53:43Z erkin joined #scheme 2020-04-30T20:53:47Z ft joined #scheme 2020-04-30T20:53:47Z amoe_ joined #scheme 2020-04-30T20:53:52Z gwatt: edw: I think you might need to export <> and <...> not the internal-{cut,cute} 2020-04-30T20:54:00Z cross joined #scheme 2020-04-30T20:54:16Z rotty joined #scheme 2020-04-30T20:54:18Z stux16777216Away joined #scheme 2020-04-30T20:54:43Z belmarca joined #scheme 2020-04-30T20:57:53Z Riastradh: jcowan: Do R7RS libraries require all names used in the output of a macro to be exported? 2020-04-30T21:00:32Z gwatt: Riastradh: actually, not even R6RS requires that. However, some schemes (at least chez) require those keywords be exported when working in the repl. 2020-04-30T21:03:57Z jcowan: R6RS implicitly exports all such names, but there is no such requirement in R7RS, so you need to make sure you do it yourself. 2020-04-30T21:04:41Z Riastradh: jcowan: That's wrong -- they should not be `exported' per se at all, in the sense that using a name in a macro output should not imply that it can be used in any way other than via the macro. 2020-04-30T21:05:02Z Riastradh: (that is, unless the author explicitly chooses to export them) 2020-04-30T21:07:28Z jcowan: I see that R6RS 7.1 is ambiguous on this point. The text is "An exported macro may, however, implicitly export an otherwise unexported identifier defined within or imported into the library. That is, it may insert a reference to that identifier into the output code it produces." 2020-04-30T21:07:55Z turtleman joined #scheme 2020-04-30T21:09:17Z jcowan: But it is not clear whether "may" means "the implementation may or may not do this" or whether it means "the implementation may take advantage of the required facility of implicit exporting to do this." 2020-04-30T21:09:25Z jcowan: s/implementation/macro/2 2020-04-30T21:10:46Z jcowan: This is one reason why R7RS-small and recent SRFIs confined the RFC 2119 modal verbs to constrain the implementation, using "is an error", "an error is signaled", or "an error satisfying foo? is signaled" when constraining the programmer. 2020-04-30T21:11:58Z Riastradh: I read it to mean that a macro is allowed to do that, so an implementation is required to support that. 2020-04-30T21:12:34Z jcowan: But the following grafs make it clear that implicit export is equivalent in effect to explicit export: once exported, the importing library can do what it likes short of assigning to it or redefining it, which importing libraries cannot do in general. 2020-04-30T21:12:42Z Riastradh: The only weak ambiguity there is whether the identifier is actually exported and usable in other modules like any other exported identifier, or whether it is only exported for the purposes of the macro expansion. 2020-04-30T21:12:57Z jcowan: I agree that this is not theoretically neat, but that's the way it is. 2020-04-30T21:13:01Z Riastradh: (The correct answer is that it should be exported only for the purposes of the macro expansion, but I don't know whether R7RS libraries got this right.) 2020-04-30T21:13:20Z lritter_ quit (Quit: Leaving) 2020-04-30T21:13:50Z Riastradh: Sounds like R7RS libraries got this wrong so that you can't reason about the use of a private name that referenced in a macro expansion, 2020-04-30T21:14:05Z jcowan: As I say, R7RS makes no such prescription, and expects such identifiers to be exported. AFAIK no existing R7RS macro (as far as the sample implementations go) attempt to exploit implicit exporting. 2020-04-30T21:14:14Z Riastradh: but not wrong in the way that seems to be interfering with edw right now, which suggests maybe Gambit has a bug (or edw is misinterpreting something, which is why I suggested a MWE). 2020-04-30T21:14:19Z jcowan: Don't export private names, whether in a macro expansion or not. 2020-04-30T21:14:52Z Riastradh: I disagree with that advice. Using a name with a macro expansion SHOULD NOT expose it to any use _not_ arising from the macro expansion. 2020-04-30T21:15:02Z jcowan: Scheme has steadily been retreating from code-data equivalence (which I think is the right direction to go in) and making the output of a macro contain no identifiers would be a reasonable next step. 2020-04-30T21:15:18Z jcowan: My advice is pragmatic only. 2020-04-30T21:15:32Z Riastradh: Well, MY advice is normatively statler and waldorfian. 2020-04-30T21:15:40Z jcowan: Given the ambiguity of R6RS and the silence of R7RS, it may not work. 2020-04-30T21:16:53Z jcowan: I note that Statler and Hilton merged in 1954. 2020-04-30T21:24:57Z SGASAU` quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-30T21:25:24Z SGASAU joined #scheme 2020-04-30T21:27:11Z ahungry quit (Remote host closed the connection) 2020-04-30T21:32:47Z keep_learning joined #scheme 2020-04-30T21:39:38Z Riastradh quit (Remote host closed the connection) 2020-04-30T21:40:03Z Riastradh joined #scheme 2020-04-30T21:40:14Z badkins joined #scheme 2020-04-30T21:53:18Z edw: Riastradh: Please see new minimal example. (import (adder)) ((make-adder 1) 2) blows up if FN is not exported. Works fine if it is exported. https://gist.github.com/edw/dbb2ad2f2e1baac399634d93a9cdbbe9 2020-04-30T21:53:41Z Riastradh: edw: Cool! Now file a bug report! 2020-04-30T21:54:09Z edw: Is this expected behavaior or not? That was my question. 2020-04-30T21:54:19Z Riastradh: This is a bug. 2020-04-30T21:54:51Z edw: OK then. Thank you. 2020-04-30T22:09:13Z pjb quit (Ping timeout: 272 seconds) 2020-04-30T22:19:01Z torbo joined #scheme 2020-04-30T22:38:43Z averell quit (Quit: .) 2020-04-30T22:40:05Z pjb joined #scheme 2020-04-30T22:42:16Z averell joined #scheme 2020-04-30T22:48:07Z gravicappa quit (Ping timeout: 244 seconds) 2020-04-30T22:50:11Z jao quit (Remote host closed the connection) 2020-04-30T22:51:53Z badkins quit (Remote host closed the connection) 2020-04-30T22:54:39Z jao joined #scheme 2020-04-30T23:03:39Z badkins joined #scheme 2020-04-30T23:03:56Z X-Scale` joined #scheme 2020-04-30T23:04:21Z badkins quit (Remote host closed the connection) 2020-04-30T23:06:06Z badkins joined #scheme 2020-04-30T23:06:10Z X-Scale quit (Ping timeout: 256 seconds) 2020-04-30T23:06:10Z X-Scale` is now known as X-Scale 2020-04-30T23:06:29Z TCZ quit (Quit: Leaving) 2020-04-30T23:10:18Z badkins quit (Ping timeout: 256 seconds) 2020-04-30T23:23:04Z civodul quit (Quit: ERC (IRC client for Emacs 26.3)) 2020-04-30T23:26:24Z cdadr joined #scheme 2020-04-30T23:28:27Z theseb quit (Quit: Leaving) 2020-04-30T23:29:57Z badkins joined #scheme 2020-04-30T23:38:10Z terpri quit (Remote host closed the connection) 2020-04-30T23:38:38Z terpri joined #scheme 2020-04-30T23:44:44Z pjb quit (Ping timeout: 246 seconds) 2020-04-30T23:45:01Z TCZ joined #scheme 2020-04-30T23:57:31Z rgherdt quit (Ping timeout: 272 seconds)