2013-05-19 70 views
3

我正在使用Windows 7中的DrRacket進行EOPL Scheme練習。當從#lang racket切換到#lang eopl時,定義窗格中的輸出不再顯示在交互窗格中。要清楚,作爲一個簡單的例子,運行DrRacket EOPL Scheme輸出

 
    #lang racket 
    4
產生
 
    4 
    >
如您所料。但運行
 
    #lang eopl 
    4
只產生
 
    >
有什麼我可以做的,以改變這種行爲,或者有另一個窗格,我應該看看輸出?當然,我可以在交互窗格中評估表達式並查看輸出,但是當我想要多次評估多個表達式時,這會很乏味。

回答

1

看起來像#lang eopl使用#%plain-module-begin,它不打印結果,而不是#%module-begin,它會打印結果。

對於一個快速的方法來切換,創建一個包含以下內容的以下文件:

eopl-printing.rkt

#lang racket 
(require (except-in eopl #%module-begin)) 
(provide (all-from-out eopl)) 
(provide #%module-begin) 

然後用這個作爲另一個文件語言:

#lang s-exp "eopl-printing.rkt" 
1 
2 
3 

在我的DrRacket中生產:

Welcome to DrRacket, version 5.3.4.6 [3m]. 
Language: s-exp "eopl-printing.rkt" [custom]. 
1 
2 
3 
> 

CAVEAT:如果eopl由於某種原因隱藏了結果,那麼您可能會得到一些虛假輸出,但我不確定。

+0

較少侵入性的解決方案。我已經轉向了這個。謝謝。 –

2

可能的解決方法:在定義窗格中打印值,以便它顯示在交互窗格中。並使用newline來分隔行:

(write 4) 
(newline) 
(write 2) 

> 4 
> 2 

當然,如果你想顯示多個值這將是乏味的,但它是一個進步。

+1

單調乏味,是的,但是如果我在多個值之間散佈'(display「\ n」)',它會產生清晰的輸出。謝謝,我現在就用這個​​。 –

+1

不要使用'display'來打印數值;改用'print'。使用'(新行)'或'(顯示「\ n」)'換行符。 –

+0

@RyanCulpepper我同意使用'(newline)'是一個好主意,但'print'在'#lang eopl'中不可用# –