我一直在 DrRacket 工作,试图创建一个“前缀”功能(#lang 球拍)。它应该将两个列表作为输入,#t
如果pf
为 null 或等于ls
.
我的问题是我的代码似乎根本不返回任何东西,pf
而不是前缀ls
并且ls
不为空。如果我#f
用其他东西替换 if语句'()
中'()
的'()
'不为空,或者'()
不等于'()
)。它似乎与在 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)])
))