Con tutta la controversia che circonda lo schema r6rs, mi sono bloccato con r5rs e mi chiedo perché i progettisti abbiano deciso di non implementare un sistema modulare. Come si organizza il codice in questo?
La risposta breve è "perché non hanno standardizzato un sistema di moduli fino a R6RS."
Almeno basandomi sul mio ricordo del tempo, c'erano molte ragioni per cui un sistema di moduli non era stato trattato prima. Prima di tutto, anche se non era standardizzato, quasi tutte le implementazioni includevano una sorta di sistema di moduli prima, quindi il gruppo di persone a cui importava era limitato a coloro che volevano che i moduli fossero portatili, non solo tutti quelli che volevano i moduli.
In secondo luogo, un sistema di moduli richiede molto lavoro con pochissime risposte "giuste" inequivocabili: quasi ogni decisione che prendi è un compromesso. Molti cambiamenti precedenti (non tutti, ovviamente, ma molti comunque) erano chiare correzioni di errori precedenti.
Terzo, (collegato al primo) quasi tutte le implementazioni avevano una sorta di sistema modulare, il che creava un po 'di contesa - la maggior parte di loro considerava il proprio design come buono (questo è in genere il motivo per cui hanno scelto quel design dopo tutto) e nella maggior parte dei casi hanno subito diverse iterazioni di miglioramenti anche sul loro design di base. Come ho già detto, la maggior parte delle decisioni sono compromessi, così i sostenitori di ciascuno potrebbero indicare problemi con ogni altro progetto esistente e anche quelli più teorici.
Quindi, poche persone, molto lavoro e un bel po 'di disaccordo. Praticamente una ricetta per lo sviluppo lento (nella migliore delle ipotesi).
Sembra che le tue preoccupazioni siano trattate nel seguente post schema R6RS vs. R5RS . In altre parole, non esistevano moduli standardizzati fino alla versione r6rs.