簡體   English   中英

如何非毫不含糊地回復“也許”一個鏡頭?

[英]How to non-impredicatively return `Maybe` a lens?

Maybe (Lens' ab)這樣的類型不起作用,因為Lens'在引擎蓋下是Rank-2類型,不能在沒有-XImpredicativeTypes擴展的類型構造函數中-XImpredicativeTypes (在GHC中不支持) 。

因此,提供一個在道德上具有類型的函數的最佳類型是什么

foo :: A -> Maybe (Lens' B C)

一種可能性是將Maybe推遲到一個通過的延續

foo' :: ∀ y . A -> (Lens' B C -> y) -> Maybe y

但我並不特別喜歡。

這就是Control.Lens.Reified模塊的用途。 它包含newtype的包裝lens層次。

foo :: A -> Maybe (ReifiedLens' B C)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM