Haskell平臺獲得的Applicative類型類的所有Haskell實例都被證明滿足所有適用法律? 如果是,我們在哪裏找到這些證明?用於haskell實例的應用法律證明
Control.Applicative的源代碼似乎沒有包含任何證據證明各種實例的適用法律確實成立。 它只是提到
-- | A functor with application.
--
--Instances should satisfy the following laws:
它然後就指出在意見的法律。
我發現了一個類似的情況下,其他類型實例(Alternative和Monad)。
這些庫的用戶是否應該自行驗證這些規則?
但是我想知道這些法律的嚴格證據是否已經由開發者在別處給出了?
同樣,我知道IO Monad的Applicate(或Monad)法律的一個嚴格證明,涉及到與外界的交談,一般而言,可能非常複雜。
謝謝。
我想也有可能在Agda或Coq這樣的系統中編寫代碼,然後從中提取Haskell源代碼。說實話,我還沒有嘗試過,但結果將是對所需屬性的完全正式證明。 –
@加布裏埃爾謝謝。像ListT一樣,有多少其他實現已經注意到會出錯?是否有哪個實例實現哪個是錯誤的列表?另外,如果包含整個證明由於長度而不可行,那麼可以在源代碼中加入證明超鏈接,並將證明文本放在Haskell.org上作爲文檔的一部分。 – user1308560
@ user1308560 ListT是我知道的標準庫中唯一一個不在我頭頂的人。鏈接的想法是有道理的。 –