通过scheme中的函数递归问题

通过scheme中的函数递归问题,scheme,Scheme,所以我有一个拼写检查程序。该程序的功能是以四种不同的方式对单词进行散列,并将这些散列值放入列表中。提供有效单词的字典,并对字典中的每个单词执行相同的操作。最终结果将是每个单词都有一个唯一的哈希值列表。然后,我可以提供一个单词作为输入,生成一个哈希值列表,并将其与字典中的每个单词进行比较,以查看拼写是否正确 (define gen-checker (lambda (hashfunctionlist dict) (lambda (w) (cond ((null?

所以我有一个拼写检查程序。该程序的功能是以四种不同的方式对单词进行散列,并将这些散列值放入列表中。提供有效单词的字典,并对字典中的每个单词执行相同的操作。最终结果将是每个单词都有一个唯一的哈希值列表。然后,我可以提供一个单词作为输入,生成一个哈希值列表,并将其与字典中的每个单词进行比较,以查看拼写是否正确

(define gen-checker
  (lambda  (hashfunctionlist dict)
      (lambda  (w)
        (cond ((null? dict) 'False)
              (else
                   (if (equal? (functions hashfunctionlist (car dict)) 
                       (functions hashfunctionlist w))
                          '(True)

                     (gen-checker hashfunctionlist (cdr dict) )
                     ))))))
这是我做这件事的代码。
它包含3个参数:哈希函数列表、单词和字典中的单词列表。我遇到的唯一问题是它不会在行中递归(genchecker hashfunctionlist(cdr dict))。它只是说,
#看看你的定义,
genchecker
是一个接受两个参数并生成一个过程的过程(lambda(w)…
,你正在给它传递两个参数。你打算把
w
传递给递归吗?另一方面,Scheme布尔值是
#f
#t
。没有必要发明你自己的。@molbdnilo另一方面,Scheme是Lisp。Lisp是一个语言家族。也许你指的是Common Lisp,但这在这里似乎不相关“@paul
gen checker
是一个函数生成器,对吗?它返回新函数
(lambda(w).
。这是它唯一能做的事情。因为Lisp是一个语言家族,你想在上面看到的问题通常需要与正在使用的特定语言有关。”(也就是说,关于Lisp的问题一般都不是很好,所以很重要),我迫不及待地建议将[Lisp]标记完全列入黑名单,这样人们就不能用它来提问了。