I thought everything would just be s-expressions, and be consistent, so it would be easy to read to figure out what is going on.
But it seems like there are so many special constructs and macros, that make it hard to read. And behind the scenes of these macros it gets really complicated. Whereas in other languages its readable the whole way down.
E.g. How am I suppose to read this? How does it de-construct to s-expressions...and does it even? What is implemented natively in the interpreter? Does that language have built-in keywords?
I thought everything was suppose to be like: `(left . (left . right) )`.
(loop for i in '(1 2 3)
when (> i 1)
return i)
It seems as if there are actually a ton more special case primitives I need to know, when I could get away with a lot less syntax in other languages to be productive.Like maybe there is some simplicity at the very bottom, but that doesn't seem to matter in day-to-day programming.
Another example, the first think I see when I look at the language basics of how to make a function:
https://lispcookbook.github.io/cl-cookbook/functions.html:
(defun <name> (list of arguments)
"docstring"
(function body))
How do I read this as an s-expression?