5 ms·
Try defining data in C. Try extracting data from that data you've defined in C. If you can understand the appeal of having JSON in JavaScript, you can understa
by evdubs 1y ago
Try defining data in C. Try extracting data from that data you've defined in C.
If you can understand the appeal of having JSON in JavaScript, you can understand some of the appeal of Lisp.
- Vegenoid 1y agoI’m having trouble understanding what you mean, if you could provide or link to an example I’d appreciate it.
- evdubs 1y agoSure. Here's a comment with more of an explanation: https://news.ycombinator.com/item?id=36158974 https://news.ycombinator.com/item?id=36158974
- GoblinSlayer 1y agoHow does it know "1970-01-01" is a date?
- evdubs 1y agoIt wouldn't. The consumer would need to know to expect a date as a string and parse it.
- Vegenoid 1y agoI feel like I must be missing something, because I don’t understand why representing data in an s-expression is better than representing it as nested arrays (lists of lists) and hashtables/dictionaries. I also don’t see why representing data in a language’s data structure is inherently better than representing it in a language-agnostic format like JSON, and having libraries to parse and convert data from that format into a language data structure, or a library that defines a JSON type, or storing the JSON in a string and using a library that operates on strings that contains valid JSON. I’ve worked with data in this way (JSON on disk, converted to nested arrays/tables in code) and haven’t felt it to be painful. I can see how one might have a taste preference for it, but I’m struggling to understand what the tangible benefits are.
- evdubs 1y ago> I don’t understand why representing data in an s-expression is better than representing it as nested arrays (lists of lists) and hashtables/dictionaries. An s-expression is a list. An s-expression like (list (list 1 2) (list 3 4) (list 5 6)) is a list of lists. An s-expression like (hash "a" 1 "b" 2) is as hash table/dictionary. > I also don’t see why representing data in a language’s data structure is inherently better than representing it in a language-agnostic format like JSON You don't see why having a language data structure like Date is better than having a date-string stored in a JSON value that you need to provide parsing and other functions for? If you have a language data structure like Date, you can add days to a date, extract the month, convert it to a DateTime, etc. If you just have a JSON value, you either need to provide those functions or convert your JSON value to the Date language data structure. It seems like you see the value in using the language's data structure because you then say: > having libraries to parse and convert data from that format into a language data structure Also, JSON is just as "language agnostic" as s-expressions. JSON happens to be a first class component of JavaScript, as s-expressions are a first class component of Lisp; if libraries exist to help you deal with JSON in other languages, so, too, can libraries exist to help you deal with s-expressions. > I’m struggling to understand what the tangible benefits are. I think you understand the tangible benefits of JSON? It is a human readable/writable data serialization format. It is integrated in JavaScript in such a way that you can easily serialize, parse, and extract data from it without reaching for a library. S-expressions within Lisp do that, but they don't limit you to strings, floats, arrays, and unsorted maps. You don't need to write conversion functions or use them from a library because reading and writing s-expressions are core parts of Lisp.
- Vegenoid 1y agoI appreciate your time and explanation. I'm really trying to understand the POV here, and I feel like we're veering away from my original confusion, which was around "Try defining data in C. Try extracting data from that data you've defined in C". I'm assuming your statement would be meant to apply to other common languages without s-expressions, but maybe I've misunderstood. I don't get why Lisp's s-expressions are much better than using arrays/tables in another language, such that they are a justification for using the language. Are they only significantly superior over a language with only arrays, like C? What's something that is made significantly easier by an s-expression than by arrays/tables? To make s-expressions language-agnostic, wouldn't you need libraries in the languages to convert between the s-expression as it exists in some specification, and the language's native data structures? This doesn't sound all that different from JSON at this point, or a much more complex specification that defines the representation of all kinds of types, like dates.
- f1shy 1y agoIf you parse things with structure, and the structure is unknown in advance. In C(++) you have to generate all dynamically, and is very complex. In other systems, you can just read the object, and the structure comes with it.
- GoblinSlayer 1y agoJavascript does that without lisp syntax. Not sure how helpful it is though, unknown structure is equivalent to no structure, an attempt to communicate without a protocol.