4 ms·
We wouldn't have need such barbaric things in a lisp world. :p Personally I think/hope they would have earlier discoveries / more broad usage of the determinis
by tyromaniac 2mo ago
We wouldn't have need such barbaric things in a lisp world. :p
Personally I think/hope they would have earlier discoveries / more broad usage of the deterministic systems like nix etc, which are built upon functional principles of immutability etc.
Maybe the world would be guix/Hurd!
- neutronicus 2mo ago> Personally I think/hope they would have earlier discoveries / more broad usage of the deterministic systems like nix etc, which are built upon functional principles of immutability etc. Yeah, that, uh, doesn't sound like Lisp
- tyromaniac 2mo agohttps://guix.gnu.org/ https://guix.gnu.org/
- neutronicus 2mo agoYeah, I mean, I know it exists, but the mythology of Lisp is built around "I can drop into a REPL and execute arbitrary code on a production system and that is a good thing"
- tyromaniac 2mo agoAs opposed to our wonderful world where everyone does the same with unchecked binaries or obfuscated/minified JS? To me the mythology of lisp (from my mostly outsider perspective) is more like "make everything a interoperable DSL" (although if this is what you were describing with your sentence then thats fair enough)
- anthk 2mo agoYou can with Guix, just save your config in a new deployment for a new boot.
- blubber 2mo agoCommon lisp isn't functional in that sense.
- tyromaniac 2mo agoSure the language might not be immutable but the lisp machine alt universe's "overton window" would I imagine be more functional then today's (JVM? maybe that's the qnalog?) reality.
- zellyn 2mo agoWhen I learned (Common) Lisp at Georgia Tech in the summer of 1995, we were encouraged to make as many functions as possible purely functional, and if mutation was needed, to try to hide it within the bounds of a function. So while Lisp may not be purely functional, the culture hewed that way.
- rprospero 2mo agoThat's interesting, because I had the opposite experience. I started getting into Lisp around 2004, but bounced off of the community because the culture I was experiencing hewed heavily toward imperative code and global variables in the name of efficiency. I specifically remember the breaking point being third-party library where none of the functions had any parameters. Instead, everything was controlled by using dynamic binding to adjust the variables within the functions. Various forum members kept praising its beauty and elegance, but I found it needlessly confusing. I have a soft spot for the Lisp family of languages. I've been using Emacs for almost thirty years and have used both Scheme and Clojure in production. However, my experiences back in 2006 have left me with a permanent bias against Common Lisp.
- dismalaf 2mo agoCommon Lisp is pretty much the opposite of what people think of as functional nowadays. You're constantly changing the image and everything is mutable.
- tyromaniac 2mo agoI would presume there was a lot of mixing of imperative/functional in the 80s where this alt universe starts. I think the same type of world in which lisp machines would have become king would also be similar
- pfdietz 2mo agoImage saving isn't something that's done very often, in practice.
- Scarblac 2mo agoWhat is done in practice, for daily development use? Building the image in memory from source files at startup?
- johnlorentzson 2mo agoTypically, for development, one will start a clean image in the morning and load it up with a combination of newly compiled code and automatically cached previously compiled code. This is mostly invisible to the user unless something goes wrong with the cache and it has to be cleared. The unaware user could think they're recompiling everything every time.
- pfdietz 2mo agoYes, that's quite fast. The files are kept in a version control system so you update from that first as well. The use cases for images would be: delivery of applications to users, or (internally) delivery of some fixed set of underlying code that is used as a substrate for development but that wouldn't normally be changed by developers. Normally, the developer has an image running all day, and does development and testing in it, but (unless needed for additional testing) doesn't save that image as a new binary that others can run.