从列表中过滤与方案中的字符匹配的单词

Filtering words from a list that matches my char in scheme

刚开始学scheme。 我需要创建一个谓词函数来过滤一个列表(可能是空的)并且只在它们与 char:

匹配时输出
(filter-word '((#\g #\a #\m #\e)
               (#\d #\o #\l #\l)
               (#\d #\i #\c #\e))
              #\a)

输出:

((#\g #\a #\m #\e))

我正在尝试使用 filter 和 member,但我不知道如何构建这个函数,我不知道是否可以同时使用 filter lambda 和 member。 对于这种情况,地图是更好的选择吗?

(define (filter-word words ch)
  (cond
    [(null? words) words]
    [(filter
     (λ (words)(member? ch (words)) words))]))
     

我知道不完整,但在这种情况下,输出是#

可以直接使用filter,不需要额外的case。这应该有效:

(define (filter-word words ch)
  (filter (lambda (word) (member ch word))
          words))

例如:

(filter-word '((#\b #\u #\s)
               (#\b #\a #\r)
               (#\c #\a #\r))
             '#\b)
=> '((#\b #\u #\s) (#\b #\a #\r))

(filter-word '((#\b #\u #\s)
               (#\b #\a #\r)
               (#\c #\a #\r))
             '#\c)
=> '((#\c #\a #\r))