Haskell中IO操作场景下打印变量类型的实现方法
首先需要在代码头部导入Data.Typeable模块,typeOf函数由该模块提供,要求对应值的类型实现了Typeable类型类,Haskell内置的所有基础类型和常用类型默认都实现了该类。
你只需要在finalMappedContents定义后的IO逻辑位置,添加一行print $ typeOf finalMappedContents即可实现类型打印,修改后的代码参考如下:
import Data.Typeable -- 必须添加的导入语句 -- 此处为你原有代码的其他导入、函数定义部分 addUpSameWord = undefined -- 替换为你实际的函数实现 mappedContents = undefined -- 替换为你实际的mappedContents定义 main = do args <- getArgs --args is a list. -- 原有省略的其他逻辑 let finalMappedContents = addUpSameWord mappedContents print $ typeOf finalMappedContents -- 新增的类型打印语句 -- 原有后续的IO逻辑
注意事项
- 如果你使用GHC 7.8以下的旧版本,自定义类型需要手动派生
Typeable实例才能使用typeOf,新版本GHC默认支持绝大多数常用类型的自动派生。 - 最终打印输出的就是
finalMappedContents的完整类型签名。
内容的提问来源于stack exchange,提问作者Niki
相关产品推荐
相关产品推荐

