Reproducible SBCL builds – a month ahead of schedule
christophe.rhodes.io
christophe.rhodes.io
It is inspiring to see people like Christophe Rhodes work on SBCL and make tremendous progress.
He is sufficiently honest to write how he missed an obvious typo (guess what, this happens with every language, no matter how hard you try to avoid them). Unfortunately, this is now the most discussed part of the article, which is sad.
(shades of times gone by). Eventually I realised that (unless (member (package-name package) '("COMMON- LISP" "KEYWORD" :test #'string=)) ...)
was not the same as (unless (member (package-name package) '("COMMON- LISP" "KEYWORD") :test #'string=) ...)
I know this is a bit nitpicking but this is the kind of mistake which will be always difficult to detect in lisp as long as the syntax is what it is... Which is a pity because I like the language so much.
Compare
(unless
(member
(package-name package)
'("COMMON-LISP" "KEYWORD")
:test #'string=) ...)
and (unless
(member
(package-name package)
'("COMMON-LISP" "KEYWORD" :test #'string=)) ...)
If `member` requires 3 arguments, then it's easy to spot the mistake in the latter.How can we help people to stand on the shoulders of giants ...
[1 2 3]
into (vector 1 2 3)
and now you have more conventional looking array literals.Many lisps either allow alternate paired delimiters in general or demand them for specific constructs (or both -- Racket and many Schemes do both, and all Schemes do at least the latter.)
https://www.schneier.com/blog/archives/2006/01/countering_tr...