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