# Reading Rename.hs (version 0.9.0) ## 2022-09-18 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 $$}