3 ms·
There are a handful of Scheme implementations in the browser. Also ClojureScript. The problem with ANSI Common Lisp is it's gigantic. It is almost as big as C++
by zelly 7y ago
There are a handful of Scheme implementations in the browser. Also ClojureScript. The problem with ANSI Common Lisp is it's gigantic. It is almost as big as C++ and not at all trivial to implement. It doesn't help that most Lispers are either dead or only use the web via w3m in Emacs.
- thrax 7y agoI never quite understand this though.. because everything that I've seen about scheme/lisps is that it's a simple modular syntax, self hosting, etc. is it the runtime that is gigantic? Or its std lib?
- zelly 7y agoI'm not sure either honestly. I've used Lisp a lot but never looked at the internals. I can see why it would be hard to implement. It has an object model unlike any other language (CLOS). It's memory model is equally baroque. A lot of the complexity comes from needing to be both interpreted and compiled at the same time, at all times, which is still unique today. A lot of completely arbitrary things like the infamous LOOP macro are in the standard library.
- lispm 7y ago> It has an object model unlike any other language (CLOS). object models differ widely. Compare Smalltalk, Java and C++. CLOS had influence on a bunch not so mainstream languages: Perl5 (Moose), Perl6, Julia, R, Scheme (TinyCLOS and similar) ... and a bunch of extensions to C, Java and other languages. There are some difficulties to make CLOS fast on top of, say, the JVM. One can't map the full CLOS directly on top of Java objects, since they lack some features like multiple inheritance, direct class updates, etc. So there is a layer of mapping necessary - which is possible -> ABCL. But it's not as fast as a direct implementation. > A lot of the complexity comes from needing to be both interpreted and compiled at the same time Not sure what you mean by 'interpreted', but there is no requirement to support both. SBCL for example and no Lisp interpreter for many years. It now has one, but it's not used much. Clozure CL also has no interpreter. Btw., EVAL is no interface to an interpreter. SBCL would compile the code at runtime. > A lot of completely arbitrary things like the infamous LOOP macro are in the standard library. It's not arbitrary. It's a standardized iteration facility. LOOP actually does not make implementations difficult, since there are ready-made LOOP implementations which can be just loaded into Common Lisp.