from Hacker News

The Bel Language (2019)

by montyanderson on 5/19/24, 2:14 PM with 71 comments

  • by dang on 5/19/24, 6:56 PM

    Related:

    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

    Well, it's a noble goal, but fails rather spectacularly right off the bat.

    > 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

    Bel is an interesting language. I really like the first-class macros, but wrb and rdb are kinda silly. As abstractions that get optimised into something more sensible I suppose they're fine, but yeah, modern filesystems don't really do single-bit reads and writes.
  • by mepian on 5/19/24, 7:19 PM

    Was it ever explained why pg abandoned Arc so quickly?
  • by davnicwil on 5/19/24, 6:56 PM

    For those unware, worth noting here that Bel was designed by Paul Graham.
  • by 1f60c on 5/19/24, 5:25 PM

    If you're wondering what’s up with the strange URL, apparently it is official. paulgraham.com links to it here: https://www.paulgraham.com/bel.html
  • by lispm on 5/20/24, 7:03 AM

    There are a bunch of confusions to the relationship of LISP, the LISP system and the LISP paper of 1960.

    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

    Some useful context that is not apparent from the linked page:

    https://www.paulgraham.com/bel.html

  • by James_K on 5/20/24, 1:55 AM

    What a self-important idea, and executed so poorly. It is no surprise to do further research and see the name of Paul Graham attached.

    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

    Bel, not Bell.
  • by kazinator on 5/19/24, 6:24 PM

    It's Bel not Bell; fix headline.