私はDrRacketで作業しており、「プレフィックス」関数(#langラケット)を作成しようとしています。2つのリストを入力として受け取り、がnullであるか、の先頭に等しい#t
場合に出力する必要があります。pf
ls
pf
私の問題は、がプレフィックスではなく、ls
nullls
でない場合、コードが何も返さないように見えることです。#f
ifステートメントのinをのような他の何かに置き換えると'()
、それは適切に返されますが、'()
代わりにをキャプチャしてそれに基づいて出力しようとすると、意味のない結果が得られます('()
たとえば、 '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)])
))