如何遍历球拍中的列表?如果列表中的字符是字母,我想添加到新字符串

时间:2019-03-24 20:42:52

标签: racket

这是我的代码?谁能告诉我如何遍历列表?如果列表中的字符是字母,我想添加到新字符串

#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))

1 个答案:

答案 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 mapfoldl之类的东西来抽象迭代:

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)) 来解决它。