# 036 deriving 構文をサポートする [↑up](bunny_notes) - issued: 2020-04-16 - 分類: B 機能追加 - status: Open ## 概要 deriving ... によるスーパークラスとデフォルトのメソッド定義を実装する。 ## 調査メモ ### 2020-04-15 アイデアメモ(p.325 あたり) deriving の実装は、scandecl で dataDecl をスキャンしたときだろう。 そのときに、instanceDecl も発生させればよいように思われる。 デフォルト実装は、Prim.show, Prim.eq, Prim.<= を呼び出す形でどうか。 - ${show = Prim.show} - ${(==) = Prim.eq} - ${(<=) = Prim.<= [LT, EQ, GT]} など。Ord(や、おそらく Enum) に必要な順序も、ここでなら与えられるだろう。 ### 2020-04-18 [017](bissue017) に対処したことで、sample138, 139 はエラーするようになっている。 そのため、それぞれ derivingshow, derivingshow2 として testcases に格下げした。 ### 2020-05-09 scanDecl において、deriving Show にであったら、 $$
{
instance Show Hoge where
  show = Prim.derivedShow
$$}

という宣言も生成するようにしたらよさそう。

文脈の推測については、[GHCマニュアルの記述](http://www.kotha.net/ghcguide_ja/7.0.4/deriving.html)
もみよう。

## 2021-11-04

deriving Show については、[078](bissue078) もみよ。