haskell-jp / questions #105 at 2024-01-24 08:05:35 +0900

質問です
関数型プログラミングでdbアクセスしようとする時に、どうしても副作用が多いコードになってしまう気がします
何か良い例は無いでしょうか...?
私はライブラリはpersistent+esqueletoとか使ってるんですが、
DBはネットワークアクセスかファイルシステムアクセスするからまあ仕方ないと考えています。
むしろ副作用を型で表してトランザクションとか制御出来るのが気持ちいいかなあと。

それでも分離は一応やって、データを加工したりするのは純粋関数にして、クエリを純粋関数で定義して、上位レベルでデータを取ってきてそれを引数にして呼び出すとかやってます
ありがとうございます!とてもわかりやすいです♪

まずはライブラリ等確認してみます!
分離を実現するとしたらやはり加工前と加工後なのですね...
IOが多いコードを揶揄する風潮がありますが、気にしなくていいです。
純粋なコードとIOの割合は、対象とする問題領域によって決まります。
数値計算なら純粋なコードが多いでしょうし、通信ならIOだらけになります。
あと、初心者の方にお勧めなのは、まずIOだらけのコードを書いて、そから純粋な部分を見つけて切り出す練習をすることですね。
教科書だと純粋なコードを先に書いて、後からIOで包むような感じですけど、現実的には逆なんです。
確かに問題領域ごとにIOの割合は変わりますよね... ありがとうございます:sob: