私はだと思います。問題を正しく理解しています。もしそうなら、あなたは建てインせずにこれを書きたい場合は、我々はそれが最高だオールインワンの手順
そうでない場合
(define (match-all xs ys)
(define (member? x ys)
(cond ((empty? ys) #f)
((eq? x (car ys)) #t)
(else (member? x (cdr ys)))))
(define (loop xs ys)
(cond ((empty? xs) #t)
((member? (car xs) ys) #t)
(else (loop (cdr xs) ys))))
(loop xs ys))
を書くことができますandmap
(define (match-all xs ys)
(not (not (andmap (λ (x) (member x ys))
xs))))
(match-all '(1 4 5) '(0 1 2 3 4 5 6)) ;; #t, each (! 4 5) is found in (0 1 2 3 4 5 6)
(match-all '(1 5 9) '(0 1 2 3 4 5 6)) ;; #f, 9 is not found in (0 1 2 3 4 5 6)
をチェックしてください汎用プロシージャを実装し、ジェネリックを使用して新しいプロシージャを構築します。これは、複雑さを減らすことができますし、私はあなたがリスト1のすべての要素がlist2の中に見られる場合にのみ、trueを返したい正しく理解していれば
(define (andmap f xs)
(if (empty? xs)
#t
(let (x (f (car xs)))
(if (eq? #f x)
#f
(and x (andmap f (cdr xs)))))))
(define (member? x ys)
(cond ((empty? ys) #f)
((eq? x (car ys)) #t)
(else (member? x (cdr ys)))))
(define (match-all xs ys)
(andmap (lambda (x) (member? x ys)) xs))
何が変なフォーマットですか? – Sylwester
申し訳ありませんが、それは言語に関係のないリストの単なる表現でしたが、問題はスキーム、lisp、ラケットに関連しています –