2007-11-14 [長年日記]
λ. HaskellのDynamicはあまり使えない
現在のHaskell(GHC)のDynamicは言語的なサポートがないため、Cleanのそれに比べると記述能力の点で非常に貧弱で、ユーザー定義の型を例外として投げるとかそのくらいの用途にしか使えない。
例えば、dynFst (toDyn (a,b))
= Just (toDyn a)
を満たすような関数 dynFst :: Dynamic → Maybe Dynamic
すら a, b の型を予め特定の型に決めないと記述することが出来ない。fromDyn等によって値を取り出す際には、Typeableのインスタンスとして型を取り出すわけだけど、これはTypeRepで型を指定していることに等しく、TypeRepは型変数を含まないため。
言語拡張にしてしまえば、このような関数を(安全に)記述できるようにすることはそう難しくはないはずなんだけど。