我正在尝试在 DrRacket 中创建一个函数来评估二十一点玩家的手牌。然而,当我使用以下代码时:
(define (eval-hand hand)
(let ([numAces 0] [ttl 0])
(for/list ([i hand])
(cond
[(empty? hand) ttl]
[(equal? (car i) 'A) (add1 numAces)]
[(integer? (car i)) (+ (car i) ttl)]
[else (+ ttl 10)]
)))
)
(define playerhand '((2 Diamonds) (4 Clubs)))
(display (eval-hand playerhand))
我得到
(2 4)
作为我的答案。我究竟做错了什么?请尽快回复。
您的 for/list 函数返回一个列表而不是单个值,这似乎就是您想要的。您应该尝试使用 Racket 内置的 for/sum 函数。