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.

È stato utile?

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")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top