获取/返回函数的类型

时间:2018-05-27 12:21:10

标签: haskell types

有没有办法在Haskell中获取并返回函数的类型?

假设我有这种功能:

foo :: Int -> Int -> String
foo a b = (show a ++ show b ++ "hello")

从上面的代码中,我真正想要的是将这种元组作为函数的返回值:

> getTypeTuple foo
(Int, Int, String)

据我所知,类型本身不能被视为表达式的一部分,所以我想在Haskell中运行时不可能有这种特性。 (静态类型!!)

那么Haskell中会有任何类似的替代或预处理器功能吗?

编辑:我认为我真正想要的是GHCi中:t命令的Haskell实现。

1 个答案:

答案 0 :(得分:1)

您可以使用Template Haskell进行元编程,这样您就可以获得函数的类型。有关如何获取类型的信息,请参阅this question