Correct me if I'm wrong but it seems you roughly get "lisp-ness" by taking any textual data format and defining a programming language syntax in terms of that data format. I could make a JSON-based language that looks like:
[
// define some_fun(x) => let y=2;let z=y*3;return x+z
{"some_fun": [["x"], [
{"y": 2,
"z": ["*", "y", 3]},
["+", "x", "z"]
]},
// call it
["some_fun", 100]
]
Here I'm using JSON dictionaries to bind variables, and lists for everything else (instruction sequences, argument lists, etc.). Now I can quote stuff to define JSON data, or otherwise define programs.
I'm not a lisper but it seems what's special about lisp is it defines its programs in a generic data format.
I'm not a lisper but it seems what's special about lisp is it defines its programs in a generic data format.