Haskellで充足可能性問題
ライブドアブログ(livedoor Blog)| 読みたいブログが見つかるより。リンク先のコメントにもありますが、sequenceを使うとこんな感じでしょうか?
module Main (main) where sat :: Int -> ([Bool] -> Bool) -> [[Bool]] sat n f = [xs | xs <- sequence $ replicate n [True, False], f xs] f :: [Bool] -> Bool f (a : b : c : []) = (a && b) || c main :: IO () main = mapM_ print $ sat 3 f -- => [True,True,True] -- [True,True,False] -- [True,False,True] -- [False,True,True] -- [False,False,True]