scsh-users
[Top] [All Lists]

Re: CFP: scheme standard libraries

To: scsh-news@martigny.ai.mit.edu
Subject: Re: CFP: scheme standard libraries
From: marcoxa@infiniti.PATH.Berkeley.EDU (Marco Antoniotti)
Date: 25 Apr 1997 12:36:26 -0700
Organization: California PATH Program - UCB
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

<Prev in Thread] Current Thread [Next in Thread>