我一直在DrRacket工作,试图创建一个"前缀"功能(#lang球拍).它应该将两个列表作为输入,#t
如果pf
为null或者等于开头,则应输出ls
.
我的问题是,当我的代码pf
不是前缀ls
而且ls
不是null 时,它似乎根本不返回任何内容.如果我用#f
if语句替换if语句,比如'()
,它将正确地返回,但如果我尝试捕获'()
并基于它而给出输出,它会给出没有意义的结果(比如说是'()
不是't null,或者'()
不相等'()
).它似乎与在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)])
))
Run Code Online (Sandbox Code Playgroud)