今回は Reader モナドに触れるということでモナドのすべての Reader モナドのページに載っているサンプルを Cats を使って実装してみた。 Cats を触り始めたばっかりなのでよりよい書き方があるかもしれないが、一旦動くところまで書けたのでコードだけ載せておく。

Cats MTL を使うともう少しわかりやすく書ける部分がありそうな気がしている。

Loading code...

Haskell のコードと比べると次の点が異なっていた。

  • Haskell の asks が Scala では ReaderT.ask[Id, _].map(...)
    • asks 相当の関数は提供されていない(?)
  • Haskell の mapM が Scala では traverse
  • 書き方がよくないのか Haskell のように型推論が上手く働かない 😢

働き始めてからこの手のコードを書く機会がまったく無くなってしまったので、手続き型でコードを書いた方がわかりやすいのはで?と思ってしまった。そのため、上記のコードと同じコードを Reader モナドを使わずに実装して比較してみようと思う。

SuzumiyaAobaのプロフィール画像

SuzumiyaAoba

プログラミング、技術、その他の話題について共有するブログを書いてます。 主にScala、Java、TypeScriptなどの技術について興味あり。

ScalaJavaTypeScriptReact

Buy Me A Coffee