In article <335CF8FE.5F60@sonic.net> Ray Dillinger <bear@sonic.net> writes:
From: Ray Dillinger <bear@sonic.net>
Date: Tue, 22 Apr 1997 10:44:30 -0700
Organization: Cognitive Dissidents
Lines: 63
References: <335C8066.1562@sonic.net> <xgmbu77fj7f.fsf@drakkar.ens.fr>
NNTP-Posting-Host: d84.pm2.sonic.net
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 2.01Gold (WinNT; I)
Francois-Rene Rideau wrote:
..
>
> of predefined functions, and I think all the purpose
> of Scheme vs CommonLISP would be lost...
I agree that we need some kind of standard way of doing modular
programming: But I see it mainly as a compilation-methods issue
rather than a namespace issue.
Most of the programs I work on, I put in one huge file. Every
time I change three lines, I recompile the whole %^&* thing.
That's because you are using Scheme.
This is plainly not the way to do it, but Scheme systems that
support programs that have multiple files are rare. The idea
of standard libraries assumes that the library code can sit in
its own file and you can write programs that call it, rather
than copying the contents of that file into the top of your
sourcecode file.
So here's a proposal:
=============================================================
|(compile port1)
|Port1 must be a port open to read scheme source code (most
|likely the result of opening a source file to read). This
|expression returns a port open to read compiled scheme source
|code. The exact format of compiled scheme source code is
|implementation dependent; it can be machine code or bytecode;
|a "pure" interpreter may even simply write whatever it reads
|from port1 directly. An error is signaled if what is read at
|port1 is not valid scheme code.
=============================================================
|(include port2)
|port2 must be a port open to read compiled scheme code.
|Evaluating the include expression has the same effect on
|the environment that evaluating the expressions whose compiled
|forms are read by port2 would.
=============================================================
Questions? Comments? Additions? Corrections? How would you
improve this proposal?
Comments. These issues have been solved in CL for years. DEFSYSTEMS
in CL exists (MK:DEFSYSTEM in the AI.Repository of CMU is an excellent
example) and can be used to do this sort of project management.
Conclusion: switch to CL. Given the Memory and the power available
today on any machine there is no reason to use a smaller and less
capable Lisp system.
Cheers
--
Marco Antoniotti
==============================================================================
California Path Program - UCB
Richmond Field Station
tel. +1 - 510 - 231 9472
|