Scheme 嵌套循环方案
比如说我有Scheme 嵌套循环方案,scheme,racket,Scheme,Racket,比如说我有 (define sample '("a" "b" "c")) 我将如何创建一个嵌套循环来处理示例 (define (runthis a) (cond (char? (car a)) ;given that this condition is true I go on to the nested loop (define (work sample) <dosomething> (work (cdr sample))))
(define sample '("a" "b" "c"))
我将如何创建一个嵌套循环来处理示例
(define (runthis a)
(cond
(char? (car a)) ;given that this condition is true I go on to the nested loop
(define (work sample)
<dosomething>
(work (cdr sample))))
(else (write " ")
(runthis(cdr a))))
(定义(运行此a)
(续)
(char?(car a));假设这个条件为真,我继续进行嵌套循环
(定义(工作样本)
(工作(cdr样本)))
(否则(写为“)
(运行此(cdr a)))
这是基本嵌套循环的正确模板吗?我手头没有Scheme解释器,但看起来它不会运行 我不确定您所说的“嵌套循环”到底是什么意思,或者您试图满足什么要求,但Scheme中不鼓励使用大量嵌套和长函数,因为它们会影响可读性/清晰度。你想复制这种行为吗
while(foo){
while(bar){
//起泡
}
}
我会推荐类似的东西,它在功能上是等效的,但更容易摸索:
(定义(列表的内部循环)
做事
)
(定义(列表的外部循环)
(cond(char?(car a))(列表的内部循环)
(否则(写“))
我手边没有Scheme解释器,但它看起来不会运行
我不确定您所说的“嵌套循环”到底是什么意思,或者您试图满足什么要求,但Scheme中不鼓励使用大量嵌套和长函数,因为它们会影响可读性/清晰度。你想复制这种行为吗
while(foo){
while(bar){
//起泡
}
}
我会推荐类似的东西,它在功能上是等效的,但更容易摸索:
(定义(列表的内部循环)
做事
)
(定义(列表的外部循环)
(cond(char?(car a))(列表的内部循环)
(否则(写“))
另一种可能性是命名的let
,如下所示:
(define (runthis a)
(cond
((char? (car a))
(let loop ((sample a))
(cond
((null? sample) '())
(else (display (car sample))
(loop (cdr sample))))))
(else (write " "))))
另一种可能是命名的
let
,如下所示:
(define (runthis a)
(cond
((char? (car a))
(let loop ((sample a))
(cond
((null? sample) '())
(else (display (car sample))
(loop (cdr sample))))))
(else (write " "))))
如果需要嵌套循环,我建议改用for。 这里有一个小而愚蠢的例子。外环穿过 列表中的单词一次一个。如果当前单词以r开头, 然后,内部循环将一次打印一个字符
#lang racket
(define (print-words-beginning-with-r words)
(for ([word words]
#:when (char=? (string-ref word 0) #\r))
(for ([c word])
(display c))
(newline)))
(print-words-beginning-with-r '("racket" "rocks" "!"))
这个输出
racket
rocks
如果需要嵌套循环,我建议改用for。 这里有一个小而愚蠢的例子。外环穿过 列表中的单词一次一个。如果当前单词以r开头, 然后,内部循环将一次打印一个字符
#lang racket
(define (print-words-beginning-with-r words)
(for ([word words]
#:when (char=? (string-ref word 0) #\r))
(for ([c word])
(display c))
(newline)))
(print-words-beginning-with-r '("racket" "rocks" "!"))
这个输出
racket
rocks
这有帮助。谢谢托尔加默斯!这有帮助。谢谢托尔加默斯!