楽したいソフトウェアエンジニア

週一でなんか書きたい

今年はHaskellを覚えようとしたけど

結局あまりできてないです

最近になって数値計算するツールを作ろうとHaskell書いてますが、、、色々分からないことが出てきました

小数の四捨五入

計算結果をテストする時に割り切れない数の小数第5位くらいまでだけを確認しようとしたのですがいいやり方が分かりませんでした

最初は1.23456のように小数同士をとして比較したかったのですが、小数を任意の桁数で丸める方法が分からなかったです

小数は扱いが難しいからかな?と思って深掘りせずに次の方法を探しました

Int?Integer?Integral?

整数に丸めるのは簡単にできそうだったので、小数に10^5をかけてその丸め結果と比較すれば簡単かな?と思ってやってみました

一応比較はできてテストは出来たのですが今度はコンパイル警告が出てしまいました

丸めにtruncateを使ったのですがその結果はIntegralで整数リテラルはIntegerだったので型が厳密に合ってないよ、みたいな警告でした

詳しくは割愛しますがHaskellには数値型が色々あり厳密には型も揃えないといけないようなのですが型システムがあまり理解できてないなと思いました

Haskellのよく分かってないこと

次のようなことが分かってないなあと思いました。最初に書籍で勉強したのはまあ良かったけど実用で色々調べないと理解は深まらないですね

  • 型システム。今まで使ってたJavaとかと全然違う感じがする。クラスは操作だけしか定義しないし、型はデータだけ?
  • モノイド。さっぱり。
  • IO。話としてはわかる気がするけど純粋な部分とそうでない部分をうまく分離出来るか?と言われたら出来る気がしない

来年は

流行りっぽいRustを勉強したいので、その時は最初に狙いをある程度決めてからやってみようかなと思いました

とりあえずOOPとの違いとなぜ所有権という概念が出てくるのか、といったあたりが今は気になっています

今年はフワッと入り過ぎて何も残らなかったので、、、

Haskellも綺麗に書けると気持ちいい気がするのでちょっとしたスクリプト書くのに使いたいなと思います