-- Generate all 1330 possible answers in the first stage
-- by using the List Conprehension to select three element
-- from a collection of all pitches.
allChord :: GameState
allChord = Set.toList $ Set.fromList [ Set.fromList [a,b,c] |
    a <- allPitches, 
    b <- [x | x <- allPitches, x /= a],
    c <- [x | x <- allPitches, x /= a, x /= b]]
    where allPitches = [ x:[y] | x <- "ABCDEFG", y <- "123"]

-- Generate a list which select one element from each patterns.
allChord :: GameState
allChord = Set.toList $ Set.fromList [ Set.fromList [a,b,c] |
    a <- allPitches, 
    b <- [x | x <- allPitches, x /= a],
    c <- [x | x <- allPitches, x /= a, x /= b]]
    where allPitches = [ x:[y] | x <- "ABCDEFG", y <- "123"]

-- Generate a list which select one element from each patterns.
allChord = Set.toList $ Set.fromList [ Set.fromList [a,b,c] |
    a <- allPitches, 
    b <- [x | x <- allPitches, x /= a],
    c <- [x | x <- allPitches, x /= a, x /= b]]
    where allPitches = [ x:[y] | x <- "ABCDEFG", y <- "123"]

-- Generate a list which select one element from each patterns.