Reading Rename.hs (version 0.9.0)

2022-09-18 (Sun)

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