4 ms·
can you elaborate on s-expressions?
by cocktailpeanuts 10y ago
can you elaborate on s-expressions?
- emeraldd 10y agoAbout four paragraphs in https://en.wikipedia.org/wiki/Lisp_(programming_language) https://en.wikipedia.org/wiki/Lisp_(programming_language) "The interchangeability of code and data gives Lisp its instantly recognizable syntax. All program code is written as s-expressions, or parenthesized lists. A function call or syntactic form is written as a list with the function or operator's name first, and the arguments following; for instance, a function f that takes three arguments would be called as (f arg1 arg2 arg3)."
- cocktailpeanuts 10y agoOh yeah, I understand that part. I was just wondering what OP meant in his sentence.
- bpicolo 10y agoMeaning it's going far out of it's way to half-write a programming language in json rather than actually just using a lisp.
- cocktailpeanuts 10y agoBut why would you use lisp? I don't get it. No API returns data in a list format.
- bpicolo 10y agoLisps aren't limited to lists as data types, you can have anything you want. Lisp interpreters tend to be dead simple to implement.
- aaron-santos 10y agoEDN (s-expressions + Clojure's reader)[1] got a lot of attention when it was announced. It looks like it's garnered some use [2]. I was hoping to find a registered mime type "application/s-expr", but there are some uses out in the wild[3]. 1 - https://news.ycombinator.com/item?id=4487462 https://news.ycombinator.com/item?id=4487462 2 - https://github.com/search?utf8=%E2%9C%93&q=%22application%2Fedn%22&type=Code&ref=searchresults https://github.com/search?utf8=%E2%9C%93&q=%22application%2F... 3 - https://github.com/search?utf8=%E2%9C%93&q=%22application%2Fs-expr%22&type=Code&ref=searchresults https://github.com/search?utf8=%E2%9C%93&q=%22application%2F...
- aaron-santos 10y agoSure. S-expressions[1] are a notation for nested data structures. They can be used to spell out data as well as code. In fact both code and data look the same when expressed using s-expressions.[2] When the article's author describes both code and data using JSON, it sounds a little strange to me. While JSON is capable to describing nested data structures, JSON's syntax is much more verbose than s-expressions. I feel that since s-expressions have been around for about 60 years that the author should be familiar with them and address why a JSON encoding is superior to s-expressions for this use case. 1 - https://en.wikipedia.org/wiki/S-expression https://en.wikipedia.org/wiki/S-expression 2 - http://wiki.c2.com/?DataAndCodeAreTheSameThing http://wiki.c2.com/?DataAndCodeAreTheSameThing
- bijection 10y agoAlthough I'm also skeptical of coding in JSON, s-expressions are pretty close to a JSON subset (with the caveat that everything needs to be quoted). (x . (y . (z . NIL))) <=> ['x', ['y' , ['z', null]]]
- junke 10y agoThe first one is the flat list (x y z); the JSON one seems to be equivalent to (x (y (z nil))).
- bijection 10y agoYou're right! My scheme is rusty I guess. I should have said: (x . (y . (z . NIL))) <=> ['x', 'y', 'z']
- kazinator 10y agoIn Lisp, (x x x) denotes a list which contains three elements which are pointers to the same symbol object.