私はサブリストを実装する必要がありますか?蓄積を使用する1ライナー関数として。 set1がset2であれば真を返すと仮定します。このようなサブリストを実装していますか?ラケットに蓄積を使用
何か:
(define subset?
(lambda (set1 set2)
(accumulate member? (car set1) (lambda (x) x) set2)))
正直なところ、私は蓄積がメンバーと連携すると仮定される方法にちょうど困惑していると思う、またはメンバーは、オペレータのためにも、正しい選択である場合。
マイ蓄積機能は次のとおりです。
(define accumulate
(lambda (op base func ls)
(if (null? ls)
base
(op (func (car ls))
(accumulate op base func (cdr ls))))))
とメンバー?:
(define member?
(lambda (item ls)
(cond ((null? ls) #f)
((equal? item (car ls)) #t)
(else (member? item (cdr ls))))))
あなたが他の関数を使用することはできません:
だから、これは
subset?
の可能な定義はありますか?あなたがいない場合、これは乱雑になります。もしそうなら、最初に、 'set1'の要素が' set2'のメンバであるかどうかを決めるブール値のリストを得る方法を考えてください。そのリストは簡単に蓄積されます。 – molbdnilo