2012-01-17 11 views
2

dynApplyからData.Dynamicsまでは非常に美しく見えますが、実際には単相性の関数型が必要です。したがって、あなたは書くことができませんでしたData.Dynamicsで多態関数を取得するための回避策はありますか?

dynApply (toDyn id) (toDyn 3) 

多型の戻り値の型が必要なコードがあります。それらは制限された形式である。関数(abcコンクリート型である)

forall t. (a -> t) -> t 
forall t. (a -> t) -> b -> t 
forall t. (a -> t) -> b -> c -> t 
... 

。前もって感謝します。

+0

は、可能な戻り値の型のリストは、(当然の多型 'T'、まで)を挙げることができますか? –

+0

@DanielWagner、このアプローチはうまくいくかもしれませんが、私はそれらを適用する必要があるものの範囲を考慮して、あまりにも多くの努力をすると思います。 – gatoatigrado

+0

また、誰かがそれに取り組んでいるようですが(http://hackage.haskell.org/trac/ghc/wiki/PolymorphicDynamic)、結果のコードはまだありません。 – gatoatigrado

答えて

3

いいえ、多型関数はData.Dynamicと互換性がありません。これを行うには、多型Data.Typeableと、実行時に型チェッカーを使用する必要があります。

そこはしかし、この機能のためのチケットです:Polymorphic Data.Dynamic

関連する問題