SourceGraphでの解析結果(data宣言の場合)その2
同じ関数内で同じデータ型を複数回使った場合ちゃんと回数はわかるのか,ということと,データコンストラクタが複数ある場合はちゃんと型コンストラクタもわかるのかということでやってみた.
module Main where data Person = Man String | Woman String deriving Show main = do print (Man "tarou") print (Woman "hanako") print (Man "yoshizumi")
結果.
fromList [ (LocalMod {modName = "Main"}, PM {moduleName = LocalMod {modName = "Main"}, imports = fromList [], exports = fromList [Ent {inModule = LocalMod {modName = "Main"}, name = "main", eType = NormalEntity}], dataDecls = fromList [("Person",fromList [((Nothing,"Man"), Ent {inModule = LocalMod {modName = "Main"}, name = "Man", eType = Constructor "Person"}), ((Nothing,"Woman"),Ent {inModule = LocalMod {modName = "Main"}, name = "Woman", eType = Constructor "Person"})])], classDecls = fromList [], instDecls = fromList [], topEnts = fromList [Ent {inModule = LocalMod {modName = "Main"}, name = "main", eType = NormalEntity}], virtualEnts = fromList [], funcCalls = fromOccurList [(FC {fromEntity = Ent {inModule = LocalMod {modName = "Main"}, name = "main", eType = NormalEntity}, toEntity = Ent {inModule = LocalMod {modName = "Main"}, name = "Man", eType = Constructor "Person"}, callType = NormalCall}, 2), (FC {fromEntity = Ent {inModule = LocalMod {modName = "Main"}, name = "main", eType = NormalEntity}, toEntity = Ent {inModule = LocalMod {modName = "Main"}, name = "Woman", eType = Constructor "Person"}, callType = NormalCall}, 1), (FC {fromEntity = Ent {inModule = LocalMod {modName = "Main"}, name = "main", eType = NormalEntity}, toEntity = Ent {inModule = UnknownMod, name = "print", eType = NormalEntity}, callType = NormalCall}, 3)]})]
ちゃんと呼び出し回数とかもちゃんとわかるし,型コンストラクタもわかるみたい.