コラッツ予想がとけたらいいな2

自分の考察を書いていきます。

foldl, foldrを元にした、蓄積変数付き、脱出可能なloop関数 その2

前記事:

参考記事:

継続モナドCont r aを使うようにした。

myLoop :: (accT -> a -> (accT -> b) -> b) -> (accT -> b) -> accT -> [a] -> b
--       ↓
-- 引数の順番を変える
--       ↓
myLoop :: (accT -> a -> (accT -> b) -> b) -> accT -> [a] -> (accT -> b) -> b
--       ↓
-- type Cont r a = (a -> r) -> r
--       ↓
myLoop ::                          (accT -> a -> Cont b accT) -> accT -> [a] -> Cont b accT
--       ↓
foldlM :: (Foldable t, Monad m) => (b ->    a -> m    b     ) -> b    -> t a -> m    b

「おめでとう!myLoopfoldrContにしんかした!」
mapContがあるのだからfoldrContがあっても良いと思う。

色々やってたら、foldlCont = foldlM一発で出来た。
そしてfoldlMfoldrで定義されている。
一周回って戻ってきた感じだ。

.
.