【发布时间】:2012-09-10 21:02:55
【问题描述】:
我一直在 DrRacket 工作,试图创建一个“前缀”功能(#lang racket)。它应该接受两个列表作为输入,如果pf 为空或等于ls 的开头,则应该输出#t。
我的问题是当pf 不是ls 的前缀并且ls 不为空时,我的代码似乎根本没有返回任何内容。如果我将 if 语句中的 #f 替换为其他内容,例如 '(),它将正确返回,但如果我尝试捕获 '() 并基于它给出输出,它会给出不正确的结果'没有意义(比如说'() 不为空,或者'() 不等于'())。它似乎与在 cond 语句中使用 if 语句有关。谁能告诉我它在做什么,或者为什么?是否有可能使这段代码正常工作,还是我需要以另一种方式重新编写它?
感谢您的帮助!
(define prefix
(lambda (pf ls)
(cond
[(null? pf) #t]
[(null? ls) #f]
[(if (equal? (car pf) (car ls)) (prefix (cdr pf) (cdr ls)) #f)])
))
【问题讨论】:
标签: if-statement scheme racket