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.

Était-ce utile?

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")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top