17 ms·
My resignation letter as R7RS-large chair
- tedivm 3y agoDoes anyone actually use Scheme for real projects? The only places I've ever seen it used have been in classrooms.
- duncan-donuts 3y agoLike all lisps it is niche. I don’t use scheme but have used Common Lisp and clojure for a few years. Racket has a thriving community as far as I can tell. You just don’t see lisp much in the wild but it’s there.
- fuzztester 3y agoMy totally uneducated and uninhibitedly snarky guess is that people who use any Lisp family language (except maybe Clojure) don't go around talking much about that fact, or thumping their chests about it, unlike (some) Ruby, Python or JS users. They probably just quietly go about using it and having fun, and talk about it when they meet each other.
- senkora 3y agoGuile Scheme is used extensively in the Guix linux distribution, and works quite nicely there.
- _zoltan_ 3y agoextreme niche on extreme niche.
- Zambyte 3y agoWhich is terribly unfortunate, because it solves very non-niche packaging problems in a very elegant way.
- bjoli 3y agoI had to use Nix in a project of mine and was surprised at how clunky it felt compared to guix. Writing packages meant string concatenations and juggling outputs to the command line. I prefer guix. Every day of the week.
- Zambyte 3y agoSame here. I used NixOS as my desktop operating system for a few months I think. It did not go great. After hopping a to a few other distros, now I've been using Guix as my OS for a few years.
- pxc 3y agoGuix is niche, but it's very much 'real software'. It does useful things well, and it solves some problems that very few competitors adequately do. It's used for reproducible scientific computing on some HPC clusters, which is a pretty cool niche if you ask me. The Guix package collection is also sizeable and growing exponentially-- within a few years, it'll probably outgrow most Linux distros in terms of size.
- deleted 3y ago[deleted]
- kdmccormick 3y agoUnless they have quietly rewritten it, HN itself is written in Scheme. Or, more precisely, it is written in Arc, which is implemented in Scheme.
- johncowan 3y agoFor "precisely" read "correctly". Unless the implementation language is exposed to users of the implemented language, it doesn't matter what the implementation language is. gfortran is written in C and C++, but that does not mean Fortran programs are written in C or C++.
- kdmccormick 3y agoOkay, I think what I said was clear enough, but if we're splitting hairs, I'll say: that's a bad comparison because gfortran is compiled to machine code. When you run a gfortran program, you're not executing anything that was written in C. When you run e.g. Python, the runtime written in C is indeed being executed. If nothing else in the world was written in C except the Python runtime, IMO it would still be fair to say that C is widely used. A security flaw in C compiler could potentially cause a vulnerability in any Python program. The question was "is Scheme used for anything in production?" and it is correct to say "yes it is used for HN" even if HN is not directly written in Scheme.
- retrac 3y agoIt's currently used as a back-end for the Idris language. (Which is primarily a research language, admittedly.) It's a fairly popular target for languages to compile to, for similar reasons that C is -- small, well-defined, minimal, many implementations, runs just about everywhere. Very nice compilation target for functional languages in particular, as call/cc can, with reasonable efficiency, implement just about any kind of control flow/evaluation/threading model that you can think of. Also, used as a scripting language in the GIMP.
- tmalsburg2 3y agoC is neither minimal nor well-defined, as has been discussed extensively. Random blog post illustrating only some of the issues is here [1]. Just google “undefined behavior c” for a lot more. There are also a bunch of famous rants by Linus Torvalds on his topic. [1] https://blog.regehr.org/archives/213 https://blog.regehr.org/archives/213
- PennRobotics 3y agocan we all agree that the undefined behavior is pretty well identified and documented? Plus, if you understand the entire language and then limit your imagination, C can be quite simple!
- mrguyorama 3y agoIt's so simple to avoid undefined behavior, just never add two numbers, or dereference a pointer that you can't statically guarantee the value of.
- spookie 3y agoYes, it's a simple language. That's why there are no safe guards around INT_MAX + 1, or variants of that.
- fluoridation 3y agoYou can add two numbers. If the operands are signed you just need to check the operands before the addition to make sure you won't cause an overflow.
- chongli 3y agoI think the biggest issue with any lisp is that it's just too damn powerful of a language. This makes it super easy for developers to create their own little ecosystem of macros and functions that nobody else can understand. This can be absolutely disastrous for large teams and companies looking to hire. Languages that force you to be more verbose and don't let you build your own ultra-powerful abstractions seem to work better for large teams where you can force everyone to adopt a standard style. This makes onboarding much easier too.
- remexre 3y agoI dunno, I got a (Common) Lisp job, and I don't think I've ever had a problem where I didn't understand the semantics of a macro; people aren't just making a ton of them all the time for no reason, and the ones that are popular are from popular libraries (e.g. alexandria and iterate) and have clear semantics. I think the same problem applies perfectly well to developers who "create their own little ecosystem of classes and functions nobody else can understand" -- I don't think [0] would be made any harder to understand by having macros involved. [0]: https://old.reddit.com/r/programming/comments/15s0lp6/how_we_reduced_the_cost_of_building_twitter_at/jwcdhil/?context=3 https://old.reddit.com/r/programming/comments/15s0lp6/how_we... (only picking on it because I saw it recently)
- tikhonj 3y agoPeople say this, but it hasn't been my experience in practice—the worst, most complex codebases I've seen have been in Python and Java. But I guess they look simple and uniform at a superficial, syntactic level. If you can't follow that it's your fault, if you can't follow Lisp code it's Lisp's fault...
- matrix12 3y agoWe use Gerbil/Gambit scheme in production. The new actor system makes it a very compelling.
- all2 3y agoHow do you handle Gerbil's incomplete docs? I'll admit, when I was looking at them I had no clue how Schemes worked, but I found the lack of documentation to be a very difficult barrier.
- BaculumMeumEst 3y agoi would wager that anyone ballsy enough to use gerbil in production is at a minimum very active on gitter and probably a contributor to the language
- matrix12 3y agoRemember Gerbil is a layer on top of Gambit, which has been 30 years in the making.
- matrix12 3y agoGitter has been a great resource. Vyzo is very helpful in answering questions. The docs could use some work. But the code is fairly trivial to follow on most things.
- kkylin 3y agoIsn't Julia's parser still in Scheme?
- cbkeller 3y agoFemptolisp, a "Scheme dialect"
- sundarurfriend 3y agoFor now, yes. The upcoming 1.10 release (which is now in beta) will switch to a pure Julia parser as the default (with the old Scheme parser available as an option). Not because of any fault with Scheme per se (afaik), just that contributors to Julia are more likely to know Julia than Scheme, so it makes sense from a maintanence point of view.
- adgjlsfhk1 3y agonote that in 1.10 scheme is still used for lowering (simplifying AST to IR which is a lot of code for julia)
- MadcapJake 3y agoChicken Scheme is a high performance source-to-source (C) Scheme that supports the R5RS and R7RS (work in progress) http://www.call-cc.org/ http://www.call-cc.org/
- evdubs 3y agoI use Racket (a Scheme) for option trading. https://github.com/evdubs/renegade-way https://github.com/evdubs/renegade-way
- sph 3y agoGreat example, very readable and with a GUI as well!
- dharmatech 3y agoFascinating! If you hadn't gone with Scheme, what's another language you'd have considered for this project?
- evdubs 3y agoJava and JavaFX.
- whartung 3y agoHow was your experience with Racket in this case vs Java (assuming you've had some FX experience to contrast it to)?
- evdubs 3y agoWith Racket: * I really enjoy using numeric towers and it is upsetting to me every time I go to another language where I can't just work with rationals as a default. * Having statistics functions, a GUI library, and a plot library all part of the standard distribution is wonderful. Dependencies are kept to a minimum, which I appreciate. Everything feels coherent and not over-engineered. * Poking around in the large standard library was straight forward and not difficult. I added candlesticks [1] to the plot library without understanding much of the plot library's design or implementation details. I think this would have been much more involved in many other languages. Where I perceive Java as nicer than Racket: * I wish Racket had real threads like Java. Having futures and places for actual concurrency / parallelism is not as nice. * I wish Racket had the rich data structures built in as Java has. You need to reach for an external library for a sorted data structure; this is not ideal. * Java's performance is great and its future is promising. Java already has some great GCs including low pause time GCs, Project Valhalla will add value objects to Java, and Project Loom will enhance the concurrency functionality offered in Java. I don't have much JavaFX experience, but my perception is that it would be fine and just as "cumbersome" as Racket's GUI and plot libraries. [1] https://docs.racket-lang.org/plot/renderer2d.html?q=candlesticks#%28def._%28%28lib._plot%2Fmain..rkt%29._candlesticks%29%29 https://docs.racket-lang.org/plot/renderer2d.html?q=candlest...
- dxbydt 3y agoI used it just the other day to work an aime problem for my middle schooler. scheme@(guile-user) [5]> (exp (* (atan 1) -2)) $9 = 0.20787957635076193 scheme@(guile-user) [5]> (expt 0+1i 0+1i) $10 = 0.20787957635076193+0.0i a problem c/c++/java/js/python/rust/go can't handle after decades of progress. even my favorite R can't work this problem. scheme ftw.
- satya71 3y agoHmm. Python 3.11 (didn't test in earlier) >>> from math import atan, exp >>> exp(atan(1)*-2) 0.20787957635076193 >>> 1j**1j (0.20787957635076193+0j)
- dxbydt 3y agothank you. i tested this on lc playground and yeah it does work.
- vinaypai 3y agoWhat's the "aime problem" and why can't c/c++/java/js/python/rust/go handle it?
- dqv 3y agoI did a little googol and found out it's like an accelerated math thing https://artofproblemsolving.com/wiki/index.php/American_Invitational_Mathematics_Examination https://artofproblemsolving.com/wiki/index.php/American_Invi...
- vinaypai 3y agoOkay, I was just wondering if there's something non-obvious here. I guess OP is just woefully misguided about languages other than scheme or "these languages can't handle it" means something more like "I don't know how to use those languages".
- 3y ago
- cosmojg 3y agoYes, the very website[1] on which you posted this comment is written in Scheme[2], for example. [1] https://en.wikipedia.org/wiki/Hacker_News https://en.wikipedia.org/wiki/Hacker_News [2] https://en.wikipedia.org/wiki/Arc_(programming_language) https://en.wikipedia.org/wiki/Arc_(programming_language)
- wk_end 3y agoNaughty Dog used Racket as part of the development of The Last of Us. [0] https://www.youtube.com/watch?v=oSmqbnhHp1c https://www.youtube.com/watch?v=oSmqbnhHp1c
- alexott 3y agoAround 20 years ago I worked on commercial email filtering/archiving system implemented in MzScheme (now PLT) - it was relatively small code base, but very powerful. I wrote an article about it in Russian (almost 15 years ago), for some reason google translate doesn’t work for archive url: https://web.archive.org/web/20210506123442/http://fprog.ru/2009/issue2/alex-ott-using-scheme-in-dozor-jet/ https://web.archive.org/web/20210506123442/http://fprog.ru/2...
- chriswarbo 3y agoI chose Racket for a project that involved lots of AST manipulation. Those ASTs were already in s-expression format, so Scheme seemed a natural fit. The lack of static types was annoying; Typed Racket helped, but was so slow I only enabled it during unit tests (more precisely: Typed Racket functions can be faster than those written in normal Racket, but calling them from normal Racket functions will be slow as it performs run-time checks) https://github.com/Warbo/theory-exploration-benchmarks/tree/master/scripts https://github.com/Warbo/theory-exploration-benchmarks/tree/...
- kryptiskt 3y agoI assume that Cisco is using Chez Scheme for something since they bought it (and open sourced it).
- deleted 3y ago[deleted]
- nextaccountic 3y agoRacket is very used in the PLT community (programming language theory) for prototyping programming languages. Lots of cool stuff in this area. For example, the MIR formality [0] project of the Rust programming language to formalize MIR (their intermediate language) was first prototyped in Racket [1], then rewritten in Rust. [1]'s readme give a rationale: > For the time being, the model is implemented in PLT Redex. PLT Redex was chosen because it is ridiculously accessible and fun to use. It lets you write down type system rules and operational semantics and then execute them, using a notation that is very similar to what is commonly used in published papers. You can also write collections of unit tests and fuzz your model by generating test programs automatically. > The hope is that PLT Redex will prove to be a sufficiently accessible tool that many Rust contributors will be able to understand, play with, and extend the model. > One downside of PLT Redex is that it doesn't scale naturally to performing proofs. We may choose to port the model to another system at some point, or maintain multiple variants. [0] https://github.com/rust-lang/a-mir-formality https://github.com/rust-lang/a-mir-formality [1] https://github.com/rust-lang/a-mir-formality/tree/1f40120f09b0560db21497673e9a0158fc69dd57 https://github.com/rust-lang/a-mir-formality/tree/1f40120f09...
- gumby 3y agoCould someone fill in the background? R7RS seems like an unlikely venue for hot conflict, but then again I haven't been a scheme user in decaes.
- tobinfricke 3y agoWhat is R7RS?
- Decabytes 3y agoRevised report version 7. The current scheme standardization. It proceeded R6RS which many felt was too large, and added too many things to the scheme standard (it’s only 90 pages long). R7RS was the compromise
- kkylin 3y agoExactly. R7RS-small was meant to be a minimal core language, in the spirit of RnRS for n <= 5, whereas R7RS-large was meant to be a fairly complete set of standard libraries.
- tmtvl 3y agoIt's the Revised Revised Revised Revised Revised Revised Revised Report on the algorithmic programming language Scheme. That's 7 "Revised"s, hence R7RS. Basically the RxRSes are full specifications of what you need in a Scheme implementation to conform to the Xth iteration of the language.
- greggsy 3y agohttps://github.com/johnwcowan/r7rs-work/blob/master/R7RSHomePage.md https://github.com/johnwcowan/r7rs-work/blob/master/R7RSHome... I still have no idea what exactly R7RS is
- cobbal 3y agoIt's a specification of the scheme programming language: https://en.wikipedia.org/wiki/Scheme_(programming_language) https://en.wikipedia.org/wiki/Scheme_(programming_language)
- cosmojg 3y agoIt's the latest version of a language specification for the Scheme family of programming languages.
- arp242 3y agoThe 7th version of the Scheme standard/specification, basically. There's a "small" and "large" version of it, for different use cases/preferences (there's a bit of drama behind this: R6RS introduces a lot of "large" features that many implementers felt were too "bloated", which was eventually resolved by splitting the standard in small/large variants).
- all2 3y agoIt seems like "core language" vs "standard library" almost. The Large spec includes things like lists, vectors, streams, and generators [0]. [0] https://practical-scheme.net/gauche/man/gauche-refe/R7RS-large.html https://practical-scheme.net/gauche/man/gauche-refe/R7RS-lar...
- deleted 3y ago[deleted]
- yieldcrv 3y agoI thought it was a Xaiomi smart chair posting on the internet
- mananaysiempre 3y ago
- deleted 3y ago[deleted]
- ansible 3y agoWhat's the overall Scheme community look like these days? How much are new libraries targeting the specifications (like R6RS) vs. just targeting a specific implementation like Racket, Guile or Chicken Scheme? What forces are keeping the various implementations aligned and moving in the same direction? What is driving them apart? What does the future look like?
- munificent 3y agoI'm just watching this as an observer, but I suspect a lot of it is: People who want to write real-world Scheme code have a strong incentive for a single definition of the language so that their code will reliably run on multiple implementations. They want one language and are probably willing to deal with some breakage in places where implementations are alreaday incompatible in order to get there. People who maintain Scheme implementations want backwards compatibility so that they aren't forced to rewrite a bunch of already working implementation code or try to support multiple different languages at the same time. They don't want to make breaking changes to their implementations and break all of their users in order to converge towards some other implementations' behavior they may not care about. Teachers want a language that is maximally elegant and minimal. They are perfectly happy to make tweaks to the language to make it incrementally cleaner even if it breaks tons of existing code because most of their code is short-lived anyway. Reconciling these very different incentives does not sound fun.
- fuzztester 3y agoLike herding wild, feral and domestic cats - all at the same time. https://en.m.wikipedia.org/wiki/Cat_Herders https://en.m.wikipedia.org/wiki/Cat_Herders
- johncowan 3y agoVery well said. A fourth group is people maintaining existing user code (including libraries), who also want backward compatibility.
- bjoli 3y agoI am usually only targeting guile, mostly because of guix. Guile or chicken seems to be the most popular schemes, but Chez is a compelling choice when there are no external dependencies.
- tptacek 3y agoIt'd be neat if someone familiar with Scheme standardization laid out some of the big disagreements in R7RS-large, or else most of this thread will just be a Scheme vs. Every Other Language discussion.
- bloppe 3y agoI've been trying to get up to speed myself. It seems like the best way is simply reading the mailing list and checking out the codeberg issues. This issue [1] was given as an example of a non-technical problem that's easy to get distracted by when most of the core technical work should be straightforward. It's referenced in this candidacy statement [2] for John's chair position which is a good read to understand what's happening. It's essentially the classic language debate of breaking compatibility with past version versus evolving the language, and seems pretty complicated. I'm sure there are other problems. I'm still reading. [1]: https://codeberg.org/scheme/r7rs/issues/126 https://codeberg.org/scheme/r7rs/issues/126 [2]: https://groups.google.com/g/scheme-reports-wg2/c/TUbmlPY9lR0 https://groups.google.com/g/scheme-reports-wg2/c/TUbmlPY9lR0
- merlincorey 3y agoThe second link provided here has a little overview of Daphne's thoughts on why things are dragging on: > The establishment of the central issue tracker is, I reckon, more to blame for the current disputes. The old model of periodic ballots provided the community with focus; the issue tracker has the problem that, since all currently outstanding problems are listed in one place, any such problem can become a focus of attention at any time, and then arguments about the details of that problem erupt. John has observed in #scheme that the more into detail we get, the more we seem to argue, which seems accurate. It has also, in practice, become a place where issues related to the Foundations only are discussed, and work on the Batteries has mostly stalled. Mea culpa!
- bjoli 3y agor6rs was hugely controversial for many reasons. r7rs-small went back to the r5rs roots, whereas many of us (yes, me included) thought building on r6rs would be the better choice. Much of the process that was started in r6rs led to racket. Kent Dybvig was the head of the standards body and the racket folks were also active in the mailing lists. I think a big part of the disagreement was about correctness. r6rs guarantees some things about a running program that is difficult to do for many small hobby projects. There was also a discussion started about things like immutable data (pairs and strings, mostly) which got people all hot and bothered. The problem with r7rs-large is that it will have to solve many of the problems solved by r6rs (low level macro system, how to handle unicode etc...) which means redoing the r6rs work.
- layer8 3y agoTook me a few moments to realize this isn’t a satirical text about a large seating furniture.
- deleted 3y ago[deleted]
- jp57 3y agoI got involved with scheme back in the days of R{5,6}RS (as a user, not in the standards process). Even then it was an argument for the BDFL model over design by committee.
- patrickmay 3y agoR4RS was a gem. Let's revert.
- bjoli 3y agocall/cc without dynamic-wind is pretty nasty.
- JonChesterfield 3y agoI wonder if the optimum is a benevolent dictator controlling the language and committee controlling the associated library. The community is then a sort of third ring of library evolution. Inconsistency is more expensive the closer to the language definition it arises as the blast radius is wider. Compromises and redundancy are more valuable in the library layer. Lisp blurs the lines somewhat but it's usually possible to subdivide a system into a core and stuff built on that core.
- munificent 3y agoAs someone who works on a combined language/core library team, it's really nice to have them both under the same roof. We can provide a much better overall user experience when we can design features that involve the language and core libraries working in concert with each other. For example, we recently added tuples as a language feature to Dart, and also added a function in the async library that lets you await a tuple of futures in parallel and returns a future of the tuple of the resulting values. When we added extension methods to the language, we also rolled out some extension methods in the core library.
- johncowan 3y agoWe have had four models: Committee consensus took us up through R5RS. There were about 30 members of the committee, though obviously some were more active than others. The problem with that was that we got no change except at the margins. Implementations were extended in random incompatible ways. Then we had consensus of a small committee (5 members, later 4) for R6RS, followed by a community ratification vote. A lot of people thought the resulting standard was over-engineered, and I am quite sure that many people didn't understand all of it (I didn't for sure, especially macros and records.) Some implementers adopted it, others declared they never would. For R7RS-small and the early stages of R7RS-large, we had the open SRFI process (anyone can propose, the community helps refine, the author decides when to freeze the result). Now we have a (de facto) Sitzfleisch process: however stays in their seat and is still arguing the longest, wins. I eventually ran out of energy for this one. Note that in all cases the text controls the meaning, not the author(s), and when the standard and an implementation collide, it is the implementation that is wrong. This is very nearly a sacred principle, as in C/C++ and various other multiple-implementation languages.
- refulgentis 3y agoI almost posted this an hour ago, and feel more comfy now that it’s an hour later: I’m sad how quickly this rocketed to top 3 on front page and how little content there is, it’s just someone resigning from a project virtually none of us know about. The “My resignation letter” was titillating enough to skyrocket upvotes and engagement
- deleted 3y ago[deleted]
- chriswarbo 3y ago> a project virtually none of us know about You may be surprised! For context, R7RS is the latest standard for Scheme. Actually it's two standards: a 'small' one for the core language (similar to R5RS; this was finished a decade ago), whilst this involves the 'large' standard, which is trying to agree on a "standard library". Some reasons people may have upvoted this, or otherwise be interested in Scheme: - R7RS has been dragging on for so long, it may be nice to see some/any sort of status update - Scheme has so many diverse implementations (Racket, Guile, Gambit, Chicken, Chez, Stalin, etc.) that it's really important to have some common standards. - Scheme was a major influence on Javascript (along with Self) - Scheme pioneered many features that are now taken for granted, e.g. first-class functions (it's a "1-lisp"), lexical scope, tail-call elimination, continuation-passing style, call/cc, etc. - Scheme is commonly used as a scripting language by applications written in other languages (similar to Lua). Indeed, Guile is the "official" extension language of the GNU project (e.g. see Guix, Shepherd, etc.). - Scheme was/is taught at many schools and university courses - Well-known textbooks like SICP use Scheme; and indeed guide the reader through writing their own implementation! - Scheme is used for programming language research (e.g. "towers of interpreters", (delimited) continuations, miniKanren, etc.). Indeed Racket used to be called PLT Scheme (PLT = Programming Language Theory)
- zem 3y ago> - R7RS has been dragging on for so long, it may be nice to see some/any sort of status update that's why i upvoted! this is a pretty significant status update if you're interested in r7rs or scheme in general.
- bachmeier 3y agoAdditional background would be nice. I clicked the link out of curiosity to see what it meant for a piece of furniture to resign from something. After clicking the link, I was no better informed.
- deleted 3y ago[deleted]
- mkl95 3y ago[flagged]
- bhaney 3y ago> all I learnt is that it's somehow related to Scheme It is Scheme
- JonChesterfield 3y agoIt does have slight perl 6 vibes. Scheme was a very small language with high expressive power (compiler under application control and first class continuations). It picked up cleanups and fixes until revision 4 or 5ish, the r6 changed direction and went for relatively big language. More like common lisp. R6 fractured the community, some people stayed on R5 indefinitely. R7 tried to handle this with a small and large revision, shipped the small part a decade ago, and the large one is a work in progress (and seems at risk of getting the same reception r6 did). So whether it is scheme, or whether it's an obscure project using the same name, kind of depends on perspective.
- mkl95 3y agoThanks for the insight! Looks like some people took the time to flag my simple question.
- neilv 3y agoThanks to John Cowan for all his work on a very challenging PL standards efforts. Someday, I'd be interested in what were the process difficulties overcome, and how, and what are the remaining problems or costs. (Disclosure: I was involved in the working groups, briefly and in a much lesser capacity.)
- hinkley 3y agoI hate that the world sometimes requires a human sacrifice in order for change to happen. I can empathize with people that say this is a stupid way to fix a problem, but unfortunately the world is full of stupid things that actually work. On one project, we had a horrible integration test system that required a human to read and interpret the output. The guy who wrote it made his own DSL. As we struggled with it, he noped out and left the project. The next guy had partly the right idea. He figured out how to translate the whole thing into Python with a couple of macros. So at least you could step through it. Then he noped out. Since I do a lot of CI/CD work and my primary goal on the project had already been fulfilled, I took over. What a mess. I made it better but I still couldn't nail down pass/fail statuses reliably. Pointless system. I kept harping on how we needed to throw out the whole thing. It was a false sense of safety at best. When I left to work on something closer to my life goals, at the very last big meeting one of my people I'd been mentoring said, "The last 3 people to leave this team worked on this one project. Maybe we should get rid of it." and everyone started nodding. Son of a bitch. Now, I wouldn't have stayed anyway, but someone else might have. I've seen other situations like this play out, and while there's always gonna be someone who 'takes their ball and goes home', often enough it's someone reasonably determining that they cannot or will not be responsible for the chaos represented by Option A over Option B. This will burn down, fall over, and sink into the swamp.
- deleted 3y ago[deleted]
- johncowan 3y agoIf you mean me, I am definitely not a human sacrifice. I walked away because I had had enough.
- hinkley 3y agoThat's what I mean. For this to be some place people like working, someone has to leave over the status quo. Which means they don't get to benefit from any of the work done so far or subsequently.
- eweise 3y agoDisappointed. Thought I was going to see a resignation letter shaped like a large chair.
- tannhaeuser 3y agoFYI John Cowan is also known as editor of the XML 1.1 spec, as well as other works related to markup languages and Unicode.
- BaculumMeumEst 3y agoi never actually understood how r7rs is supposed to work in practice, because when i learn a scheme i’ve always just learned how to use implementation-specific functionality
- fud101 3y agoJcowan always been a class act.
- zelphirkalt 3y agoWhile reading I had a thought: What if they (whoever it is, who could or should do this) worked on a proposal, that specifies, how language features should be added to the language? I mean, there are things like continuations and macros. Those need to be really solid. But based on them, could one not make everything else an optional addition, implemented on top of them, instead of in a dialect's core? So that Schemes could all go for R7RS small (except those that object to things in it) and then basically have a "folder" in their sources of things that are additionally necessary to have R7RS large things? Those things being implemented in the way that the standard proposes? Then we could get to a R7RS large step by step, feature by feature. I guess this depends on whether things in R7RS large are at their core incompatible with how R7RS small works. Probably it also depends on those dialects implementing the standards correctly for the primitives, that the extension mechanism is supposed to be based on. I also don't know enough to tell what attempts have already been made to resolve things, so perhaps someone already had this idea and it does not work.
- johncowan 3y agoAlas, no. There are quite a few other things that are needed in what is now being called the Foundations in order for adding features to be done through libraries. Scheme, like other Lisps, is almost all "library" and very little "language", once you get past variables, constants, and function/macro calls. The only "language" feature added so far (in R7RS-small) is that previously a vector constant had to be quoted, whereas now it is self-evaluating: you used to have to say (vector-ref '#(a b c) 0), whereas now you can leave out the quote mark.
- bjoli 3y agoWho will convince Kent to come back and make r6.1rs? https://github.com/cisco/ChezScheme/issues/574 https://github.com/cisco/ChezScheme/issues/574 If you want a large language, isn't it a better idea to build it on top of something the makes better guarantees for the user? I prefer my program to not continue executing after reaching an erroneous state.
- johncowan 3y agoNot if it's so constraining to the implementer that you can't get any implementations. Nobody's paying us to do this stuff.
- bjoli 3y agoOf course not, but knowing that the program should never continue executing in an erroneous state is for me a pretty nice-to-have. Scheme enforces correctness and safety in many places and I think that one in particular is important enough to warrant being opt-out rather than opt-in.