4
我一直在DrRacket中嘗試創建一個「前綴」函數(#lang racket)。它應該以兩個列表作爲輸入,並且如果pf
爲空或者等於ls
的開頭,則應該輸出#t
。Scheme(球拍)如果在cond中沒有返回任何東西
我的問題是,我的代碼似乎沒有返回任何東西,當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)])
))
那麼,這確實回答我的問題和解決問題,謝謝。 – user1680546