16 ms·
> Is it because nil != false? Even McCarthy admitted that that was a random decision, and possibly a mistake. I think that code written where NIL is the sole f
by zeveb 10y ago
> Is it because nil != false? Even McCarthy admitted that that was a random decision, and possibly a mistake.
I think that code written where NIL is the sole false value tends to read better than code with a distinguished false value, but I'm open to the idea that uglier code is more reliable.
> That's a common misconception, but it's not true: all but the most minimal implementations provide an imperative macro system.
But they're not standardised. The manner in which they affect the runtime environment is not standardised. It's just not a sound basis for a portable project: in practise any large software project will run not on Scheme but on Guile Scheme, or Chicken Scheme.
> Is it because it's lisp-1? Many lisps have been.
Only mistakenly. I used to think that Lisp-1 is better: after all, I'm used to other languages like C or JavaScript where functions and variables share the same namespace.
I've come to realise that 'because C & JavaScript do it' is hardly sufficient for something to be good grin
It turns out that the multiple namespaces of Lisp are extremely useful for industrial-strength software.
> Many people were on both standardization communities then
Sure, there's lots of cross-pollination between Lisp & Scheme, because they are both good languages. I don't dislike Scheme: in its place, it's a very interesting way to learn certain concepts. It's Lisp-like, which means it's certainly not all bad.
But it's not an actual descendant of a Lisp: it's its own independent language. It has flaws (continuations which make UNWIND-PROTECT impossible; nil ≠ #f; Lisp-1; worst of all: it's under-specified), but it's not bad. The world would probably be a worse place if there were no Scheme in it.
But I think that emacs would be worse if it were implemented in Scheme rather than Lisp.
- qwertyuiop924 10y ago>I think that code written where NIL is the sole false value tends to read better than code with a distinguished false value, but I'm open to the idea that uglier code is more reliable. It's less reliable, and less clean. If you can't see the problem with overloading false, look at C, another language which overloads false and suffers for it. >Only mistakenly. I used to think that Lisp-1 is better: after all, I'm used to other languages like C or JavaScript where functions and variables share the same namespace. I have yet to see a disadvantage to being a lisp-1, and it comes with many advantages: we don't have to function and funcall everything, which makes our code a good deal cleaner. >But it's not an actual descendant of a Lisp That is definitely wrong. It is emphatically a descendant of Lisp. In fact, the very first paper on Scheme, AI Lab Memo 349, described it as "a full funarg lisp." We can argue about whether Scheme is a lisp, but its descendance is well-documented: if you can't trust the language's creator on its origins, than who can you trust? >it's under-specified This is true. However, R7RS is working on fixing this. And as I understand it, it's even including a standardized procedural macro mechanism, so there you go.