2011-08-22 111 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'更类似。 –

相关问题