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