这是我的代码?谁能告诉我如何遍历列表?如果列表中的字符是字母,我想添加到新字符串
#lang racket
(define (conversion input)
(define s (string))
(let ((char (string->list input)))
(cond
[(char-alphabetic? (first (char)))
(string-append s first)]
[(char-alphabetic? (rest (char)))
(string-append s rest)]))
(display s))
答案 0 :(得分:1)
基本迭代是:
NewComponent
这实际上是您列表的浅表副本。有时候,您会反复进行一些变量累积操作:
(define (copy-list lst)
(if (null? lst)
'()
(cons (car lst)
(copy-list (cdr lst))))
(copy-list '(1 2 3)) ; ==> (1 2 3)
看看这些,您会看到一个模式出现,因此我们制作了(define (sum-list lst acc)
(if (null lst)
acc
(sum-list (cdr lst) (+ acc (car lst)))))
(sum-list '(1 2 3)) ; ==> 6
,map
和foldl
之类的东西来抽象迭代:
foldr
看着您的挑战,我敢打赌,您可以用(define (copy-list-foldr lst)
(foldr cons '() lst)
(define (copy-list-map lst)
(map values lst))
(define (sum-list-foldl lst)
(foldl + 0 lst))
来解决它。