我有一個名為:
mapRouteEncoder ::
Prism' FilePath FilePath ->
Prism' r1 r2 ->
(b -> a) ->
RouteEncoder a r1 ->
RouteEncoder b r2
這個函式通常通過在前兩個引數中指定“身份”棱鏡(如果我們可以這樣稱呼它)來使用,因為只指定了第三個函式,即:
stringRouteEncoder
& mapRouteEncoder (prism' id Just) (prism' id Just) changeModel
我使用optics-core,并且該庫中是否有任何東西可以替換prism' id Just更慣用的東西?
uj5u.com熱心網友回復:
我不熟悉該軟體包的習語,但我很想用它castOptic equality來將身份Iso轉換為Prism. 這似乎很好地傳達了這個想法。但是,我希望在大多數情況下,您實際上不需要將其轉換為Prism; 您大概可以使用將接受 a和 a 的多型函式(如previewand ) 。reviewIsoPrism
在您的情況下,我懷疑正確的方法是撰寫類似
mapRouteEncoder ::
( p1 `Is` A_Prism
, p2 `Is` A_Prism) =>
Optic' p1 ixy1 FilePath FilePath ->
Optic' p2 ixy2 r1 r2 ->
(b -> a) ->
RouteEncoder a r1 ->
RouteEncoder b r2
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/446001.html
上一篇:如何修復我的haskell值代碼并回傳串列的其余部分?
下一篇:使用串列單子進行迭代
