Il nuovo standard Scheme, R6RS pubblicato nel 2007, è compatibile con il precedente standard R5RS? In caso contrario, esiste una modalità di compatibilità in R6RS?
Il nuovo standard Scheme, R6RS pubblicato nel 2007, è compatibile con il precedente standard R5RS? In caso contrario, esiste una modalità di compatibilità in R6RS?
Ho paura che non sia compatibile con le versioni precedenti. Si prevede che un file R6RS inizi con l'importazione di una libreria. Se i tuoi file iniziano con:
#!r6rs
(import (rnrs))
La maggior parte di R6RS sarà disponibile. R5RS non riconoscerà queste due linee quindi in una versione di R5RS è necessario saltare quelle due o commentarle. È possibile farlo con gli strumenti standard della riga di comando in modo da poter scrivere un file sorgente e generare per l'altro. Non potrai utilizzare load
da R6RS in modo che il tuo codice risieda (o finisca) in un unico file.
Tuttavia, alcune implementazioni, ad es. ikarus, consente di eseguire il codice senza #! r6rs e il modulo di importazione iniziale anche se si tratta di un'implementazione R6RS, ma lo standard li richiede in un programma R6RS di livello superiore.
In appendice E del R6RS standard puoi vedere cosa è cambiato e dovresti evitare di usare nuove funzionalità. Cioè dovresti utilizzare la specifica R5RS e scrivere in minuscolo poiché R6RS fa distinzione tra maiuscole e minuscole.
La nuova bozza di specifiche R7RS si basa principalmente su R5RS e la loro forma di importazione è la stessa di R6RS. Tuttavia, l'implementazione della loro libreria, sebbene simile, è incompatibile con R6RS poiché utilizzava deliberatamente forme diverse. Ad ogni modo, per essere compatibile con R5RS non è possibile creare librerie senza dover eseguire molte elaborazioni per creare una versione R5RS compatibile.
Leggi altre domande sui tag scheme