我一直在 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)])
))