Skip to content.

Sections
Personal tools
You are here: Home » コミュニティ » 写経会 » 第11回 ふつケル写経会

Document Actions
8/18 (金) 19:00-20:30

今回のふつケル写経会は第9章からでした。「ふつうのHaskell」第9章は型と型クラスを紹介しています。Haskellは静的型付言語なのですが、 CやJavaの型やクラスとは考え方が異なる点がいくつかあり大変興味深いところです。今回はお盆の真最中だったこともあり参加者はいつもよりちょっと少なかったんですが、いつもどおりペア(今回はトリオだった)で写経していきます。
Haskellのデータ型の名前空間についていくつか疑問があがりました。このようなちょっとした疑問は一人で本を読み進めているときよりもみんなでワイワイしながら本を読み進めていたり、写経していたりする時に浮かんできます。今回の写経会で出てきた疑問を一つ紹介します。

data Hoge = Hoge { hoge :: String, fuga :: String }

data Fuga = Fuga { fuga :: Int, piyo :: Bool }

上記のコードはHaskellでは「データ型HogeはString型のhogeとString型のfugaというフィールドを持つ」、「データ型 FugaはInt型のfugaとBool型のpiyoというフィールドを持つ」と読みます。C言語で言うところの構造体を2つ宣言したと
いったところです、と言えばなんとなく雰囲気を掴んでいただけるのではないでしょうか。しかしHaskellではこのコードはコンパイルエラーになってしまいます。詳細な説明はここでは控えますが、要するに「Hogeのfuga」と「Fugaのfuga」とが同じフィールド名なのでぶつかってしまってるんですね。
結局今回はここから名前空間のことだったり、関数とデータコンストラクタの違いだとか脱線していって、12,13ページほどしか進捗しませんでした。こういった脱線もふつケル写経会の魅力の一つだと思います。