4
我玩http://hackage.haskell.org/packages/archive/vault/0.2.0.0/doc/html/Data-Vault-ST.html和想写类似以下功能:高阶函数和ST
onVault f = runST (f <$> Vault.newKey)
onVault2 f = runST (f <$> Vault.newKey <*> Vault.newKey)
等。如果我与那些不接受参数并调用特定的功能,而不是替换这些功能的f,它的工作原理,但这些高阶函数不会输入检查。
这是怎么回事,我能解决它吗?
嗯......我担心它可能是这样的。看来,如果我让结果放入'ST'中,并在稍后使用该值时调用'runST',那也可以。 – singpolyma
@singpolyma:是的,因为它将(隐式)量词放在's'的最外层,这使得它成为一个可以推断的正常秩1类型,并且不需要扩展。 – hammar