我被困在我知道的事情上很琐碎,但我只是不知道该怎么做。我将一个字符串转换为一个列表,稍微改变列表,然后将其转换回字符串。将一个元素添加到列表的末尾,方案
我正在将单词翻译成猪拉丁文,但我无法在单词的结尾添加“ay”。我知道如何获取列表的第一个元素并将其发送到后面,但由于某种原因,我的代码不会添加“ay”。我之前在方案中附加了列表,这是相对直接的,但我不明白为什么它不在这里工作,我尝试了一些不同的方法。
下面是代码:
(define (member? item seq)
(sequence-ormap (lambda (x)
(equal? item x))
seq))
(define (vowel? letter)
(member? letter '(a e i o u)))
(define (first-to-last x) (append (cdr x) (list (car x))))
(define (piglatin wd)
(define stringlist (string->list wd))
(cond
[(vowel? (car stringlist)) (append 'yay stringlist)]
[else (define pigstringlist (first-to-last stringlist)) (append pigstringlist '(ay)) (list->string pigstringlist)])
)
我希望,看上去一切正常,除了不能追加到列表的末尾。我觉得我错过了一些简单的东西,但是我想学习来自C/Java背景的方案,而这些东西都是巨大的时间消费者。如果有人看到任何我会非常感激的。我可以使用一些建议并修改这些代码,因为它对我来说似乎有点儿意思。
这里的输出,对"home"
(piglatin "home")
"omeh"