2011-08-22 24 views
20

我在猜測#lang球拍是一種具有更多開箱即用的結構和常用功能的方案,也許會更具教育意義。 #lang拍與#lang方案相比有什麼特別之處?#lang方案和#lang球拍之間的差異

在球拍中使用#lang方案是否最好(或者甚至可能)遵循「計算機程序結構和解釋」的所有內容,甚至是「如何設計程序」。 HtDP是#lang球拍特有的?

無論使用#lang方案編寫的代碼,只要沒有包含庫,都可以用在雞計劃或任何主要的解釋器中?

在此先感謝。

回答

30
  1. 是的,#lang racket是球拍默認方言,有很多擴展名。

  2. 兩個地方是不是一個擴展:if必須有一個else分支,和對是不可變的(無set-car!set-cdr!)。

  3. #lang scheme在名稱更改前使用了一段時間,現在一致使用#lang racket。但爲了兼容性,我們保留了#lang scheme左右(以及各種保留的scheme/---庫,有時可能與racket/---對應版不同)。沒有理由在新代碼中使用#lang scheme

  4. 要關注SICP,請不要使用其中的任何一種 - 尼爾範戴克寫的一種很好的語言,詳見web page

  5. 要遵循HtDP,請不要使用任何這些,請使用學生語言。還有像#lang htdp/bsl這樣的基於#lang的新變種,但它們並不完整。 (和HTDP是#lang racket具體。)

  6. 沒有,球拍是雞方案非常不同。你也許可以在兩者中運行一些代碼,但那些代碼可能只是小玩具的例子。

+0

非常感謝你的信息Eli,爲了教學目的,我會完全用球拍去完成,雞的很酷的計劃是編譯到C部分。 – orlybg

+0

有了Racket,就沒有太多需要編譯到C的地方 - 它使用一個即時編譯器,表現相當不錯。如果您擔心創建獨立的可執行文件而不是速度,那麼也有辦法做到這一點 - 請參閱'raco exe'和'raco distribute'。 –

+4

只是爲了強調一件事:'#lang scheme'幾乎和'#lang racket'完全一樣 - 它與Chicken Scheme,或者SICP或HtDP沒有比'#lang racket'更類似。 –

相關問題