galaxy-sixth-sensey - MaybeTを使ってリファクタリングしたずら
2017/07/01
MaybeTを使ってリファクタリングしたずら

 オラ、今日はLisp処理系の作成を進めてたずら。

 最初はIOの文脈で<-するために、Monadの順序の入れ替え用のこんな関数を使って連鎖してたずら。

flipUp :: Maybe (IO a) -> IO (Maybe a)

けどオラはここで、奇妙な既視感を覚えた。 「この連鎖、何かに似てる」……って。

 この正体は「MonadTransのモナドバインド(>>=)」だったずら。

 MonadTransであるMaybeT……を使ったMaybeT IOで上のrepl数を書き換えると

こう何度もfmapしてたものをこのように……

平坦なコードにできるずら! しかもMaybeT IOのrepl関数内ではMaybeの性質を完全に文脈に持たせてるから、 IOのときのようにいちいちそれがMaybe aの値であることを意味しなくて済むずら〜♪

ほら、各名前にmaybeほにゃらら〜〜って命名をしないようにしたずら。 だってそこには、Maybeの意味合いはないから……♪

参考ページ


この記事はこちらから修正リクエストを送ることができます。
MaybeTを使ってリファクタリングしたずら - github
ゴミ箱ボタンの左にある、鉛筆ボタンを押してね!