Scheme 如何使用签入球拍

Scheme 如何使用签入球拍,scheme,racket,Scheme,Racket,我试图在scheme中使用check-expect函数,但我一直被告知它是check-expect的未绑定标识符。check expect不是我已经可以使用的函数吗?下面是我的代码: #lang racket (define contains (lambda (item list*) (if (equal? list* '()) #f (if (equal?

我试图在scheme中使用check-expect函数,但我一直被告知它是check-expect的未绑定标识符。check expect不是我已经可以使用的函数吗?下面是我的代码:

#lang racket

(define contains (lambda (item list*) 
                   (if (equal? list* '()) 
                        #f
                        (if (equal? item (car list*)) 
                            #t
                            (contains item (cdr list*))))))

(define z (list 1 2 3))
(define q (list 4 5 6))
(define p (list "apple" "orange" "carrot"))
(check-expect (contains 1 z) #t)

check expect
在技术上不是自动内置到方案或球拍中的

请注意,您使用的是
#lang racket
。这是专业的Racket语言,该语言希望您知道并明确说明要导入哪些库。它不会自动为您导入它们

(现在,您可能需要一个;Racket标准库附带了一个。)

但是,如果您刚刚开始学习编程,那么在Racket中使用其中一个就更有意义了

对于您在上面使用的代码,我怀疑您可能会想要这个。启动DrRacket并从“语言”菜单中的“如何设计程序”子菜单中选择“初学者语言”


有关更多详细信息,请参阅。

我使用DrRacket学习了一门课程,并查看了Terminal(Mac)中的第一个作业

此文件中由DrRacket自动添加的使check expect可用的行是:

#reader(lib "htdp-beginner-reader.ss" "lang")((modname basic) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #f #t none #f () #f)))


顺便说一句,我想尝试一个没有DrRacket的球拍节目。为了测试,我决定做
(+12)
。要使其正常工作,我的文件如下所示:

#! /Applications/Racket\ v6.2.1/bin/racket
#lang racket
(+ 1 2)
racket test.rkt
--------------------
FAILURE
name:       check-equal?
actual:     #f
expected:   #t
expression: (check-equal? #f (member? "a" (list "b" "a")))
message:    "test"
我在终端中运行它,如下所示:

#! /Applications/Racket\ v6.2.1/bin/racket
#lang racket
(+ 1 2)
racket test.rkt
--------------------
FAILURE
name:       check-equal?
actual:     #f
expected:   #t
expression: (check-equal? #f (member? "a" (list "b" "a")))
message:    "test"
我把这个放进了.bash_档案:

alias racket='/Applications/Racket\ v6.2.1/bin/racket'

我设法想出了一个解决办法:

在文件顶部(但在
#lang racket
之后)添加了一行

(需要机架单元)

而不是
(选中expect)
我使用了

(选择相等?(成员?“a”(列表“b”“a”)#f)

与在
检查expect
中不同,测试必须添加在函数定义之后。 如果检查成功,则没有输出。仅当测试失败时,输出如下所示:

#! /Applications/Racket\ v6.2.1/bin/racket
#lang racket
(+ 1 2)
racket test.rkt
--------------------
FAILURE
name:       check-equal?
actual:     #f
expected:   #t
expression: (check-equal? #f (member? "a" (list "b" "a")))
message:    "test"

更多信息:

老问题,但谷歌的答案是:

您可以
(需要测试引擎/球拍测试)
,它可以


请注意,与BSL不同,您必须运行测试。

不可能直接在代码中写入需求,因此我使文件机独立(带有菜单的解决方案仅在当前计算机上工作)?类似于
(require lang/htdp初学者)
#lang 2htdp/bsl
?@Liviu我刚才添加了一个可能对您有所帮助的答案。