Shouldn't that say bits? As 8 bytes would be the whole thing ayways.
An Exploration of SBCL Internals (2020)
181–190 of 194 posts
Re: An Exploration of SBCL Internals (2020)
#182Earlier quoted context omitted.
In my opinion it’s indeed like Greenspun’s 10th rule; it’s a vague imitation. If people weren’t so squeamish about parans the world would be a nicer place. The tech is there for a long time already.
I love lisp. I love the stability, the macros, the crash handlers, the repls, the elitism, slime, emacs, the works. But IMO sexpr is straight out terrible and hacking around that is a chore.
Re: An Exploration of SBCL Internals (2020)
#183Earlier quoted context omitted.
It was until someone resurrected the evaluator it inherited from CMUCL
CMUCL's interpreter evaluated IR1 (the first intermediate representation of its compiler) IIRC, so it wasn't possible to have a truly compilerless CMUCL _and_ a functional EVAL. I believe this IR1 interpreter was dropped from SBCL very early on. When SBCL gained an interpreter again it was a simple metacircular evaluator a la SICP that was unrelated to anything inherited from CMUCL. (This is all as of 15 or so years…
Re: An Exploration of SBCL Internals (2020)
#184My issue prevent me from investing in Lisp is that Erlang gives me a similar REPL which I believe, though I am not a Lisp developer, is a huge value proposition of Lisp. I utilize REPL-based development using Erlang. The macro narrative is worse in Erlang; but Lisp isn't perfect either in other ways. The point is, I net out staying on the BEAM. What I like about Lisp is that I think it's a tool that will serve you fo…
Last time I played with Elixir (I'll assume it's similar enough to Erlang), I found the REPL / interactive experience not as rich as CL's (which I must say, reassured my beliefs), even though the command-line tools are great: - can't install libraries from the REPL while working on your program - can't "compile this function" with a keystroke (I did find "send region/line/buffer to REPL" which is different, or "reloa…
You can get relatively close by putting your application into processes and keep them in a collection or registry, then when you've found an issue and changed the code in your editor you can run recompile and relaunch affected processes. You'd lose a subtree in the application, and hence in-memory storage tightly coupled to those processes, but I find it rather easy to do it this way. Often you'll put in-memory data in separate caching processes and that reduces friction in restarting processes with application logic even more.
The 'let it crash'-foundation of the BEAM system isn't exactly tailored towards trapping and recovering from errors but if you really want to you could probably implement something like that with try/rescue but I suspect it would turn out quite obtuse compared to the CL mechanics.
Re: An Exploration of SBCL Internals (2020)
#185Earlier quoted context omitted.
I’ve tried multiple times to get into SBCL, but every time I run into the problem that I have to learn Emacs first. I know there are lots of other ways to work with SBCL, but they are either second-class citizens or paid.
I normally dabble with CLISP (notably because of its built in readline), and if I could SOMEHOW get it to build with SSL, I'd play with it more. This is what I stick at the top of my Lisp files when dabbling. (defun l () (load "file.lisp")) (defun e () (ext:shell "vi file.lisp")) And then I just muddle my way through with a (e) and (l) cycle. Since I tend to not work on 10,000 line files -- this works fine (my files…
(require 'uiop)
(defun c ()
(uiop:run-program '("emacs" "-nw" "file.lisp")
:output :interactive
:input :interactive))
EDIT: note that SBCL comes with UIOP included by default, but if you want to use SBCL's implementation-specific facility, it's only slightly different: (defun c ()
(sb-ext:run-program "/usr/bin/emacs"
'("-nw" "file.lisp")
:input t
:output t))Re: An Exploration of SBCL Internals (2020)
#186Earlier quoted context omitted.
This is a bit Haskell oriented, but the "Implementation of Functional Programming Languages" by SPJ is one of my all time favorite books. https://simon.peytonjones.org/slpj-book-1987/ These compilers were pulling heroic data structure optimization stunts in 1985, that no modern production compiler for major compiled languages can replicate in 2024.
Huh – I didn't know he'd left MSR for Epic Games.
https://dev.epicgames.com/documentation/en-us/uefn/verse-lan...
Re: An Exploration of SBCL Internals (2020)
#187Earlier quoted context omitted.
In my opinion it’s indeed like Greenspun’s 10th rule; it’s a vague imitation. If people weren’t so squeamish about parans the world would be a nicer place. The tech is there for a long time already.
I love lisp. I love the stability, the macros, the crash handlers, the repls, the elitism, slime, emacs, the works. But IMO sexpr is straight out terrible and hacking around that is a chore.
Re: An Exploration of SBCL Internals (2020)
#188Earlier quoted context omitted.
Huh – I didn't know he'd left MSR for Epic Games.
He did. He’s working on a new language called Verse now: https://dev.epicgames.com/documentation/en-us/uefn/verse-lan...
The language seems sort of complicated for the domain (gameplay scripting).
Re: An Exploration of SBCL Internals (2020)
#189Earlier quoted context omitted.
I love lisp. I love the stability, the macros, the crash handlers, the repls, the elitism, slime, emacs, the works. But IMO sexpr is straight out terrible and hacking around that is a chore.
I suspect most of the power that you already _love_ flows from the sexp based homoiconic syntax :-)
Re: An Exploration of SBCL Internals (2020)
#190Earlier quoted context omitted.
It's because of his continual praise of lisp that I wanted to check it out. What I'm complaining about is that it's much harder to "check it out" than it perhaps could be. At one point many years ago, I wanted to check out this new Python thing. It was so easy, I've been hooked ever since.
> At one point many years ago, I wanted to check out this new Python thing. It was so easy, I've been hooked ever since. IDLE is a underrated feature of Python. The default install includes a barebones IDE together with the REPL, making setup for beginners nearly zero effort. On the other hand, in lisp land, step 0 to learn most lisps is to learn emacs beforehand.
Also, knowning CL makes learning Elisp a breeze, so you can customize your editor like nothing else.