我已经下载了Racket并遵循其手册,之前我使用过Plt Scheme,而且作者说的是相同的;我发现了一些不太直接的东西
当我发出指示时
(列表"红色""绿色""蓝色")
并执行程序,它出现:
(列表"红色""绿色""蓝色")
而不是'("红色""绿色""蓝色");过去常见于Scheme。我尝试过所有语言(初级,中级,高级),什么都没有;那是为什么?
此外,如果我想使用像:
的利弊(缺点1 2)
我得到的错误是:
缺点:第二个参数必须是一个列表,但是收到1和2
那为什么呢?在方案中,通常表达式打印'(1 2)
任何帮助?
答案 0 :(得分:2)
您似乎正在使用其中一种教学语言。试试这个:在窗口的左下角,选择"从源中确定语言"并在编辑器中将其写为第一行:
#lang racket
小心但是,Racket和Scheme是不同的语言,并且有一些不同之处w.r.t。标准方案。当您尝试变异cons
单元格时,会出现最初的惊喜之一,请参阅此question获取建议。另请注意,在Racket if
表达式必须同时具有结果和替代。请务必查看此answer以了解更多差异。
答案 1 :(得分:2)
首先,DrRacket支持大量语言,因此您可能无法选择正确的语言,或者您选择的语言的默认设置并不令人满意。我会考虑如何改变语言以及如何改变它的外观:
正如您所提到的,DrRacket IDE左下角有一个下拉菜单,您可以在其中进行选择。按此按钮选择之前已选择的语言之一或使用"选择语言"选择其他东西的选项。
另一个非常方便的选择是选择"从源中确定语言"并把其中一个作为第一行:
#!r6rs ; Scheme standard R6RS language
#!r5rs ; Scheme standard R5RS language (legacy)
#!racket ; Racket's own Scheme dialect != Scheme (racket can mean "A dirty scheme")
因此DrRacket就像一个支持大量编程语言的IDE,但它们主要是Scheme方言。在它被称为Racket之前,它被称为DrScheme,该语言被称为PLT Scheme,#lang scheme
作为默认语言。 #!scheme
已被弃用,可以删除,以便为将来版本的球拍制作兼容的程序选择其他内容。
在按Run之前,实际的更改不会发生。您将在交互窗口中看到新语言生效。
当您按 RUN 时,交互窗口中打印的内容(如在REPL中)或交互窗口中的表达式不会输出,因此标准不涵盖这些内容。
您可以选择REPL如何显示来自同一左下方选择菜单的结果。选择"选择语言"没有做出任何选择,然后按左下角"显示详细信息"。您有3种不同的方式来展示它。以下是不同的选项:
Input expression Constructor Quasiquote write
(cons 1 2) (cons 1 2) `(1 . 2) (1 . 2)
(list 1 2) (list 1 2) `(1 2) (1 2)
add1 add1 add1 #<procedure:add1>
请务必了解这只是REPL中的表示,并且实际上在您的程序中打印了一些需要display
或类似的打印过程以实际获得真实输出的内容。
答案 2 :(得分:0)
好的,我找到了一个很好的方法,在程序的开头我应该:
#lang scheme
然后根据@OscarLopez
的建议从源头确定语言现在至少我可以在Racket中使用Scheme