私はサブセットを作成しようとしていますか、メンバーですか?事前定義されたフィルタ関数とマップ関数(またはマップ、マップ)のいくつかのバリエーションを使用して、交差関数を計算します。Scheme - 複数の引数を持つ場合、 'map/filter'で関数を使用するにはどうすればよいですか?
"member?"関数は、ある要素がリストのメンバーであるかどうかをチェックすることになっています: "same-elem?"という関数を使っていますか?
(define same-elem?
(lambda (e1 e2)
(cond ((and (set? e1) (set? e2)) (same-set? e1 e2))
((and (number? e1) (number? e2)) (= e1 e2))
(else (equal? e1 e2)))))
「サブセット?」は、次のようになります。チェック1セット内の要素は、別のセットの一部である場合:「交差点」関数は、2組の交差点を返すことになっている
(define subset?
(lambda (s2 s1)
(andmap (curry member? s2) s1)))
:
(define intersection
(lambda (s2 s1)
(filter (curry member? s2) s1)))
理由私は「カレーを使用しています'関数は、このスタックオーバーフロースレッドの解決策に従おうとしたためです:Scheme/Racket filter/map multiple arguments私の呼び出された関数に第2引数を渡そうとしています。しかし、それは動作しません。
これらの関数のいずれかを呼び出すと、メンバーのmy ormapコールのリストを期待しているというエラーが出力されます。関数が要素を持っています。奇妙な部分は私のメンバーですか?関数は2〜3分前までうまくいきました...私は何かに触れていません!
私はプログラミングの初心者です。私は全くSchemeを初めて使っています。 map/filterの呼び出された関数に引数が1つしかない場合は、マップ/フィルタ関数を使用する方法を知っています...しかし、複数の引数を持つ場合、これをどうやって処理しますか?助けてください。
編集:私が以下で選んだ解決策は、カレーでは機能しません。しかし、カリー関数を削除して、代わりに無名関数を書くとうまくいきます。このよう
:
(define member?
(lambda (e s)
(ormap (lambda (x)
(same-elem? e x)) s)))
手続き '同じセット'あなたは 'セット等しいを意味した' –
同じセットを、定義されていませんか?定義されていません。私はポストに追加するのを忘れてしまった。 – Schytheron