From: Eli Barzilay on
"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
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
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
"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
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