从函数式语言中的递归调用中退出



我目前正在学习球拍,很难理解如何用函数式语言编程。我正在尝试让函数first-item将列表的第一个元素与数字或字符相匹配,将该标记添加到结果列表中,然后对列表的其余部分执行操作。目前,在(first-item(rest L))的最后一次调用中,它发送了一个空列表,然后我的let语句失败了,因为它无法处理空列表。如何添加exit子句或使函数在空列表上结束?

(define(first-item L)
(let ([item (first L)])
(cond
[(regexp-match #rx"[-()+*]" (make-string 1 item)) (first-item (rest L))]
[(regexp-match #px"[0-9]" (make-string 1 item)) (first-item (rest L))]
)
)
)

无论该操作是什么,都需要让函数句柄L为空

(define (first-item L)
(if (empty? L)
#| exit |#
#| recursive call |#))

最新更新