Comment inclure des fichiers dans DrScheme?
Question
J'utilise DrScheme pour travailler avec SICP, et j'ai remarqué que certaines procédures (par exemple, square
) sont utilisées de manière répétée. J'aimerais les mettre dans un fichier séparé pour pouvoir les inclure dans d'autres programmes sans avoir à les réécrire à chaque fois, mais je n'arrive pas à comprendre comment faire.
j'ai essayé:
(load filename)
(load (filename))
(load ~/path-to-directory/filename)
(require filename)
(require ~/path-to-directory/filename)
(require path-from-root/filename)
Aucune de ces œuvres. Évidemment, je saisis les tenailles - toute aide est la bienvenue.
La solution
Votre question ne précise pas quel niveau de langue vous utilisez; certains langages hérités peuvent rendre certains mécanismes indisponibles.
Le meilleur mécanisme d'inclusion / d'abstraction est celui des modules.
Tout d'abord, définissez votre niveau de langue sur "module". Ensuite, si j'ai ces deux fichiers dans le même répertoire:
Fichier uses-square.ss:
#lang scheme
(require "square.ss")
(define (super-duper x) (square (square x)))
Fichier square.ss:
#lang scheme
(provide square)
(define (square x) (* x x))
Ensuite, je peux cliquer sur "exécuter". sur le " uses-square.ss " tampon et tout fonctionnera comme vous le souhaitez.
Avertissement: code non testé.
Autres conseils
Je crois que vous recherchez:
(include "relative/path/to/scheme/file.scm")
L'expression (requis) sert au chargement de modules.
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.
(require "~/path-to-directory/filename")