要求是使用drracket(scheme)构建列表来生成(list "a" "aa" "aaa" "aaaa" "aaaaa")
。
我试过foldr
但只给出"aaaaa"
(define (build-a-string n)
(foldr string-append "" (build-list n "a")))
(build-list 5 (lambda (i)
(make-string (add1 i) #a)))
下面是使用"fold"的解决方案:
#lang racket
(define (build-as n)
(for/fold ([as '("")]) ([_ n])
(define last-a (first as))
(define new-a (string-append "a" last-a))
(cons new-a as)))
(build-as 5)
这是简短的版本:
(define (build-as n)
(for/fold ([as '("")]) ([_ n])
(cons (string-append "a" (first as)) as)))