4 ms·
"And lisp modules? Well, every part of the code can modify every other part. You can write a whole new grammar if you're so inclined. None of this helps with th
by praptak 16y ago
"And lisp modules? Well, every part of the code can modify every other part. You can write a whole new grammar if you're so inclined. None of this helps with the goal of downloading a random package and easily calling whatever you want from it with minimal hassle."
This is bullshit. Python can also modify it's own code at runtime and yet it's one of the most package-complete languages. But it has a single defining implementation, so if you write your package, then every Python user will be able to use it.
Have a look at Clojure and the rate it's gaining new libraries. Lisp features don't seem to hinder that. A single implementation (and what follows - non-fragmented community) helps it greatly.
- merijnv 16y agoLisp can modify its own syntax at runtime, Python most definitely cannot.
- fxj 16y agobecause lisp does not have any syntax
- arethuza 16y agoOf course it does - it has a very simple syntax built around S-expressions and even that is extensible through reader macros.
- digitailor 16y agoWhy is this downvoted? This is a fair thing to say. Lisp is basically an exposed Abstract Syntax Tree. Most languages get compiled down to something resembling a lisp before machine code. You could fairly refer to this as "syntaxless". It is just expressions in a tree format, not arbitrarily designed syntax for logic that must be stripped of its grammar for the machine to parse.
- gnosis 16y agoIt's downvoted because it's false. Try omitting parenthesis around your Lisp expression. Or try forgetting to balance your parenthesis. Common Lisp has #: and : and :: and ` vs ' and #+ and #. and a whole slew of others.
- fxj 16y agoyou can write macros that handle that. in lisp everything can be code (or data). that is its greatest strength and its greatest weakness at the same time.
- digitailor 16y agoYes, obviously. There is no language that does not have a grammar. It's a requirement of all languages. The point is, lisps have sometimes been referred to as "syntaxless" historically, for the reason that the grammar is that of the AST, not an arbitrarily designed grammar. Ie. machine's grammar vs language designer's grammar. You are right in saying it is not entirely correct to refer to them as syntaxless from a purely technical, linguistic point of view. But by throwing out his point as "technically incorrect", you are missing an important point about lisps. Also, mentioning tokens that are used in Common Lisp doesn't quite compare to the verbose, heavily syntactical grammar of say, C++. Let me know the next time your lisp implementation throws you something called a "syntax error". You can't even get code to compile when you miss a parenthesis, which takes about three seconds to locate, tops.
- deleted 16y ago[deleted]
- apl 16y agoI suspect you're misunderstanding the logic of his point. He's saying that fancy feature X (runtime-modifiable everything) doesn't help with necessary feature Y (simple package management), and not that X prevents Y. Clojure and certain Scheme implementations prove that X and Y are compatible, but most CLs have atrocious package management when compared with Python, Ruby or even Java. Lisp's extreme flexibility doesn't remedy that at all.
- jcromartie 16y ago> Lisp's extreme flexibility doesn't remedy that at all. Why would it? I'm not sure I understand the argument. And also, just for an example: In my experience, Clojure's package management beats Rubygems for purposes of a project. You specify your dependencies and their versions (including the Clojure language itself) and a script updates them from the whatever repos you specify. It's taken the Ruby ecosystem some time to come up with RVM and Bundler which accomplish the same things. These kinds of things (package management) are available for Lisp languages today. Of course CL only recently got http://www.quicklisp.org/ http://www.quicklisp.org/ which seems to make some strides in this area.
- deleted 16y ago[deleted]
- jcromartie 16y agoIt sounds like he's criticizing Lisp for being prone to monkey patching, which would be a very poor understanding of metaprogramming in Lisp. From what I've seen Lisp ends up being perfectly clear about what is being called in what context. Clojure is especially clear with its namespace feature.
- vixen99 16y ago"it's own code " is always and only an abbreviation for "it is own code" which was not intended.