我是新來的函數式編程,並試圖寫一個函數,它接受一個列表參數,如果列表包含每個符號的長度爲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