2009-07-30 70 views
3

我正在使用DrScheme來處理SICP,並且我注意到某些程序(例如square)得到反覆使用。我想把它們放在一個單獨的文件中,這樣我就可以將它們包含在其他程序中,而不必每次重寫它們,但我似乎無法弄清楚如何做到這一點。如何在DrScheme中包含文件?

我已經試過:

這些作品都沒有。顯然我在抓秸稈 - 任何幫助都非常感謝。

回答

4

從您的問題中不清楚您使用的語言級別;某些遺留語言可能會使某些機制不可用。

最好的包含/抽象機制是模塊。

首先,將您的語言級別設置爲「模塊」。然後,如果我在同一個目錄下的這兩個文件:

文件使用-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)) 

然後我可以打 「跑」在「uses-square.ss」緩衝區中,一切都將按照您期望的方式工作。

警告:未經測試的代碼。

4

我相信你正在尋找:

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

的(要求)的表達是加載模塊。

+0

在Gambit計劃中工作至少 – 2015-11-01 18:57:27

1

在MIT/GNU計劃,你可以加載一個文件是這樣的:

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

但我不知道,如果它在DrScheme。

+0

它在DrScheme中工作,如果語言設置爲SIPC,則使用SICP加載項 – dan 2010-01-26 21:59:46

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