我目前正在计划编程,我写了以下记录程序,记录了一个生物(德语中的kreatur),其中包括角色特征强度(=stärke),知识(= wissen)以及准备冒险( = risikobereitschaft),我定义了两个名为“ronugor”和“garnolaf”的生物(名字不是我的想法,它来自我没有提出的练习;))然后我写了一个程序来混合人物的性格特征这两个生物(强度-5%,知识不变,准备承担风险仍为0)接受一个名为“ronulaf”的新生物。
这是我的代码:
(: stärke (kreatur -> number))
(: wissen (kreatur -> number))
(: risikobereitschaft (kreatur -> number))
(define-record-procedures kreatur
make-kreatur
kreatur?
(stärke
wissen
risikobereitschaft))
; check-property (i kept this out of the posted code to shorten it)
;define the creatures garnolaf and ronugor
(: make-kreatur (number number number -> kreatur))
(define garnolaf
(make-kreatur 100 0 0))
(: make-kreatur (number number number -> kreatur))
(define ronugor
(make-kreatur 0 100 0))
;signaturen
(: garnolaf? (kreatur -> boolean))
(check-expect (garnolaf? garnolaf) #t)
(check-expect (garnolaf? ronugor) #f)
(define garnolaf?
(lambda (x)
(and (= (stärke x) 100)
(= (wissen x) 0)
(= (risikobereitschaft x) 0))))
(: ronugor? (kreatur -> boolean))
(check-expect (ronugor? garnolaf) #f)
(check-expect (ronugor? ronugor) #t)
(define ronugor?
(lambda (x)
(and (= (stärke x) 0)
(= (wissen x) 100)
(= (risikobereitschaft x) 0))))
;mixing of the creatures
(: ronulaf (kreatur kreatur -> kreatur))
;this is where i am missing a check-expect, i suppose
(define ronulaf
(lambda (r g)
(make-kreatur (* 0.95 (stärke g))
(wissen r)
0)))
我现在的问题是如何为ronulaf程序编写一个检查期望。我会写的是这样的:
(check-expect (ronulaf ronugor garnolaf) #<record:kreatur 95.0 100 0>)
但它不起作用。有没有人对支票预期有更好的想法?
非常感谢! EVA
答案 0 :(得分:0)
请注意您的garnolaf?
和ronugor?
程序是如何编写的?现在为ronulaf
写一些类似的内容。就是这样!
答案 1 :(得分:0)
试试这个:
(check-expect (ronulaf ronugor garnolaf) (make-kreatur 95 100 0))
并非所有对象表示都可以被读入并成为该对象。 #&LT;在一开始使它看起来像一个评估的程序,它们是相同的。