4
在這條線哈斯克爾:什麼是警告「變量隱因情境量化」是什麼意思?
type SafeReturn a = Exception e => Either e a
我得到這個警告
Variable ‘e’ is implicitly quantified due to a context
Use explicit forall syntax instead.
是什麼意思?
在這條線哈斯克爾:什麼是警告「變量隱因情境量化」是什麼意思?
type SafeReturn a = Exception e => Either e a
我得到這個警告
Variable ‘e’ is implicitly quantified due to a context
Use explicit forall syntax instead.
是什麼意思?
您的類型同義詞,你還沒有處理一個免費類型的變量。要採取極端的例子,如果我們刪除您a
參數,我們不得不像
type SafeReturn = [e] -- Using a * -> * type instead of a * -> * -> * type
這可能不是你想要的,因爲我們不知道確切地知道e
指的是在這裏,這是你的SafeReturn
面臨的同樣的問題; e
是什麼意思?
現在有一個背景,其中e
可能意味着一些東西,這就是錯誤消息告訴你。
type SafeReturn a = forall e. Exception e => Either e a
這意味着不同的東西。事實上,你在這裏創建了一個普遍量化的類型。這意味着,SafeReturn a
類型的東西有沒有檢查e
比Exception
可供任何方法等的方法。
其實,這是*不*存在主義的類型;這是一種普遍量化的類型,可能會出現在更高等級的位置。其餘是正確的。 Haskell中的存在類型只能由'data'(或'data instance')聲明創建; 'type'和'newtype'都不夠。 – dfeuer
@dfeuer Argh你完全正確。我會編輯它。 – badcook
其實,我有點錯了,但我想我完全正確的,現在....如果你嘗試寫一個函數,一個'SafeReturn了'作爲參數 – dfeuer