[plt-scheme] Organizing Code

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Wed Mar 8 09:21:29 EST 2006

On Mar 7, 2006, at 7:47 PM, Kevin A. Smith wrote:

> I'm looking for a bit of wisdom from the seasonsed Schemers community. 
> How do you organize code for large(ish) projects?  The project design 
> I'm considering has the following properties:

Others have responded properly but why don't we turn this around and 
ask which of these things you don't get from the PLT Scheme module 
system (http://www.htus.org/Book/Staging/how-to-use-modules/)? -- 
Matthias, Seasoned Schemer


> * Modular design with many specialized modules and a "glue" layer 
> comprising the main app.
>
> * Each module provides public code used by the rest of the 
> application. This code may be functions, Swindle/CLOS methods, or 
> Swindle/CLOS classes.
>
> * Each module will also have private code used internally and not 
> meant for public consumption.
>
> * I'd like to have the flexibility for modules to span multiple source 
> files. This is not a hard requirement but a very nice to have.
>
> I'm coming from a Java/C++ background and am struggling a bit in 
> finding the Scheme-y way to do this. I'm most used to the packaging 
> structures in Java where multiple files participate in a single 
> "logical" package. Classes and methods can be public, package-private, 
> or private. Is there anything similar to this in Scheme, specifically 
> PLT Scheme? Modules do not seem to fit the bill as they cannot span 
> multiple files and the current version of package.ss is broken.
>
> I readily admit that my ingrained Java coding habits are most likely 
> blinding me to either obvious or alternative solutions. I am not so 
> much concerned with how the packaging structure works, just that there 
> is a packaging structure and common practices surrounding it.
>
> Thanks,
> Kevin
> _________________________________________________
>  For list-related administrative tasks:
>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme



Posted on the users mailing list.