为了帮助调试和编写Haskell程序,我正在考虑使Haskell程序能够作为程序的一部分输出变量的类型。例如,我有以下代码:
listHEADFiles :: ReaderT LgRepo IO ()
listHEADFiles = do
ref <- resolveReference $ T.pack "HEAD"
case ref of
Nothing -> fail "Could not resolve reference named 'HEAD'"
Just reference -> do
obj <- lookupObject reference
case obj of
CommitObj commit -> do
objects <- listAllObjects Nothing (commitOid commit)
for_ objects (\case
TreeObjOid toOid -> do
tree <- lookupTree toOid
treeEntries <- sourceTreeEntries tree
entries <- lift $ treeEntries
outputTypeOf entries
)
_ -> fail "'HEAD' is not a commit object"
我想输出变量entries
的类型,因为我不理解在提取该值后到底发生了什么。我可以查看文档,但手动计算总是让我感到困惑。当我的程序执行时,我想确定它的确切类型。换句话说,我希望在我的程序中使用ghci
中:t
的功能。这是可能的吗?