ここ再帰セットを生成する方法は次のとおり
-- an example set of cards:
data Card = A | T | J | Q | K
deriving (Show, Read, Eq, Ord, Bounded, Enum)
next intv a
| a == maxBound = []
| otherwise = intv (succ a)
interval a = [ a .. ]
interval2 a = [ [x,y] | x <- interval a, y <- next interval x ]
interval3 a = [ x:y | x <- interval a, y <- next interval2 x ]
interval4 a = [ x:y | x <- interval a, y <- next interval3 x ]
interval5 a = [ x:y | x <- interval a, y <- next interval4 x ]
例えば:
interval A = [A,T,J,Q,K]
interval2 A = [[A,T],[A,J],[A,Q],[A,K],[T,J],[T,Q],[T,K],[J,Q],[J,K],[Q,K]]
interval3 A = [[A,T,J],[A,T,Q],[A,T,K],[A,J,Q],[A,J,K],[A,Q,K],[T,J,Q],[T,J,K],[T,Q,K],[J,Q,K]]
interval4 A = [[A,T,J,Q],[A,T,J,K],[A,T,Q,K],[A,J,Q,K],[T,J,Q,K]]
interval5 A = [[A,T,J,Q,K]]
コード構造の最小量を変更する、 '[[X、Y、Z] | – Mephy
検索機能を使用する場合は、リストやセットの生成に関する質問が数多くあります。 – jberryman