Scheme DrRacket中的计划合同违约

Scheme DrRacket中的计划合同违约,scheme,Scheme,我正在使用DrRacket v7.4 IDE编写我的方案代码。 06:39,Brian Harvey教授演示了如何选择字符串的第一个字符。当我严格遵循这个方法时,我没有得到预期的结果,如下所示。为什么会这样 我的代码如下所示: # lang scheme (first 'hello) 预期结果: h 错误消息: first: contract violation expected: (and/c list? (not/c empty?)) given: hello 虽然它和SICP是同一

我正在使用DrRacket v7.4 IDE编写我的方案代码。 06:39,Brian Harvey教授演示了如何选择字符串的第一个字符。当我严格遵循这个方法时,我没有得到预期的结果,如下所示。为什么会这样

我的代码如下所示:

# lang scheme

(first 'hello)
预期结果:

h
错误消息:

first: contract violation
expected: (and/c list? (not/c empty?))
given: hello

虽然它和SICP是同一门科学课程,但它不像魔术师那样是香草的SICP。Brian Harvey显然使用了他在ha关于Scheme的另一本书中使用的一些程序,称为Simply Scheme(|)

在这本书中,他使用了单词和句子这两个术语,并制作了一个面向对象的过程,如果
var
是字符串或符号,则返回第一个字母;如果是列表,则返回第一个“单词”(元素)。为了避免侵犯版权,PDF版本的第531页对其进行了定义

无论如何,它不是标准的,所以为了让它工作,他要么加载了程序,要么制作了一个ini文件,在启动时定义它们。在Racket中,您可以通过创建自己的语言或需要一个库来实现这一点。确实有人花时间在Racket中将其创建为一种语言,因此您可以这样做:

#lang simply-scheme
(se (butlast (bf "this"))
    "world")
第一次运行此程序时,它会在底部要求安装Simply Scheme。只需按Install,完成后再次运行

虽然我并不反对布赖恩·哈维,但我不认为这比DrRacket中的原始SICP(| |)更好

请注意,这些都与现代方案不兼容。有些程序已更改合同、更改名称或被完全替换。把它与阅读莎士比亚的语法对你没有帮助的方式来学习英语相比


其他资源,如如何设计程序(),Rackets自己的和推荐的书,以及我最喜欢的Racket领域()。

虽然这是与SICP相同的科学课程,但它不像魔术师那样是普通的SICP。Brian Harvey显然使用了他在ha关于Scheme的另一本书中使用的一些程序,称为Simply Scheme(|)

在这本书中,他使用了单词和句子这两个术语,并制作了一个面向对象的过程,如果
var
是字符串或符号,则返回第一个字母;如果是列表,则返回第一个“单词”(元素)。为了避免侵犯版权,PDF版本的第531页对其进行了定义

无论如何,它不是标准的,所以为了让它工作,他要么加载了程序,要么制作了一个ini文件,在启动时定义它们。在Racket中,您可以通过创建自己的语言或需要一个库来实现这一点。确实有人花时间在Racket中将其创建为一种语言,因此您可以这样做:

#lang simply-scheme
(se (butlast (bf "this"))
    "world")
第一次运行此程序时,它会在底部要求安装Simply Scheme。只需按Install,完成后再次运行

虽然我并不反对布赖恩·哈维,但我不认为这比DrRacket中的原始SICP(| |)更好

请注意,这些都与现代方案不兼容。有些程序已更改合同、更改名称或被完全替换。把它与阅读莎士比亚的语法对你没有帮助的方式来学习英语相比


其他类似的资源,如如何设计程序(),Rackets自己的和推荐的书,以及我最喜欢的Racket领域()。

第一个的参数应该是一个列表
hello
是一个符号,而不是一个列表。他必须使用不同的Scheme方言,允许将其作为扩展。他使用的是Stk,而不是Racket。他在讲座开始时这么说。那么stk是scheme的口译员?我好像到处都找不到。使用谷歌“stk方案”可以找到
first
的参数应该是一个列表
hello
是一个符号,而不是一个列表。他必须使用不同的Scheme方言,允许将其作为扩展。他使用的是Stk,而不是Racket。他在讲座开始时这么说。那么stk是scheme的口译员?我好像到处都找不到。找到谷歌“stk方案”非常感谢您提供的这些信息,我会尽快尝试!我现在有时间应用你在这里写的东西,它就像一个符咒!我必须再次感谢你!您为我节省了时间。非常感谢您提供的信息,我会尽快尝试!我现在有时间应用你在这里写的东西,它就像一个符咒!我必须再次感谢你!你救了我一天。