/ /重複のないパワーセット-haskell、機能プログラミング、パワーセット

重複なしのパワーセット - haskell、関数型プログラミング、powerset

Haskellでpowerset関数を作成する必要がありますこれは、入力リストに何が入力されているかに関係なく、セットを取得し、重複エントリなしでパワーセットを出力します。たとえば、[1,1]は[[]、[1]]を返す必要があります

    powerset [] = [[]]
powerset (x:xs) = union((powerset xs)) (map (x:) (powerset xs))

unionは以前に定義された関数です重複せずに2つのセットを結合します。上記のコードの問題は、重複を元のエントリとしてカウントするため、入力[1,1]が[[]、[1]、[1]、[1,1]]を返すことです。

何か案は? powersetをトリガーする前に、入力リストと空のリストでunionを使用して重複をスクラブすることを考えましたが、どのように見えるかわかりません。

回答:

回答№1は5
  1. 指定されたリストからすべての重複を削除します(使用できます nub 関数)。

  2. 現在使用しているアルゴリズムを実行します。