Scheme 如何使用签入球拍
我试图在scheme中使用check-expect函数,但我一直被告知它是check-expect的未绑定标识符。check expect不是我已经可以使用的函数吗?下面是我的代码: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?
#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我刚才添加了一个可能对您有所帮助的答案。