2013-05-03から1日間の記事一覧

Listモナドで非決定性計算

Listモナドを使うと、SICPのamb評価器が行うような非決定性計算ができる。 たとえば、ピタゴラス数を列挙するコードは次のように書ける。 -- ptriples.hs import Control.Monad -- guard関数を使うため ptriples = do a <- [1..] b <- [1..a] -- b <= a c <-…