From: Eli Barzilay on 13 Mar 2010 18:18 "joswig(a)corporate-world.lisp.de" <joswig(a)lisp.de> writes: > On 13 Mrz., 23:27, Eli Barzilay <e...(a)barzilay.org> wrote: >> As other[s] said, PLT Scheme is far from being a small language -- >> it's overall much bigger than CL (and probably on the same scale of >> any "real" language, including actual CL implementations). But the >> organization of code *and* language into separate modules tend to >> make it easier to learn. > > Than what? Than a monolithic language like CL. > Common Lisp code is organized around separate packages and systems. Right, and the CL package system is much weaker than the PLT module system in terms of expressiveness. (That also applies to a number of Scheme module systems that are very weak, some being close to something like CL packages.) As a purely anecdotal example, I have not seen any practical example of a CL program that defines a new language for some purpose, whereas this is quite common in PLT, to the point of defining a new language that is used in a few files and nowhere else. But this subjective and getting close to drowning this thread in flames -- I'm sure you're very happy with CL packages. -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life!
From: joswig on 13 Mar 2010 18:49 On 14 Mrz., 00:18, Eli Barzilay <e...(a)barzilay.org> wrote: > "jos...(a)corporate-world.lisp.de" <jos...(a)lisp.de> writes: > > On 13 Mrz., 23:27, Eli Barzilay <e...(a)barzilay.org> wrote: > >> As other[s] said, PLT Scheme is far from being a small language -- > >> it's overall much bigger than CL (and probably on the same scale of > >> any "real" language, including actual CL implementations). But the > >> organization of code *and* language into separate modules tend to > >> make it easier to learn. > > > Than what? > > Than a monolithic language like CL. > > > Common Lisp code is organized around separate packages and systems. > > Right, and the CL package system is much weaker than the PLT module > system in terms of expressiveness. There are lots of things in CL that are 'weaker' than what some Scheme offers - but more practical. > (That also applies to a number of > Scheme module systems that are very weak, some being close to > something like CL packages.) As a purely anecdotal example, I have > not seen any practical example of a CL program that defines a new > language for some purpose, This is so wrong, it really hurts. > whereas this is quite common in PLT, to the > point of defining a new language that is used in a few files and That's already a problem. You learn to think in files. > nowhere else. Actually I find the language stuff - especially of PLT - a real pain. There are like a million examples where CL programs define new languages for some purpose. Every implementation already does. CL-USER, the default user package is already different language in each implementation. Each implementation uses different packages for CL-USER, but includes the base CL package. Just looking at my old Lisp Machine I get the following USER packages: Command: (remove-if-not (lambda (x) (search "USER" x)) (mapcar 'package-name (list-all-packages))) ("ZETALISP-USER" "USER" "FUTURE-COMMON-LISP-USER" "CLTL-USER" "CLIM- USER" "PSTATICE-USER" "HTTP-USER") There is ZetaLisp, three CL dialects, a dialect for programming UIs, a dialect for the database, and another one for the web server. I could load in more stuff which provides some kind of Prolog, a rule language, etc. There are lots of tools which configure their own language. > > But this subjective and getting close to drowning this thread in > flames -- I'm sure you're very happy with CL packages. Definitely more happy than with anything that R6RS provides. > > -- > ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: > http://barzilay.org/ Maze is Life!
From: Pascal Costanza on 13 Mar 2010 19:05 On 14/03/2010 00:18, Eli Barzilay wrote: > As a purely anecdotal example, I have > not seen any practical example of a CL program that defines a new > language for some purpose Then you haven't looked close enough. Pascal -- My website: http://p-cos.net Common Lisp Document Repository: http://cdr.eurolisp.org Closer to MOP & ContextL: http://common-lisp.net/project/closer/
From: Eli Barzilay on 13 Mar 2010 20:57 "joswig(a)corporate-world.lisp.de" <joswig(a)lisp.de> writes: > On 14 Mrz., 00:18, Eli Barzilay <e...(a)barzilay.org> wrote: >> "jos...(a)corporate-world.lisp.de" <jos...(a)lisp.de> writes: >> > On 13 Mrz., 23:27, Eli Barzilay <e...(a)barzilay.org> wrote: >> >> As other[s] said, PLT Scheme is far from being a small language -- >> >> it's overall much bigger than CL (and probably on the same scale of >> >> any "real" language, including actual CL implementations). But the >> >> organization of code *and* language into separate modules tend to >> >> make it easier to learn. >> >> > Than what? >> >> Than a monolithic language like CL. >> >> > Common Lisp code is organized around separate packages and systems. >> >> Right, and the CL package system is much weaker than the PLT module >> system in terms of expressiveness. > > There are lots of things in CL that are 'weaker' than what some > Scheme offers - but more practical. This is inflammatory nonsense. I'm talking about a more expressive system -- ones that makes it possible to write better code. In practice. >> (That also applies to a number of >> Scheme module systems that are very weak, some being close to >> something like CL packages.) As a purely anecdotal example, I have >> not seen any practical example of a CL program that defines a new >> language for some purpose, > > This is so wrong, it really hurts. Feel free to produce concrete pointers. >> whereas this is quite common in PLT, to the >> point of defining a new language that is used in a few files and > > That's already a problem. You learn to think in files. That's more inflammatory nonsense. I write code in files, so that's what I used. In PLT, I usually put one module in one file, just like in CL I usually put one package in one file. It's possible in both systems to have more than one module/package in one file, and it's possible in both to spread a module/package across more than one file (and due to the package system being less expressive, the latter is more common in CL). (Or maybe you're trying to bait me into some talk about the mythical repl as the single place where you write your code, something that is so unpractical it's not even funny.) >> nowhere else. > > Actually I find the language stuff - especially of PLT - a real > pain. Feel free to provide concrete examples. > There are like a million examples where CL programs define new > languages for some purpose. Note that I'm not talking about some DSL *extension* of CL that is achieved via a macro. I'm talking about having different languages with different semantics for the same names and forms. > Every implementation already does. CL-USER, the default user package > is already different language in each implementation. Each > implementation uses different packages for CL-USER, but includes the > base CL package. And I'm also not talking about having a few more bindings as the way to get a "new" language. That would be as vacuously interesting as saying that each an every definition produce a new language than the one that existed before that definition. > Just looking at my old Lisp Machine I get the following > USER packages: > > Command: (remove-if-not (lambda (x) (search "USER" x)) (mapcar > 'package-name (list-all-packages))) > ("ZETALISP-USER" "USER" "FUTURE-COMMON-LISP-USER" "CLTL-USER" "CLIM- > USER" "PSTATICE-USER" "HTTP-USER") > > There is ZetaLisp, three CL dialects, a dialect for programming UIs, > a dialect for the database, and another one for the web server. I > could load in more stuff which provides some kind of Prolog, a rule > language, etc. The problem with trying to use these things as "different languages" is that either they're really just different extensions of the same basic language (for example, `if' and `defun' would be the same), which is not what I'm talking about. Alternatively, they would provide you with different languages by providing different names -- but that leaves you with no easy way of combinig them in a single application without littering your code with explicit package qualifiers. >> But this subjective and getting close to drowning this thread in >> flames -- I'm sure you're very happy with CL packages. > > Definitely more happy than with anything that R6RS provides. I didn't say anything about R6RS in the current context. And now that this went all the way into subjective redundantism, I'll plonk this thread. -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life!
From: Tamas K Papp on 14 Mar 2010 03:28
On Sat, 13 Mar 2010 18:18:01 -0500, Eli Barzilay wrote: > practical example of a CL program that defines a new language for some > purpose, whereas this is quite common in PLT, to the point of defining a > new language that is used in a few files and nowhere else. I would be interested in learning more about this. Can you provide some links to examples? Thanks, Tamas |