logoalt Hacker News

xvilkatoday at 5:59 AM1 replyview on HN

Common Lisp standard (and its implementations) really needs an uplift to shine. There are so many shortcomings and missing features in it that listing them here would take a lot of space. Instead, I will point to some proposals like Common Lisp 3[1] and Compact Lisp[2]. Meanwhile proper typing should be introduced out of the box, like in Coalton[3], for example. Also, pattern matching should be the part of the language, not some external library [4]. Even something basic but foundational is not yet standardized - Unicode support!

[1] https://github.com/blakemcbride/common-lisp-3

[2] https://github.com/lassik/compact-lisp

[3] https://coalton-lang.github.io/

[4] https://lispcookbook.github.io/cl-cookbook/pattern_matching....


Replies

kscarlettoday at 6:46 AM

I don't find any good idea in [1].

> 1. The function and variable namespaces have been collapsed into a single namespace.

Lisp-N, package system and homoiconic macro is a local optimum (IMO practically much better than Scheme, but I digress) for variable capture issue in metaprogramming. Now it's saying let's bring back the footguns and also you have to write lst instead of list. Please, no.

> 2. ...adds a layer on top of CLOS

How about a library? Why a new standard?

> 3. Common Lisp 3 supports case-sensitive symbols.

This I can relate.

> 4. Common Lisp 3 supports native threads. > 5. Common Lisp 3 supports tail recursion elimination.

Practically not a problem for today's CL. There's nothing to fix.

> Meanwhile proper typing should be introduced out of the box, like in Coalton[3], for example.

Are you saying Coalton as an embedded language should be introduced out of the box? I'm afraid it may quickly earn similar reputation as LOOP and FORMAT. Or are you saying the whole language should adopt Coalton-like typed semantics? Then I don't think it's even possible for large part of the language, especially when you take interactivity into account. What happens when a function gets redefined with different type? Worse, how about CHANGE-CLASS and UPDATE-INSTANCE-FOR-REDEFINED-CLASS?

> Also, pattern matching should be the part of the language, not some external library [4].

Why not? Common Lisp as a living and extensible language now evolves by adopting de-facto standard (trivia for pattern matching, bt for native threads, usocket for network, ASDF for build system, etc). Why need a committee or other form of authority to prescribe what everyone gets to use when we have a maximally democratic process?

show 1 reply