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)]})]

ちゃんと呼び出し回数とかもちゃんとわかるし,型コンストラクタもわかるみたい.