【问题标题】:How to apply a dynamic polymorphic function to a dynamic value?如何将动态多态函数应用于动态值?
【发布时间】:2019-07-22 02:28:48
【问题描述】:

我想从Just 函数中创建一个动态值,以便能够将其应用于toDyn (1 :: Int)

我的第一个困难是我需要一个Typeable 函数。但是这不起作用:

createMaybe :: (Typeable a) => a -> Maybe a
createMaybe = Just

toDyn createMaybe

使用No instance for (Typeable a0) arising from a use of ‘toDyn’编译失败

有没有办法解决这个问题?

【问题讨论】:

    标签: haskell dynamic reflection


    【解决方案1】:

    正如the docs for Data.Dynamic 所说,

    Dynamic 只能表示一个单态值;尝试从多态类型表达式创建 Dynamic 类型的值将导致歧义错误(请参阅 toDyn)。

    也许您正在寻找类似以下内容之一的内容?

    toDynJust :: Typeable a => a -> Dynamic
    toDynJust = toDyn . Just
    

    还是内置的fromDynamic :: Typeable a => Dynamic -> Maybe a?

    也许如果您透露更多您正在尝试做的事情,而不是您尝试如何做,那么人们可以更好地判断这是否是正确的方法。 :-)

    【讨论】:

    猜你喜欢
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多