1
如何創建一個名爲rnrs-modified的庫,它將使下列代碼顯示「Hello,world!」...?在r6rs中重新定義句法關鍵字
#!r6rs
(import (rnrs-modified))
(display set!)
,甚至這將是很好的(可以說是更好的,實際上):
#!r6rs
(import (rnrs) (modified)) ;or (import (modified) (rnrs))
(display set!)
基本上我希望能夠重新定義語法關鍵字(讓,λ,設定!等)在庫,然後將該庫導入到另一個庫或頂級程序中,並使用這些重新定義的關鍵字。
不過我老覺得:
module: identifier already imported from a different source in:
set!
(lib "rnrs/main.ss")
(lib "rnrs-modified/main.ss")
我使用的代碼rnrs改性是:
#!r6rs
(library (rnrs-modified)
(export (rename (f set!)))
(import (rnrs))
(define f "Hello, world!"))
任何想法?
更新:我發現this'mzscheme模塊'。它不適用於r6rs方案,但它提供的功能基本上就是我正在尋找的。如何在r6rs方案中使用provide all-from-except
?
+1,謝謝你的回答 - 我很擔心這可能是這種情況:(這種糟糕的情況。你認爲如何有效地增加所有其他綁定的出口?我可以自動完成任務解析文檔或其他東西,所以這是可能的,但根據我的經驗,像這樣的硬編碼解決方案通常是不好的,並且很容易中斷,你怎麼看?還有,爲什麼選擇這樣一個限制性的圖書館系統爲r6rs選擇?小世界:P – Cam 2010-07-22 19:24:45
1. R6RS標準不會改變,所以一旦你獲得了正確的出口,你將終身成立 2.我不知道爲什麼它從一個角度來看,R6RS的目標是爲今天在不同Scheme系統中發現的共同特徵定義一個標準,所以也許那些是子t常見的模塊功能? 在我看的最後一個R6RS代碼中,作者痛苦地手動導出了他自己的函數的加載和加載。無所不在的*似乎毫不費力。 – grettke 2010-07-22 19:48:46