←back to thread

136 points todsacerdoti | 5 comments | | HN request time: 0.847s | source
Show context
bevr1337 ◴[] No.44380860[source]
Why was LISP not one of the first languages able to compile to WASM? I've been curious ever since the awesome WASM project started tracking different projects. They use emojis for progress and LISP has been a hatching egg.
replies(2): >>44381096 #>>44381862 #
1. dmkolobov ◴[] No.44381862[source]
If I had to guess:

1. lack of native GC, you had to roll your own by providing a runtime.

2. lack of tail-call elimination in V1 of the spec. This essentially forces you to trampoline everything.

replies(1): >>44382157 #
2. stassats ◴[] No.44382157[source]
> lack of tail-call elimination

But lisp doesn't need TCO.

replies(2): >>44383319 #>>44384522 #
3. bevr1337 ◴[] No.44383319[source]
Whoa, what a surprising fact! I had not considered TCO in LISP was "nice to have." That's a good example where it's easy to hack but hard to make production ready.
4. dreamcompiler ◴[] No.44384522[source]
Common Lisp doesn't technically require TCO but Scheme does.

IMHO a Common Lisp without TCO is not a serious tool because I cannot write tail-recursive code with it.

replies(1): >>44387509 #
5. wavemode ◴[] No.44387509{3}[source]
Typical programming style in Common Lisp is procedural, not functional.

The CL spec doesn't guarantee tail-call elimination, and most CL implementations don't guarantee it either (it could be on or off depending on the current optimization level). So most people don't bother relying on it.