あどけない話スマートフォン用の表示で見るあどけない話インターネットに関する技術的な話など2018-03-06あなたの知らないSemigroupの世界Haskell自分で定義するデータの中には、足し算したくなるようなデータがある。送信と受信のカウンターを定義したとしよう。Show)これは以下のように足し算できると嬉しいだろう。インスタンスにすべきではない。このデータ型に掛け算は定義できないからだ。みたいな関数を定義するのはかっこ悪い。別名であるので、以下のようなコードが書ける。読み込むと以下のようなエラーが出る。その疑問に答えるのがこの記事の主旨である。Monoidのメソッドにはしてもらえなかった。それは一部の人に、SemigroupをMonoidのスーパークラスにするという野望があったからだ。8.4ではSemigroupがMonoidのスーパークラスとなり、Metricsに対する(<>)の定義がないために、エラーが出たという訳だ。今後どのようなコードを書けばよいかという疑問に答えるためには、GHCの各バージョンでの状況を把握しなければならない。mappendMonoid型自体はPreludeの仲間入りを果たしたが、(<>)は明示的にimportする必要がある。親子関係がひっくり返っていて、なんだかなぁという感じである。