私はhttp://hackage.haskell.org/packages/archive/vault/0.2.0.0/doc/html/Data-Vault-ST.htmlで遊んでいて、次のような関数を書きたいと思っています:
onVault f = runST (f <$> Vault.newKey)
onVault2 f = runST (f <$> Vault.newKey <*> Vault.newKey)
これらの関数を引数を取らず、f の代わりに特定の関数を呼び出す関数に置き換えると、機能しますが、これらの高階関数は型チェックを行いません。
何が起こっているのですか?修正できますか?