src/Rename.hs を端から確認していこう。みた行を塗りつぶしていく感じ(古の)で。
今日見た行:1, 2, 27, 28, 29
scanDecls の型はこう:
scanDecls :: [A.Decl] -> RN ([A.ValueDecl], [A.ClassDecl], [A.InstDecl])
で、まず最初に、scanDecl1 で宣言を値の宣言、クラスの宣言、インスタンス宣言の3種に分類しつつ、1パス目の何かをやっている。scanDecl1 の呼び出しはこんな感じ:
(dss, cdss, idss) <- unzip3 <$> mapM scandecl1 decls
では、scanDecl1 の定義を順に見ていこう。l.135 - l.322 と、それなりの分量がある。しかも、未実装がそこそこ残っているようだ。
あ、その前に、Absyn.Decl の定義を確認しておくのがいいだろう:
data Decl = VDecl ValueDecl
| CDecl ClassDecl
| IDecl InstDecl
| FixSigDecl Fixity Int [Name]
| DefaultDecl [Type]
| ForeignDecl FDecl
| SynonymDecl Type Type
| DataDecl (Maybe Type, Type) [Constr] (Maybe [Type])
| NewtypeDecl (Maybe Type, Type) [Constr] (Maybe [Type])
deriving Show