HACKER Q&A
📣 azhenley

What happened to PG's Arc and Bel?


I've had an interest in PG's Arc and Bel languages (see [1, 2]) for a while. But the Arc forum [3] hasn't had a post in 107 days. On the other hand, Bel was only announced [4] less than a year ago.

Whatever came of Bel? Nothing has been released about it since. All I can find is one hobbyist implementation [5] based on the few details released.

[1] http://paulgraham.com/arc.html

[2] http://paulgraham.com/bel.html

[3] http://arclanguage.org/forum

[4] https://news.ycombinator.com/item?id=21231208

[5] https://github.com/jeremyschlatter/chime/


  👤 masak Accepted Answer ✓
There are a few more hobbyist implementations out there, at various stages of completion:

    - https://github.com/ajlopez/beljs
    - https://github.com/erdos/carillon
    - https://github.com/luksamuk/believe
I also have an implementation: https://github.com/masak/bel -- you can see the stage of completion in the SVG diagram in the README.

Due to how Bel is specified, all the mentioned implementations have "speed issues". I believe I can fix most of these, and the path forward is fairly clear (faster internal data representations, compiling to efficient bytecode). But I want to hold off announcing/releasing the project until most of the egregious performance problems are fixed. I'm biting my tongue so I don't make any promises/deadlines... but it's coming along. Help appreciated.

The good news is that it seems to be possible to make Bel run fast. I just need to put in the work to get there. Really looking forward to having a fast Bel at my fingertips.

Along the way, I've also discovered a few (minor) bugs in the Bel specification, as well as some things that are underspecified and don't really have answers. I'm also actively thinking about how to build a static type system around Bel's runtime typechecking, analogously to how TypeScript extends JavaScript with static types.


👤 PaulHoule
I think 'arc' and 'bel' are maybe 30 years too late.

By 1990 Common LISP had a lot of momentum but LISPers on the ground were about as excited in Common LISP as programmers were interested in programming in Ada. The "cool kids" back then were inventing their own LISP dialects such as Emacs LISP, Scheme, etc. LISP had lost the 1980s to Microsoft BASIC and it would have been easily to conclude that "bloat" was to blame, and with the 32-bit age just starting to open, Common LISP was well planned but lacking a constituency.

It's almost impossible for 1980's language to look bloated in 2020 and now the "cool kids" who want to use LISP for the use value gravitate to Common LISP and secondarily the Schemes, Clojures, etc.

In 2020 if you were interested in programming languages for their own sake I would point you towards FORTH (e.g. not at all bloated) or towards something post-LISP. Say a language with LISP's internal data structures but with a PEG parser deeply integrated with the runtime. (e.g. write a parser for a random query language in less than two hours, write code that manipulates the parse trees, get the 'unparser' for free)

Sometimes I think the faculty at MIT had a grudge against Noam Chomsky for inventing modern computer languages (transformational grammar is great for that, acceptable for 'stand up in front of a bunch of language-using animals and give a talk about how their language works that the animals might get something out of', and not useful at all for artificial understanding of natural language) and opposing the Vietnam War, DARPA, JASONs, thus most of the research funding at the CS department.


👤 sevensor
Last I heard, HN itself runs on Arc. From what I can see, Bel is more a kind of art project than a language for writing other things in. PG evidently has some ideas about what the most timeless, eternal version of Lisp would look like. Both languages are sketches of the Platonic Lisp he has in his head.