IO 操作に裏打ちされたジェネリック プロパティ マップを書きたいとしますが、何らかの理由で値型をポリモーフィックにする必要があります。
type Key = Int
get:: Key -> v -> IO v -- Takes a key and a default value, return the associated value
put:: Key -> v -> IO () -- store (Key,v) pair doing some IO
自由定理はそれを必要とget
しput
、この場合も些細なことだけを行いますか? もしそうなら、ghc の型システムをごまかして、実際の型インデックス付き IO データベースを実装できますか?