bonotakeの日記

ソフトウェア工学系研究者 → AIエンジニア → スクラムマスター・アジャイルコーチ

リストモナドの非決定性

ってこういうやつの事?

nonDet :: [Int] -> [Int] -> [Int]
nonDet [] _ = []
nonDet _ [] = []
nonDet xs ys = [(x + y)| x <- xs, y <- ys]

モナド風味で書くと

nonDet2 :: [Int] -> [Int] -> [Int]
nonDet2 [] _ = []
nonDet2 _ [] = []
nonDet2 xs ys = do
	x <- xs
	y <- ys
	return (x + y)

実行すると

Main> nonDet [1..3] [1..4]
[2,3,4,5,3,4,5,6,4,5,6,7]

みたいな。
んー…

てか、

Haskellのコード久々に書いた、俺w

注:bonotakeは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。