第2回 関数型言語勉強会 大阪でしゃべってきてた
もう一か月以上前じゃないですか・・・
ということで、しゃべってきました。
C# (や Java) を使っているときよりも型の力を借りましょう、ということを主軸に話しました。
C# では色々と「型を定義することをためらわせる」力が働きます。
それに慣れていると、F# を使っても型を全然定義せずに string や int といった型をそのまま使ってしまいます。
Better C# として F# を使うのであればそれでも全然かまわないと思うのですが、やはり F# であることの恩恵は知ってほしいし感じてほしいです。
で、発表では簡単な値クラスを例にとって説明しました。
Twitter の反応を見ると、「そもそも Equals や GetHashCode を実装するようなことがない」との意見がありましたが、これの原因を考えてみてほしいのです。
もしそれが、面倒だからという理由なのだとしたら、それこそが「型を定義することをためらわせる力」です。
値クラスを導入することで、コードの表現力は増し、より説明的な記述をすることができ、型チェックも付いてきます。
型を定義したくないがためにコメントや変数名にその情報をエンコードしているのであれば、それはその言語が持つ問題として認識しましょう。