4 ms·
It is hard to read though. As a beginner or someone unfamiliar with a new codebase you never know whether you are recursing into a special form or not. If you a
by 7373737373 2y ago
It is hard to read though. As a beginner or someone unfamiliar with a new codebase you never know whether you are recursing into a special form or not. If you are, the semantics and order in which you ought to read and understand and further recurse into the argument list changes completely.
How other programming languages limit the depth of this recursion and the variation/complexity of a code block, by splitting the semantics into a limited set of reusable syntactic constructs is very powerful. It is sad that most aren't homoiconic though.
- iLemming 2y ago> It is hard to read though. What isn't? Java or C# with deep hierarchies of nested classes and tons of boilerplate, extensive use of interfaces or overuse of exception checking? Python with its magic methods and decorators and misindentation? Javascript with the callback hell, inconsistent type coersion and sometimes tricky async code? Ruby with its weird metaprogramming and monkey patching? C with the pointers mental acrobatics and pre-processor macros? Perl with weird default vars like $_ and tons of regexps? Haskell with its monadic structures and heavy use of weird symbols and operators? PHP with the crapload of its historical baggage, global vars and inconsistent, non-standardized function naming? Any programming language can be considered hard to read, quirky, slow, inconsistent, or lacking some feature. Everyone knows there are only three God-given, bullet-proof, guaranteed ways to write robust, fast, consistent, bug-free and scalable software. Three... Humankind has yet to discover those.