2017-06-14 78 views

回答

0

DrRacket與許多其他Scheme編程環境一樣,通過讀取您給出的每個表達式,將當前表達式評估爲一個值(如數字,字符串或圖像),然後打印出在下一個表達式上再次啓動該過程之前,將該值賦給交互窗口。

通過將更簡單的表達式放入定義窗口中,您可以自行測試此行爲。例如,只需在其中寫入一個數字,如103,然後點擊運行按鈕;您應該在交互窗口中看到103打印輸出。


球拍,函數的定義((define (my-function ...) ...))不是一種表達,所以當它被閱讀和評估,它只是增加了對你寫的新功能的定義,但它並沒有顯示出任何價值爲了它。相反,它只是讀取下一個加括號的表單,將它看到的每個定義添加到其內存並評估(並打印其所見的每個表達式)的值。

0

在DrRacket它不是一個答案,這一點,因爲它依賴於你與DrRacket使用哪種語言:

方案,通過使用#!r5rs#!r6rs獲得語言,並在未來#!r7rs不這樣做即使您正在使用DrRacket和IDE進行編程和運行。通常我錯過了從IDE上運行時打印頂級表達式的能力,所以我做了一個question about how to enable it。不幸的是,這是不可能的。

在DrRacket的默認語言#lang racket中,運行程序時會打印每個頂級表達式。即使將程序編譯爲可執行文件並在球拍外運行,也可以執行此操作。在某種程度上,這也模仿了Common Lisp的頂級水平。其他版本的球拍語言,如#lang lazy#lang typed/racket也會打印頂級表達式。因此,如果你製作一個不打印任何東西的程序,你只需要做一個返回(void)的主程序,因爲它是最後一個表達式。

相關問題