wvogel日記

自分用の技術備忘録が多めです.

ついでに、型クラスも軽く勉強してみる。
http://www.sampou.org/haskell/report-revised-j/basic.html
にある相関図はとても分かり易い。
なるほど。
前回Combinate関数を作ったとき、
NumではなくIntegralを使うとコンパイルが通った理由がよくわかる。


で、Readクラス。
ReadやShowを
何気なしに普段のソースコードの中で使っているけれど、なるほど。
関数とIO以外の全ての型はこれらのインスタンスなんですね。
だからちょいちょい使うことになるし実際使えるわけだ。
まあ、あんまり使わない方が良いんだろうなとは思いますけど.....




去年、ふつけるで”型クラス”の章を読んだときは、まだC++でのクラスの概念が強すぎて
こんなものにどんな使い道があるんだ?
型のクラスとかどういうこと?
状態だったけれど、最近型クラスの凄さが分かり始めた。


型の相関関係がとても明らかになる。
そしてこれをCやC++とは違って完全に分離し(つまり無言の型変換などをなくし)てやることで、型を意識したプログラミングとなり、データの流れを確実なものに出来る上、可読性が向上するし、デバッグも容易。
Haskellが型プログラミングと言われる(言われてるっけ?)のにとても納得。
凄いなー。


そしてCで書くときにはまあまず感じることのない、型の意義、重要性を身をもって体験できる。
Cなんて文字列処理なんてあって無いようなものだし。


Haskellの特徴はいくつかあるけれど、(遅延評価、参照透明性、モナド、型クラスとかかな?)
その中でも型クラスは、かなりトップレベルでHaskellを特徴づけている気がする。
うん。そう思う。



というわけで。
なんだか型クラスに対する感想を綴っただけのようになってしまったけれど笑


そろそろ寝ようかな