Come posso includere file in DrScheme?
Domanda
Sto usando DrScheme per lavorare tramite SICP e ho notato che alcune procedure (ad esempio, square
) vengono utilizzate più e più volte. Vorrei metterli in un file separato in modo da poterli includere in altri programmi senza doverli riscrivere ogni volta, ma non riesco a capire come farlo.
Ho provato:
(load filename)
(load (filename))
(load ~/path-to-directory/filename)
(require filename)
(require ~/path-to-directory/filename)
(require path-from-root/filename)
Nessuna di queste opere. Ovviamente sto afferrando le cannucce - ogni aiuto è molto apprezzato.
Soluzione
Non è chiaro dalla tua domanda quale livello linguistico stai usando; alcune lingue legacy potrebbero rendere non disponibili determinati meccanismi.
Il miglior meccanismo di inclusione / astrazione è quello dei moduli.
Innanzitutto, imposta il livello della lingua su " modulo " ;. Quindi, se ho questi due file nella stessa directory:
Il file utilizza-square.ss:
#lang scheme
(require "square.ss")
(define (super-duper x) (square (square x)))
File square.ss:
#lang scheme
(provide square)
(define (square x) (* x x))
Quindi posso premere " esegui " nella sezione "use-square.ss" buffer e tutto funzionerà come ti aspetteresti.
Avvertenza: codice non testato.
Altri suggerimenti
Credo che tu stia cercando:
(include "relative/path/to/scheme/file.scm")
L'espressione (richiesta) è per il caricamento dei moduli.
Nello schema MIT / GNU, puoi caricare un file con qualcosa del genere:
(load "c:\\sample-directory\\sample-file.scm")
Ma non so se funziona in DrScheme.
(require "~/path-to-directory/filename")