通过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,但这在这里似乎不相关“@paulgen checker
是一个函数生成器,对吗?它返回新函数(lambda(w).
。这是它唯一能做的事情。因为Lisp是一个语言家族,你想在上面看到的问题通常需要与正在使用的特定语言有关。”(也就是说,关于Lisp的问题一般都不是很好,所以很重要),我迫不及待地建议将[Lisp]标记完全列入黑名单,这样人们就不能用它来提问了。