【问题标题】:any workarounds to get polymorphic functions in Data.Dynamics?在 Data.Dynamics 中获得多态函数的任何解决方法?
【发布时间】: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
...

(其中abc 是具体类型)。提前致谢。

【问题讨论】:

  • 是否可以枚举可能的返回类型列表(当然,最多到多态t)?
  • @DanielWagner,这种方法可能行得通,谢谢,但我认为考虑到我 [与 t 的不同实例] 的事情范围,这将是太多的努力需要将它们应用到。
  • 另外我应该指出有人似乎正在研究它 [hackage.haskell.org/trac/ghc/wiki/PolymorphicDynamic],但还没有任何结果代码。
  • 给函数添加类型注解,让它看起来单态? (id :: Int -> Int)
  • @DanBurton,这正是不这样做的重点;传递给函数的参数类型未知。

标签: haskell dynamic-typing


【解决方案1】:

不,多态函数与Data.Dynamic 不兼容。要做到这一点,需要一个多态的Data.Typeable 并在运行时使用类型检查器。

但是,此功能有一张票:Polymorphic Data.Dynamic

【讨论】:

    猜你喜欢
    • 2016-02-29
    • 2011-05-09
    • 2021-07-15
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多