我想用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’
是否有解决方法?
答案 0 :(得分:1)
正如the docs for Data.Dynamic
所说,
Dynamic
只能表示一个单态值;尝试从多态类型的表达式创建类型为Dynamic
的值将导致歧义错误(请参见toDyn
)。
也许您正在寻找以下内容之一?
toDynJust :: Typeable a => a -> Dynamic
toDynJust = toDyn . Just
还是内置的fromDynamic :: Typeable a => Dynamic -> Maybe a
?
也许,如果您揭示了更多您想做的事情,而不是您想如何做,那么最好能说出这是否是正确的方法。 :-)