2009-07-30 10 views
3

J'utilise DrScheme pour travailler à travers SICP, et j'ai remarqué que certaines procédures (par exemple, square) sont utilisées encore et encore. Je voudrais les mettre dans un fichier séparé afin que je puisse les inclure dans d'autres programmes sans avoir à les réécrire à chaque fois, mais je n'arrive pas à comprendre comment faire cela.Comment inclure des fichiers dans DrScheme?

J'ai essayé:

Aucune de ces œuvres. Évidemment, je saisis les pailles - toute aide est très appréciée.

Répondre

4

Votre question ne précise pas le niveau de langue que vous utilisez; certains langages hérités peuvent rendre certains mécanismes indisponibles.

Le meilleur mécanisme d'inclusion/abstraction est celui des modules.

Commencez par définir votre niveau de langue sur "module". Ensuite, si j'ai ces deux fichiers dans le même répertoire:

fichier utilise-square.ss:

#lang scheme 

(require "square.ss") 

(define (super-duper x) (square (square x))) 

square.ss du fichier:

#lang scheme 

(provide square) 

(define (square x) (* x x)) 

Alors je peux frapper "run" sur le tampon "uses-square.ss" et tout fonctionnera comme vous le souhaitez.

Avertissement: code non testé.

4

Je crois que vous cherchez:

 
(include "relative/path/to/scheme/file.scm") 

Le (besoin) est l'expression des modules de chargement.

+0

fonctionne dans Gambit Scheme au moins –

1

Dans le schéma MIT/GNU, vous pouvez charger un fichier avec quelque chose comme ceci:

(load "c:\\sample-directory\\sample-file.scm") 

Mais je ne sais pas si cela fonctionne dans DrScheme.

+0

cela fonctionne dans DrScheme si la langue est définie sur SIPC, en utilisant le complément SICP – dan

+0

fonctionne dans Gambit Scheme au moins –

1
(require "~/path-to-directory/filename")