gpt4 book ai didi

Wescheme 中的方案代码条件错误

转载 作者:行者123 更新时间:2023-12-01 10:05:43 26 4
gpt4 key购买 nike

虽然以下代码在 DrRacket 环境中运行良好,但在 WeScheme 中会产生以下错误:

Inside a cond branch, I expect to see a question and an answer, but I see more than two things here.
at: line 15, column 4, in <definitions>

我该如何解决这个问题?实际代码可在 http://www.wescheme.org/view?publicId=gutsy-buddy-woken-smoke-wrest 获得。

(define (insert l n e)
(if (= 0 n)
(cons e l)
(cons (car l)
(insert (cdr l) (- n 1) e))))

(define (seq start end)
(if (= start end)
(list end)
(cons start (seq (+ start 1) end))))

(define (permute l)
(cond
[(null? l) '(())]
[else (define (silly1 p)
(define (silly2 n) (insert p n (car l)))
(map silly2 (seq 0 (length p))))
(apply append (map silly1 (permute (cdr l))))]))

最佳答案

另一种选择是重组代码,提取内部定义(这似乎是 WeScheme 的问题)并传递缺少的参数,如下所示:

(define (insert l n e)
(if (= 0 n)
(cons e l)
(cons (car l)
(insert (cdr l) (- n 1) e))))

(define (seq start end)
(if (= start end)
(list end)
(cons start (seq (+ start 1) end))))

(define (permute l)
(cond
[(null? l) '(())]
[else (apply append (map (lambda (p) (silly1 p l))
(permute (cdr l))))]))

(define (silly1 p l)
(map (lambda (n) (silly2 n p l))
(seq 0 (length p))))

(define (silly2 n p l)
(insert p n (car l)))

上面的代码几乎适用于我能想到的任何 Scheme 实现,它是非常基本的标准 Scheme 代码。

关于Wescheme 中的方案代码条件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com