Как включить файлы в DrScheme? - PullRequest
3 голосов
/ 30 июля 2009

Я использую DrScheme для работы через SICP, и я заметил, что некоторые процедуры (например, square) используются снова и снова. Я хотел бы поместить их в отдельный файл, чтобы я мог включать их в другие программы без необходимости каждый раз переписывать их, но я не могу понять, как это сделать.

Я пробовал:

(load filename)
(load (filename))
(load ~/path-to-directory/filename)
(require filename)
(require ~/path-to-directory/filename)
(require path-from-root/filename)

Ни одна из этих работ. Очевидно, что я хватаюсь за соломинку - любая помощь очень ценится.

Ответы [ 4 ]

4 голосов
/ 17 декабря 2009

Из вашего вопроса не ясно, какой уровень языка вы используете; некоторые устаревшие языки могут сделать определенные механизмы недоступными.

Лучший механизм включения / абстракции - это модуль.

Сначала установите уровень языка на «модуль». Затем, если у меня есть эти два файла в одном каталоге:

Файл использует-square.ss:

#lang scheme

(require "square.ss")

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

Файл square.ss:

#lang scheme

(provide square)

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

Тогда я могу нажать «запустить» в буфере «Use-Square.ss», и все будет работать так, как вы ожидаете.

Предупреждение: непроверенный код.

4 голосов
/ 30 июля 2009

Я полагаю, вы ищете:

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

(Требуется) выражение для загрузки модулей.

1 голос
/ 06 октября 2009
(require "~/path-to-directory/filename")
1 голос
/ 06 октября 2009

В схеме MIT / GNU вы можете загрузить файл с чем-то вроде этого:

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

Но я не знаю, работает ли он в DrScheme.

...