[comp.lang.lisp] LISP

levy@ttrdc.UUCP (Daniel R. Levy) (08/26/87)

In article <8452@utzoo.UUCP>, henry@utzoo.UUCP (Henry Spencer) writes:
> > Remember, very few people have to distort Lisp to put it on a new
> > architecture.
> Yeah, because they're distorting it to suit their own ideas already -- name
> three Lisp implementations that accept *exactly* the same language! :-)

I'm not sure what sense this makes.  Are there even three C or three FORTRAN
implementations which accept *exactly* the same language?????  Are lisps
REALLY so diverse (disclaimer: I known nothing about lisp except that it 
is written using Lots of Insipid Silly Parentheses :-) )  that they don't
even accept a mutual subset of the language?
-- 
|------------Dan Levy------------|  Path: ..!{akgua,homxb,ihnp4,ltuxa,mvuxa,
|         an Engihacker @        |		vax135}!ttrdc!ttrda!levy
| AT&T Computer Systems Division |  Disclaimer:  i am not a Yvel Nad
|--------Skokie, Illinois--------|

ken@argus.UUCP (Kenneth Ng) (08/28/87)

In article <1880@ttrdc.UUCP>, levy@ttrdc.UUCP (Daniel R. Levy) writes:
[edit on different implementations of Lisp]
> I'm not sure what sense this makes.  Are there even three C or three FORTRAN
> implementations which accept *exactly* the same language?????

Hm. If you write something in FORTRAN 2, it will be accepted by FORTRAN 4,
FORTRAN 66, and FORTRAN 77.  But I think that's cheating a bit, since the
languages were designed to be upward compatible.  Note: I have not tried
*ALL* the language features of FORTRAN 2 (the few that there are).  When
I started college I ran a couple decks from a high school FORTRAN 2
program, and it ran on the ones here.

> |------------Dan Levy------------|  Path: ..!{akgua,homxb,ihnp4,ltuxa,mvuxa,
> |         an Engihacker @        |		vax135}!ttrdc!ttrda!levy
> | AT&T Computer Systems Division |  Disclaimer:  i am not a Yvel Nad
> |--------Skokie, Illinois--------|



Kenneth Ng: Post office: NJIT - CCCC, Newark New Jersey  07102
uucp !ihnp4!allegra!bellcore!argus!ken *** NOT ken@bellcore.uucp ***
bitnet(prefered) ken@orion.bitnet

jpn@teddy.UUCP (John P. Nelson) (08/28/87)

>                                                               Are lisps
>REALLY so diverse (disclaimer: I known nothing about lisp except that it 
>is written using Lots of Insipid Silly Parentheses :-) )  that they don't
>even accept a mutual subset of the language?

Implementations of lisp can have WILDLY different syntax.  The
difference between "Common Lisp" and "Scheme" is huge.  The syntax (the
"Lots of Insipid Silly Parenthesis") part is the same, but the
functions that are supported are very different.

mwm@eris.BERKELEY.EDU (Mike (My watch has windows) Meyer) (08/29/87)

[Followups have been pointed to comp.lang.misc.]

In article <1022@argus.UUCP> ken@argus.UUCP (Kenneth Ng) writes:
<> I'm not sure what sense this makes.  Are there even three C or three FORTRAN
<> implementations which accept *exactly* the same language?????
<
<Hm. If you write something in FORTRAN 2, it will be accepted by FORTRAN 4,
<FORTRAN 66, and FORTRAN 77.  But I think that's cheating a bit, since the
<languages were designed to be upward compatible.  Note: I have not tried
<*ALL* the language features of FORTRAN 2 (the few that there are).  When

Back in the dark ages (when I was in college :-), I had access to four
(or was it five?) FORTRAN compilers, *all* based on FORTRAN IV.

Given any two, I could write code that would compile in either one but
not the other, or produce different results if it ran on both. In many
cases, I could also write code that would compile & run on one, and
die on the others.

The compilers in question? VAX/VMS FORT, IBM/MVS FORTH and WATFIV,
PDP-11/??? f4 running under v6 unix.

So much for FORTRAN being the same. But at least with it, you could
write code that would run on all four. The LISP implementations
available at the same time didn't have the same syntax for defining
functions, or addition, or ... 

Then again, it was pretty easy to write LISP code in one so that it
would accept the others. Not so true for FORTRAN.

	<mike
--
Lather was thirty years old today,			Mike Meyer
They took away all of his toys.				mwm@berkeley.edu
His mother sent newspaper clippings to him,		ucbvax!mwm
About his old friends who'd stopped being boys.		mwm@ucbjade.BITNET

darrelj@sdcrdcf.UUCP (Darrel VanBuer) (08/29/87)

In article <4307@teddy.UUCP> jpn@teddy.UUCP (John P. Nelson) writes:
>>                                                               Are lisps
>>REALLY so diverse (disclaimer: I known nothing about lisp except that it 
>>is written using Lots of Insipid Silly Parentheses :-) )  that they don't
>>even accept a mutual subset of the language?
>
>Implementations of lisp can have WILDLY different syntax.  The
>difference between "Common Lisp" and "Scheme" is huge.  The syntax (the
>"Lots of Insipid Silly Parenthesis") part is the same, but the
>functions that are supported are very different.

The essential framework of Lisp: cond, lambda, progn, setq, prog, function
calls, car, cdr, cons, list, atom work pretty much the same in every lisp.
A moderate number of functions (like append) behave the same (at least if
you stick to two arguments, etc).
A further set of functions tend to be sort of similar (e.g. print and read),
but can vary in an amazing number of ways (e.g. does print do new line
before or after printing).
Still other common functions are known under different names:
e.g. nreverse or dreverse for destructive reversal,
put or putprop or (setf(get ...  to put on a property list item.
Lisps vary wildly in extensions to lambda (all? do a fixed number of
ordinary arguments in the same way, beyond that, all bets are off), special
forms (like cond -- vary in which are available, whether you can define
more).
The parts of Lisp which you can expect to work the same everywhere is
perhaps a Basic sized subset.
This has happened for several reasons.  Before common lisp, there was never
any "official" standard.  Also, Lisp is a much easier language to extend
than most because programs are in a data format identical to that which Lisp
was designed to manipulate.  As a result, there have been a number of large
groups which have developed major dialects of lisp.  
Further, when one lisp group develops an inovative and useful extension to
the language or environment, it frequently gets copied by many of the other
groups (but maybe in slightly different ways because of the differing
environments to which they are introduced).

[I have been involved in several translations between various lisp dialects,
so am familiar with the range of differing similarities.  Generally, about
5% of the "features" actually used present real translation problems caused
by radically different solutions to language features.]

-- 
Darrel J. Van Buer, PhD; unisys; 2525 Colorado Ave; Santa Monica, CA 90406
(213)829-7511 x5449        KI6VY        darrel@CAM.UNISYS.COM   or
...{allegra,burdvax,cbosgd,hplabs,ihnp4,sdcsvax}!sdcrdcf!darrelj

bc@apple.UUCP (bill coderre) (08/30/87)

In article <1022@argus.UUCP>, ken@argus.UUCP (Kenneth Ng) writes:
> Hm. If you write something in FORTRAN 2, it will be accepted by FORTRAN 4,
> FORTRAN 66, and FORTRAN 77. 

Common Lisp is much better than that! It has all the features of
EVERY lisp ever, so no matter which Lisp you used, your program will run!!!

(Please, throw rotten tomatoes, crufty veggies, anything soft, just
DON'T THROW MONEY! It hurts!)

Have a *nice* day.................................................bc

mac@uvacs.UUCP (09/01/87)

> (was: Compatibility with EBCDIC)
?

In article <4307@teddy.UUCP>, jpn@teddy.UUCP (John P. Nelson) writes:
> >                                                               Are lisps
> >REALLY so diverse (disclaimer: I known nothing about lisp except that it 
> >is written using Lots of Insipid Silly Parentheses :-) )  that they don't
> >even accept a mutual subset of the language?

This is the usual reaction of non-LISP programmers.  I've used half a
dozen dialects, none of which have the same syntax for defining
functions.  And that's the main effect of a LISP program! 

Syntax is one of the principal concerns of e.g., Basic, Pascal, C, PL1,
Ada.  That's what most programmers spend most time on. 

In LISP, however, we don't care about syntax.  If we don't like it, we
rewire it.  We're more interested in semantics.  This where the
differences among LISPs become interesting.  We sometimes rewire the
evaluator and builtin functions when we don't like the way they work. 
Dynamic binding and interpretation make this easy.  Especially by
accident. 

mac@uvacs.CS.VIRGINIA.EDU (Alex Colvin) (09/03/87)

In article <4776@sdcrdcf.UUCP>, darrelj@sdcrdcf.UUCP (Darrel VanBuer) writes:
> The essential framework of Lisp: cond, lambda, progn, setq, prog, function
> calls, car, cdr, cons, list, atom work pretty much the same in every lisp.

despite set vs. cset, function vs. variable binding (see theological dispute
on net.lang.lisp a few years ago)

> Still other common functions are known under different names:
set! reverse!

> Lisps vary wildly in extensions to lambda
who was it that had something like pattern matching in the lambda-binding?
i.e. list == (lambda x x), car == (lambda ((a . r)) a) etc.

> The parts of Lisp which you can expect to work the same everywhere is
> perhaps a Basic sized subset.
speaking of languages with dialects! Dartmouth vs. uSoft ("street") Basic.

> This has happened for several reasons.  Before common lisp, there was never
> any "official" standard.
despite Utah's proclamation of "Standard", then "Portable Standard" Lisp.

> [I have been involved in several translations between various lisp dialects,
> so am familiar with the range of differing similarities.  Generally, about
> 5% of the "features" actually used present real translation problems caused
> by radically different solutions to language features.]
sounds about right for most programs in most languages.

spf@moss.ATT.COM (09/03/87)

In article <1931@uvacs.CS.VIRGINIA.EDU> mac@uvacs.CS.VIRGINIA.EDU (Alex Colvin) writes:
>In LISP, however, we don't care about syntax.  If we don't like it, we
>rewire it.  We're more interested in semantics.  This where the
>differences among LISPs become interesting.  We sometimes rewire the
>evaluator and builtin functions when we don't like the way they work. 

This reminds me of the fellow who invented new words as he felt
necessary to express his meaning at the time.  He was extremely
happy with himself, and relished his freedom of language.  The
only difficulty, of course, was that no one understood what he
was saying.

Steve
***
Thou art beside thyself.  Much learning hath made thee mad.
		-- Festus (the one in Acts, not Dodge City!)

hen@bu-cs.BU.EDU (Bill Henneman) (09/04/87)

In article  <13290@clyde.ATT.COM>  spf@moss.UUCP (Steve Frysinger) writes:

>In article <1931@uvacs.CS.VIRGINIA.EDU> mac@uvacs.CS.VIRGINIA.EDU
 (Alex Colvin) writes:

>>In LISP, however, we don't care about syntax.  If we don't like it, we
>>rewire it.  We're more interested in semantics.  This where the
>>differences among LISPs become interesting.  We sometimes rewire the
>>evaluator and builtin functions when we don't like the way they work. 

>This reminds me of the fellow who invented new words as he felt
>necessary to express his meaning at the time.  He was extremely
>happy with himself, and relished his freedom of language.  The
>only difficulty, of course, was that no one understood what he
>was saying.

That was the wrong association.  It should have reminded you of the
skilled machinist who uses *very* general-purpose tools which are
quickly and easily customized by means of jigs and hold-downs to a
special-purpose tool ideally matched to the problem at hand.

You might compare the approach taken to software devlopment by one
influential group at B*ll L*bs described by Ralph E. Griswold in the
book *The Macro Implementations of SNOBOL 4*.  These highly respected
computer professionals describe exactly the same approach to system
building that you took Alex Colvin to task for.  

			Bill Henneman

"Failure to understand reality is not realiy's fault"
		- Bill Henneman

shebs@utah-orion.UUCP (Stanley T. Shebs) (09/04/87)

In article <1937@uvacs.CS.VIRGINIA.EDU> mac@uvacs.CS.VIRGINIA.EDU (Alex Colvin) writes:

>> [...] Before common lisp, there was never any "official" standard.
>despite Utah's proclamation of "Standard", then "Portable Standard" Lisp.

Standard Lisp was proposed by Tony Hearn in a 1966 Sigplan Notices.  Dunno
if he was at Utah at the time, but in any case, this was only four years
after the appearance of McCarthy's JACM article.  The chief motivation for
Standard Lisp was to improve the transportability of the algebra system
Reduce, which is widely used by physicists and others.  To quote from "An
Overview of Common Lisp" (1982 Lisp conf proceedings, available from ACM):

"While promulgated as a possible standard, it was on the one hand incompatible
in one way or another with most other dialects, and on the other hand really
too small a subset of LISP for its adoption to have any practical effect.
However, even as a dialect used by only one implementation group, it deserves
the name "Standard" more than any other, as it has been implemented for a wide
variety of processors, and code written within that subset is completely
portable, a remarkable achievement."

(The crack about its being too small is a revealing insight into why Common
Lisp is big - Standard Lisp is about the size of Standard Scheme, though not
as clean.)

Portable Standard Lisp is more accurately named "Portable Implementation
of Standard Lisp", but that's a rather pedantic distinction.

							stan shebs
							shebs@cs.utah.edu

peter@sugar.UUCP (Peter da Silva) (09/05/87)

> This is the usual reaction of non-LISP programmers.  I've used half a
> dozen dialects, none of which have the same syntax for defining
> functions.  And that's the main effect of a LISP program! 

Well, I'm not a non-LISP programmer. I'm also not a LISP-programmer. I'm
a programmer who has had occasion to do work in LISP on a few occasions.

Unfortunately, each time I've had to pretty much learn the language from
scratch...

> Syntax is one of the principal concerns of e.g., Basic, Pascal, C, PL1,
> Ada.  That's what most programmers spend most time on. 

In LISP, too. Unless, of course, you never use but one LISP. Or maybe you
carry around a bunch of standard functions the way Emacs types carry around
a set of standard macros. The first time you sit in front of the machine
you port your functions to it and forget how the underlying language works.

For people who aren't going to be making a career out of LISP or Emacs, it's
a bit disturbing to be told that we're going to have to sit down and figure
out a set of functions so we can operate in other environments.

> In LISP, however, we don't care about syntax.  If we don't like it, we
> rewire it.

Wouldn't it be easier to rewire if you could just keep your toolkit in
Lisp 1.5, so you could use a new system the day you sit in front of it
instead of a week later? FORTH has a similar capability, but if you know
Forth-77 and Forth-83 you can be up to speed in a new FORTH in an hour or
so.

For god's sake... define some subset language that will be available in
everyone's LISP, and stick to it.
-- 
-- Peter da Silva `-_-' ...!seismo!soma!uhnix1!sugar!peter
--                 'U`  <-- Public domain wolf.

shebs@utah-orion.UUCP (Stanley T. Shebs) (09/08/87)

In article <649@sugar.UUCP> peter@sugar.UUCP (Peter da Silva) writes:

>[...] Or maybe you
>carry around a bunch of standard functions the way Emacs types carry around
>a set of standard macros. The first time you sit in front of the machine
>you port your functions to it and forget how the underlying language works.

Use Common Lisp - then every function you could ever think of has already been
defined and built in!  1/2 :-)  People do carry around functions, but this
is less common than it used to be - almost any bit of code in Lisp 1.5 will
fail horribly in Scheme or Common Lisp.

>Wouldn't it be easier to rewire if you could just keep your toolkit in
>Lisp 1.5, so you could use a new system the day you sit in front of it
>instead of a week later? FORTH has a similar capability, but if you know
>Forth-77 and Forth-83 you can be up to speed in a new FORTH in an hour or
>so.

Most people haven't tried Lisp 1.5, so they can talk blithely about
programming in it.  Forth programmers may be willing to tolerate operating
at a near-machine level, but the difference between Lisp 1.5 and a quality
Lisp environment is about 20-100,000 lines of Lisp code, depending on your
tastes.  You could get a hernia trying to carry it around!

>For god's sake... define some subset language that will be available in
>everyone's LISP, and stick to it.

car, cdr, cons, atom, cond, lambda - not much, but it's provably sufficient.
Now try to program in it!

The usage of the term "Lisp" is rather misleading, since "Lisp" designates a
family of languages rather than a single one.  Lisp 1.5, Scheme, Common Lisp,
and 3-Lisp have little in common besides parentheses.  Defining a common
subset is about like defining a common subset of C, Pascal, Modula-2, and A*a
(no problem, they all have semicolons, right?).

For Lisp standards, there's Common Lisp and Standard Scheme, but both have
plenty of bashers and haters - some of the commentary I've heard is highly
unprofessional...

>-- Peter da Silva `-_-' ...!seismo!soma!uhnix1!sugar!peter

							stan shebs
							shebs@cs.utah.edu

barmar@think.COM (Barry Margolin) (09/10/87)

In article <649@sugar.UUCP> peter@sugar.UUCP (Peter da Silva) writes:
>For god's sake... define some subset language that will be available in
>everyone's LISP, and stick to it.

Well, this is the purpose of the Common Lisp language, although it
will probably not make it into EVERYONE'S Lisp, because it is too big.
However, it looks like most industrial-strength Lisp implementations
are going to be Common Lisp compatible.

---
Barry Margolin
Thinking Machines Corp.

barmar@think.com
seismo!think!barmar

peter@sugar.UUCP (09/12/87)

In article <8229@think.UUCP>, barmar@think.COM (Barry Margolin) writes:
> In article <649@sugar.UUCP> peter@sugar.UUCP (Peter da Silva) writes:
> >For god's sake... define some subset language that will be available in
                                 ^^^^^^
> >everyone's LISP, and stick to it.
> 
> Well, this is the purpose of the Common Lisp language, although it
> will probably not make it into EVERYONE'S Lisp, because it is too big.

If it's too big, it sure ain't a subset.

How about Lisp 1.5? It shouldn't be too hard to at least emulate 1.5, and it
is certainly not too big. I may be biased because I cut my lisp teeth on
1.5, but at that time all the lisp books I could find at least covered it.
-- 
-- Peter da Silva `-_-' ...!hoptoad!academ!uhnix1!sugar!peter
--                 'U`      ^^^^^^^^^^^^^^ Not seismo!soma (blush)

gupta@prlhp1.prl.philips.co.uk (gupta) (03/17/89)

Anyone got any ideas on the following consecutive garbage collections ?


1> (gc)
;;; GC: 700946 words [2803784 bytes] of dynamic storage in use.
;;; 1395954 words [5583816 bytes] of free storage available before a GC.
;;; 3492854 words [13971416 bytes] of free storage available if GC is disabled.
2803784
5583816
13971416
2> (gc)
;;; GC: 700934 words [2803736 bytes] of dynamic storage in use.
;;; 1395966 words [5583864 bytes] of free storage available before a GC.
;;; 3492866 words [13971464 bytes] of free storage available if GC is disabled.
2803736
5583864
13971464
3> (gc)
;;; GC: 700940 words [2803760 bytes] of dynamic storage in use.
;;; 1395960 words [5583840 bytes] of free storage available before a GC.
;;; 3492860 words [13971440 bytes] of free storage available if GC is disabled.
2803760
5583840
13971440
4> (gc)
;;; GC: 700944 words [2803776 bytes] of dynamic storage in use.
;;; 1395956 words [5583824 bytes] of free storage available before a GC.
;;; 3492856 words [13971424 bytes] of free storage available if GC is disabled.
2803776
5583824
13971424
5> (gc)
;;; GC: 700944 words [2803776 bytes] of dynamic storage in use.
;;; 1395956 words [5583824 bytes] of free storage available before a GC.
;;; 3492856 words [13971424 bytes] of free storage available if GC is disabled.
2803776
5583824
13971424


Usually, while I get a cup of coffee, I get Lisp to garbage collect twice. 
This way, by the time I'm back, its through and I am saved the agony of a g.c.
when it doesn't suit me.

What I cannot understand in the above printout is why free storage space decreased.
There weren't any other process running (this is Lucid Common Lisp 2.10 on an Apollo 3000
with 8MB RAM).

susan@lucid.com (Susan Rosenbaum) (03/22/89)

With regards to the question on why free storage space changes during
consecutive toplevel gc's, it is due to the fact that the evaluator
variables are being changed.  [see CLtL, p. 325] The '+' variables are
getting set to be a list of one element (the symbol 'GC); the '*'
variables are being set to the 1st value returned by gc (a fixnum);
the '/' variables are being set to the list of multiple values
returned by gc (a 3-element list).

			Susan Rosenbaum
			susan@lucid.com

aps@stl.stc.co.uk (Andrew Sinclair) (05/02/90)

Sorry if you have heard this before (I'm new to the group).

I am looking at LISP for modeling purposes. Can anyone recommend a
reasonably priced LISP package (Compiler/interpreter, debugger,
library etc) to run on a PC. My only prerequisites are that it is
Common LISP (or a very good approximation) and that the library
contains a reasonable graphics interface.

I have looked at IQ/LISP, (the expensive) Lucid LISP, PC Scheme and
TransLISP.

Thanks in advance
Andrew.
+----------------------+----------------------------------+-------------------+
| Andrew Sinclair,     | Phone: (+44) 0279 29531 ext.2461   Fax: 0279 441551  |
| STC Technology Ltd,  | Reply-To: aps@stl.stc.co.uk                          |
| London Road,         +------------------------------------------------------|
| Harlow,              |Disclaimer - The views and opinions expressed here may|
| Essex CM17 9NA, U.K. |not necessarily be those adopted by STC Technology Ltd|
+-----------------------------------------------------------------------------+

+----------------------+----------------------------------+-------------------+
| Andrew Sinclair,     | Phone: (+44) 0279 29531 ext.2461   Fax: 0279 441551  |
| STC Technology Ltd,  | Reply-To: aps@stl.stc.co.uk                          |
| London Road,         +------------------------------------------------------|
| Harlow,              |Disclaimer - The views and opinions expressed here may|
| Essex CM17 9NA, U.K. |not necessarily be those adopted by STC Technology Ltd|
+-----------------------------------------------------------------------------+

SEB1525@mvs.draper.com (01/10/91)

On 7 Jan 91 18:36:32 GMT "Jonathan H. Young" <young@icad.com> said:

>Are there any Mainframe CommonLisp implementations out there?  I know
>about KCL and VaxLisp; I was hoping for something with better
>performance and perhaps commercial support.
>
>Pointers to an on-line listing would also be welcome.
>
>Thanks in advance.
>
>                                --- Jonathan

I don't know if you're referring to an IBM or DEC mainframe, or if
you're referring to MVS or VM if it's IBM.  However, here's the
situation as far as IBM mainframes go.

On VM... I think Lucid may have a CL for VM, but I'm not sure.
I certainly expect them to be working on it.  IBM used to market
a product called Lisp/VM (out of the Watson Research Center in Yorktown)
which wasn't a Common Lisp, and didn't last long.

On MVS... Lucid markets Common Lisp for this platform.  It used to be
an IBM product (though it was still Lucid's compiler) until a year or
so ago when IBM withdrew it due to inability to interest customers.
It's a huge product that requires a network of PC's and user licences
to operate (the requirement for PC's running Microsoft Windows may be
obsolete with V2 of the product).

Here at Draper Lab we run an internally developed MVS Lisp (called
"Zil") on our IBM ES/9000 (formerly 3090).  It's not 100% Common Lisp,
but is close enough, and also has some Maclisp features.  ZIL features
assembler-coded bignums, a compiler that does source transforms, FLAVORS
for object-oriented programming, and support for invoking TSO commands
and ISPF services from within Lisp.  Debugging support is minimal - it
has TRACE and it will display the control stack when an error occurs,
and that's about it.  For an editor, it uses the ISPF editor (if ISPF is
available).

The Maclisp compatibility was required for DOE-Macsyma, which we ported
to MVS from the VAX NIL version.  It's arguably the fastest Macsyma
running, and has been in full production here for use by our engineers
and scientists.  (We also have OPS5 running under Zil on MVS.)

The garbage collector is a combination of mark-and-sweep and
stop-and-copy, and also utilized the 3090 Vector Facility when we had
one.  The entire system exploits MVS/XA, using memory above the
16-megabyte line.  Zil runs in foreground using TSO on plain IBM 3270
terminals, or in batch via JCL.

Making Zil available outside of Draper depends on the level of interest
(which isn't very high for IBM mainframes).  Boston University is one
site which has a test copy on their 3090's VPS operating system.

I hope this answers your question.

                              - Steve Bacher
                              - Charles Stark Draper Laboratory
                              - Cambridge, MA