我是函数式编程的新手,并尝试编写一个函数,该函数接受一个列表参数,如果列表由每个符号长度为 1 的符号组成,则返回 true。更具体地说,
;(sequence? '(a b c)) ----> true
; (sequence? '(aa b c)) ---> false since aa has length 2
; (sequence? '(a 1 c)) ----> false since 1 is not a symbol
; (sequence? '(a (b c))) --> false since (b c) is not a symbol
我正在考虑执行以下操作:对于列表中的每个符号,我检查它是否是符号并且长度为 1。
(define sequence?
(lambda (inSeq)
(if ( for each item in the list inSeq, all are symbols and length=1) #t #f)
)
)
然后根据结果我返回真或假。但我不知道如何遍历列表。我不想将列表转换为字符串并使用字符串函数。我们有没有像“foreach”或for循环这样的语句来做我认为的事情?或任何其他建议?
注意:我也想过用car然后把它去掉,然后看列表的其余部分,但是由于我不知道长度,我不知道我应该用多少次car,即是否应该是car, caar、caaar 等
谢谢