オラ、今日はLisp処理系の作成を進めてたずら。
最初はIOの文脈で<-
するために、Monadの順序の入れ替え用のこんな関数を使って連鎖してたずら。
けどオラはここで、奇妙な既視感を覚えた。 「この連鎖、何かに似てる」……って。
この正体は「MonadTrans
のモナドバインド(>>=
)」だったずら。
MonadTrans
であるMaybeT
……を使ったMaybeT IO
で上のrepl数を書き換えると
こう何度もfmapしてたものをこのように……
平坦なコードにできるずら! しかもMaybeT IO
のrepl関数内ではMaybe
の性質を完全に文脈に持たせてるから、 IO
のときのようにいちいちそれがMaybe a
の値であることを意味しなくて済むずら〜♪
ほら、各名前にmaybeほにゃらら〜〜って命名をしないようにしたずら。 だってそこには、Maybe
の意味合いはないから……♪
参考ページ
この記事はこちらから修正リクエストを送ることができます。
MaybeTを使ってリファクタリングしたずら - github
ゴミ箱ボタンの左にある、鉛筆ボタンを押してね!