by montyanderson on 5/19/24, 2:14 PM with 71 comments
by dang on 5/19/24, 6:56 PM
Show HN: Bel - https://news.ycombinator.com/item?id=21231208 - Oct 2019 (456 comments)
maybe also:
Show HN: Bel in Clojure - https://news.ycombinator.com/item?id=29812347 - Jan 2022 (13 comments)
by lisper on 5/19/24, 6:06 PM
> Bel has four fundamental data types: symbols, pairs, characters, and streams.
The inclusion of streams is already enough to make me go WTF, and the absence of numbers, vectors, and functions as primitives is a big yellow flag. Punning lists as functions is huge blunder because it makes it nearly impossible to compile the language.
by tmtvl on 5/19/24, 5:46 PM
by mepian on 5/19/24, 7:19 PM
by davnicwil on 5/19/24, 6:56 PM
by 1f60c on 5/19/24, 5:25 PM
by lispm on 5/20/24, 7:03 AM
The "original paper on Lisp" is from 1960: http://www-formal.stanford.edu/jmc/recursive.html
A bunch of papers about the design and development of LISP and the LISP system had been published earlier. Those show the various stages of the project to define and implement the new language. See for example: https://www.softwarepreservation.org/projects/LISP/lisp15_fa...
By that time of publishing the paper on LISP, an actual "LISP system", the practical implementation of LISP existed. To quote from above's paper: "A programming system called LISP (for LISt Processor) has been developed for the IBM 704 computer by the Artificial Intelligence group at M.I.T.". "has been" and not "will be".
The manual of this first LISP system, called Lisp I, is here in a version of March 1960: http://bitsavers.org/pdf/mit/rle_lisp/LISP_I_Programmers_Man...
The "LISP Programming System" is described in Chapter 4. It had functions, numbers (floats) and a machine code compiler. Chapter 5 describes input from punched cards, function tracing and a interface to an online printer/keyboard. Chapter 6.3 describes the garbage collector. Chapter 9 describes the available (ninety) functions, including eval, map, maplist, print, read, compile, matrixmultiply and a bunch of others.
So it is fair to say that the development of a theoretical foundation and the LISP system itself was not just "somewhat interleaved", but were basically completely interleaved, both together were done incrementally.
The process was not to 'first define theoretical foundations, then a language definition and then an implementation'. It was always all three combined, with a real practical LISP system on a real computer, developed incrementally at that time.
by lisper on 5/19/24, 9:35 PM
by James_K on 5/20/24, 1:55 AM
It proposes a purely theoretical approach, yet is mired in practicality. There are character literals, why? And streams? Having stdin and stdout? Keeping the dotted syntax for lists is also curious. I imagine a purely theoretical lisp would define lists as the intrinsic data-type without care for their representation. The names are also atrocious. Many scavenged from lisp (with slightly altered definitions make them seem different) and a lot of the rest symptomatic of the allergy to vowels that some programmers develop (if I ever name a function "bqexpair1", I want someone to give me a good telling off). It makes no sense why there is so much of it also. If we were talking purely formalisms, why not just describe the formal portion of the language and leave the rest as an exercise to the reader? The only reason is to make the language easier to code in which seems entirely informal.
The end result seems to just be "lisp again". I couldn't have possibly determined that some process was followed to create this language if it wasn't spelled out int the preamble.
by ModernMech on 5/19/24, 5:06 PM
by kazinator on 5/19/24, 6:24 PM