1. ホーム
  2. scheme

[解決済み] SchemeにおけるMemvの手続き

2022-02-10 02:21:35

質問

(define memv2
   (lambda (x l)
    (cond
     ((null? l) #f)
     ((eqv? (car l) x) 
        cdr l)
      (else
        (memv2 x (cdr l))))

このコードは、Schemeに内蔵されているmemv関数の複製として、私のノートに掲載されたものです。この状況で#fが何をしているのか、誰か説明してくれないかな。ループを抜けるのでしょうか?

(memv は要素とリストを取り込み、要素の位置から先のリストを返す。例えば、(memv 2 '(1 2 3 4 5)) は (2 3 4 5)) を返す)

どのように解決するのですか?

その #f の値は、プロシージャがリストの走査を終了したときに返されます。これは、検索された要素が見つからなかったことを意味し、再帰を終了します。