エントリーの編集
![loading...](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/common/loading@2x.gif)
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
Listモナドで非決定性計算 - ももいろテクノロジー
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
![アプリのスクリーンショット](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/entry/app-screenshot.png)
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
Listモナドで非決定性計算 - ももいろテクノロジー
Listモナドを使うと、SICPのamb評価器が行うような非決定性計算ができる。 たとえば、ピタゴラス数を列... Listモナドを使うと、SICPのamb評価器が行うような非決定性計算ができる。 たとえば、ピタゴラス数を列挙するコードは次のように書ける。 -- ptriples.hs import Control.Monad -- guard関数を使うため ptriples = do a <- [1..] b <- [1..a] -- b <= a c <- [a..a+b] -- c を斜辺とすれば a <= c かつ三角不等式より c <= a+b guard (a*a + b*b == c*c) return (b,a,c) -- 小さい数から並べる main = mapM_ print ptriples $ runghc ptriples.hs (3,4,5) (6,8,10) (5,12,13) ... これは、次のPythonコードとほぼ同じように動作する。 # -*- coding: u