Newsgroups: comp.lang.python,comp.os.linux.misc,comp.lang.tcl,comp.lang.scheme,comp.lang.misc
Path: cantaloupe.srv.cs.cmu.edu!das-news2.harvard.edu!news2.near.net!satisfied.elf.com!news.mathworks.com!news.kei.com!world!jhallen
From: jhallen@world.std.com (Joseph H Allen)
Subject: Re: GNU Extension Language Plans
Message-ID: <CxzK9q.L5B@world.std.com>
Organization: The World Public Access UNIX, Brookline, MA
References: <EBOUCK.94Oct19170519@dsdbqvarsa.er.usgs.gov> <1994Oct20.125903.19549@njitgw.njit.edu>
Date: Thu, 20 Oct 1994 19:17:48 GMT
Lines: 34
Xref: glinda.oz.cs.cmu.edu comp.lang.python:2176 comp.os.linux.misc:30331 comp.lang.tcl:20669 comp.lang.scheme:10478 comp.lang.misc:18267

In article <1994Oct20.125903.19549@njitgw.njit.edu>,
Aaron Watters <aaron@vienna.njit.edu> wrote:
>In article <EBOUCK.94Oct19170519@dsdbqvarsa.er.usgs.gov> ebouck@usgs.gov writes:
> >		     GNU Extension Language Plans
>>			Richard Stallman, GNU Project
>>....
>>* Step 1. The base language should be modified Scheme, with these features:...
>
>Fine.  Please extend Scheme (as I knew it) with a flexible
>object-encapsulation/inheritence system and convenient, well
>designed, portable interfaces to common os functionalities
>and libraries -- for a good example of how to do this you might do this
>look at the Python code.

Actually I would say that an object system is almost essential for a good
extension langauge.  You want to be able to add new types to the language
which correspond to the elements of whatever system the language is embedded
in.  Without this, you have to add tons of keywords to manage data objects
which are not really part of the language.

Python can do this, although it's operator overloading syntax is a little
awkward and it might be too slow.  Some of the modern functional languages
might be fast enough.  Haskel comes to mind, but it has a horrendous syntax.

Another concern is that you probably want the source-code inputs to these
languages to be event driven- for X and multi-user applications.  With
scheme you could do this with a preprocessor (just collect input until you
have balanced parenthasis).  Python's parser could probably be made event
driven as well, since it's table driven.
-- 
/*  jhallen@world.std.com (192.74.137.5) */               /* Joseph H. Allen */
int a[1817];main(z,p,q,r){for(p=80;q+p-80;p-=2*a[p])for(z=9;z--;)q=3&(r=time(0)
+r*57)/7,q=q?q-1?q-2?1-p%79?-1:0:p%79-77?1:0:p<1659?79:0:p>158?-79:0,q?!a[p+q*2
]?a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817;)printf(q%79?"%c":"%c\n"," #"[!a[q-1]]);}
