7 ms·
The Bel Language (2019)
- ModernMech 2y agoBel, not Bell.
- deleted 2y ago[deleted]
- 1f60c 2y agoIf 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 https://www.paulgraham.com/bel.html
- akkartik 2y agoThis is important enough that I think https://www.paulgraham.com/bel.html https://www.paulgraham.com/bel.html (1) should be the main link we're discussing. For one, https://sep.turbifycdn.com/ty/cdn/paulgraham/bellanguage.txt https://sep.turbifycdn.com/ty/cdn/paulgraham/bellanguage.txt (2) refers extensively to the Bel sources which are at https://sep.turbifycdn.com/ty/cdn/paulgraham/bel.bel?t=1688221954 https://sep.turbifycdn.com/ty/cdn/paulgraham/bel.bel?t=16882... (3). But you won't get 3 from 2.
- cpach 2y agoI think the original URL was https://sep.yimg.com/ty/cdn/paulgraham/bellanguage.txt https://sep.yimg.com/ty/cdn/paulgraham/bellanguage.txt [0] However, Yahoo Stores (which is the, er… CMS that 'pg uses) was aquired in 2022[1], and it seems that the new owner migrated some assets to a new domain. [0] See https://web.archive.org/web/20191012073002/https://www.paulgraham.com/bel.html https://web.archive.org/web/20191012073002/https://www.paulg... [1] https://help.turbify.com/s/article/faq-merchant-solutions-updates https://help.turbify.com/s/article/faq-merchant-solutions-up...
- tmtvl 2y agoBel 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.
- sctb 2y agoI wouldn't diss those functions on the basis of modern filesystems. I would diss them because you could write a shorter bel.bel with rdc/wrc instead and, IMHO, without making the language less self-specified (since 'chars contains opaque character values from the host system).
- lisper 2y agoWell, 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.
- smj-edison 2y ago> I want to be clear about what Bel is and isn't. Although it has a lot more features than McCarthy's 1960 Lisp, it's still only the product of the formal phase. This is not a language you can use to program computers, just as the Lisp in the 1960 paper wasn't. Mainly because, like McCarthy's Lisp, it is not at all concerned with efficiency. When I define append in Bel, I'm saying what append means, not trying to provide an efficient implementation of it. That doesn't seem to be their goal.
- lisper 2y agoOK, that's a fair point. But punning lists as functions is a still mistake for other reasons. For example, it makes it impossible to tell the difference between a list that is actually intended to be a function, and one that just happens to end up looking like a function by happenstance. It's fine to represent functions as lists, but having functions actually be lists rather than a first-class primitive is a huge mistake. If you're going to do that, you might as well just start with McCarthy's original primitives, or heck, even just the untyped lambda calculus. What is the point of adding characters and streams?
- kazinator 2y agoIt's Bel not Bell; fix headline.
- tlb 2y agoFixed, thanks.
- dang 2y agoRelated: Show HN: Bel - https://news.ycombinator.com/item?id=21231208 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 https://news.ycombinator.com/item?id=29812347 - Jan 2022 (13 comments)
- davnicwil 2y agoFor those unware, worth noting here that Bel was designed by Paul Graham.
- deleted 2y ago[deleted]
- mepian 2y agoWas it ever explained why pg abandoned Arc so quickly?
- lisper 2y agoSome useful context that is not apparent from the linked page: https://www.paulgraham.com/bel.html https://www.paulgraham.com/bel.html
- James_K 2y agoWhat 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.
- lispm 2y agoThere 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 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_family#LISP_I_and_LISP_1.5_for_IBM_704,_709,_7090_ 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_Manual_Mar60.pdf 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.