4 ms·
> root linguistic structure The root linguistic structure of Lisp are lists of symbols: (move ship harbour) (move ship :location harbour) (collide
by lispm 8y ago
> root linguistic structure
The root linguistic structure of Lisp are lists of symbols:
(move ship harbour)
(move ship :location harbour)
(collide ship asteroid :with-speed 100)
(differentiate '(x * 2 + 3) 'x)
(loop from i below 100 when (evenp i) collect i)
> even bigger than nested lists
since lists have been used in Lisp for map-like data a lot, there is very litte advantage on a 'linguistic' level.
(loop for (name age) in '((fred 10) (jane 21) (alfred 9)) ...)
It makes not much different if the data map uses a different character. A Lisp user would probably layout the data so that it is easy recognizable as a map/table. A typical Lisp user is trained to read structure and not so much parentheses. It's a bit like bicycle riding - it looks difficult if you haven't learned it already.
((fred 10)
(jane 20)
(alfred 9))
What Lisp already makes usual to many is that it uses a data-structure - s-expressions - to encode programs in.
> but it's not native
Lisp-based maps were in Lisp since basically day one and were widely used. There was little demand for different maps for a long time. There is little added benefit from having 'maps' native. Lisp developers instead added flexible object systems, where the instances were map-like. There are really a zillion of them in all kinds of shades. Hash-tables were added to Lisp probably in the 70s not as a new notation, but as an efficient data structure for large amounts of key/value data - for example to implement the symbol table.
There is even an example in CLTL2 how they looked like in Connection Machine Lisp:
{moe->"Oh, a wise guy, eh?"
larry->"Hey, what's the idea?"
curly->"Nyuk, nyuk, nyuk!"}
https://www.cs.cmu.edu/Groups/AI/util/html/cltl/clm/node192.html#READTABLESECTION https://www.cs.cmu.edu/Groups/AI/util/html/cltl/clm/node192....
There are many other examples of these, but generally people were working towards objects as maps, with types and inheritance, etc.
Personally I don't think anonymous maps scale well for large interactive applications I'm interested in. I prefer to see at runtime, what type this map is about (is it price data, is it a product list, ...) - usually in form of an object-system, a frame system, or similar. If I don't need that and want to write literal data, I can just as well use a list (assoc list, ...). But then I've seen a lot of Lisp code and are used to it.
- tabtab 8y agoYou ignored my "stick" point; it still stands. Anyhow, I'd like clarification on "doesn't scale well". (Large apps should probably be partitioned into smaller apps that use a database or the like to share info/state.) And I think we have a different concept of "native". But anyhow, I don't want to continue a "language war": people like what they like.