我是新来的函数式编程,并试图写一个函数,它接受一个列表参数,如果列表包含每个符号的长度为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”这样的语句,或循环做我的想法?或任何其他建议?
注意:我也考虑过使用汽车,然后将其取下并查看列表的其余部分,但由于我不知道长度,我不知道应该使用汽车多少次,即是否它应该是汽车,CAAR,caaar等
谢谢
谢谢!我不知道如何使用递归,现在我明白了 – yrazlik 2013-04-30 17:34:51