【发布时间】:2012-01-17 02:05:44
【问题描述】:
来自Data.Dynamics 的函数dynApply 看起来很不错,但实际上它需要一个单态函数类型。所以,你不能写
dynApply (toDyn id) (toDyn 3)
我有一些需要多态返回类型的代码。它们是受限制的形式,例如功能
forall t. (a -> t) -> t
forall t. (a -> t) -> b -> t
forall t. (a -> t) -> b -> c -> t
...
(其中a、b、c 是具体类型)。提前致谢。
【问题讨论】:
-
是否可以枚举可能的返回类型列表(当然,最多到多态
t)? -
@DanielWagner,这种方法可能行得通,谢谢,但我认为考虑到我 [与 t 的不同实例] 的事情范围,这将是太多的努力需要将它们应用到。
-
另外我应该指出有人似乎正在研究它 [hackage.haskell.org/trac/ghc/wiki/PolymorphicDynamic],但还没有任何结果代码。
-
给函数添加类型注解,让它看起来单态?
(id :: Int -> Int) -
@DanBurton,这正是不这样做的重点;传递给函数的参数类型未知。