我正在嘗試寫一些在DrRacket/plt-r5rs和Gambit/gsi中都有效的東西。便攜式加載/在R5RS計劃中包含define-syntax?
我遇到的問題是在Gambit中(load "foo.scm")
不會加載define-syntax
-blocks。在Gambit中使用(include "foo.scm")
有效,但當然會導致DrRacket中的語法錯誤。
有沒有辦法解決這個問題,以便我可以編寫便攜式R5RS代碼?
事情我已經嘗試:
- 重新定義
(include "foo.scm")
到(load "foo.scm")
,反之亦然。問題:非法重新定義Gambit中的宏。 - 用
(if gambit ...)
包裝所述重新定義。問題:如果內部定義非法(除非另有定義)。 - 將帶有filename的字符串傳遞給庫文件中的include。問題:在解讀開始之前似乎發生了包含在Gambit中。
對於Erik:你選擇了這個作爲最佳答案......那麼你做了什麼? – Quasaur
我幾乎放棄了讓我在Gambit和Racket之間進行可移植的代碼,因爲它對於那個特定的項目並不是真正的需求,而只是一些很好的東西。特別是當我想出如何從Racket中的Gambit中獲得我想要的東西時(問題的答案是「這是目前在終端上運行嗎?」)。 –