如何在haskell中获取值类型

时间:2014-10-13 17:43:00

标签: haskell types

我正在尝试调试,并希望能够获得一个返回值类型的函数。 这样的事情有可能吗?

我不想:t,我不想在代码中使用

如:

[showType i | i <- [0..5] ]

返回

[Int,Int,Int,Int,Int]

2 个答案:

答案 0 :(得分:8)

Typeable类在编译时唯一地编码每个类型,并可用于此目的:

import Data.Typeable

showType :: Typeable a => a -> String
showType = show . typeOf

结果为:

*Main> showType (+)
"Integer -> Integer -> Integer"
*Main> showType [1..5]
"[Integer]"
*Main> map showType [1..5]
["Integer","Integer","Integer","Integer","Integer"]

所有这些都说,Bheklilr是对的。你真正想要的可能是不同的东西,所以更多的细节可以帮助我们。

答案 1 :(得分:4)

也许您更想要TypedHoles之类的东西。它允许你编写_而不是某个表达式,编译器会告诉你这个“洞”有什么类型,或者应该有什么类型。