3
我很感興趣,讓我的單子轉換堆棧縮放功能,其定義方式如下:鏡頭:變焦NEWTYPE
newtype Awesome a = Awesome (StateT AwesomeState (ExceptT B.ByteString IO) a)
deriving (Functor, Applicative, Monad
, MonadIO, MonadError B.ByteString
, MonadState AwesomeState)
我AwesomeState是深度嵌套的記錄,因此使用變焦會大大幫助我更新一些字段。但問題是縮放無法用於我的新類型。
Couldn't match type ‘Control.Lens.Internal.Zoom.Zoomed Awesome’
with ‘Control.Lens.Internal.Zoom.Zoomed m0’
我發現如何使放大的定製NEWTYPE RWST實例,但試圖使其適應我的NEWTYPE沒有給我結果
的RWST例如一個例子可以在這裏找到:http://lpaste.net/87737
有沒有一種方法可以開始使用我的monad變壓器堆棧進行縮放?我需要做些什麼才能做到這一點?如果我應該像RWST示例那樣實現縮放/縮放,那麼我需要一個指示器來指出如何做到這一點,因爲我試過並且未能這樣做。
這實質上是[這個問題]的重複(http://stackoverflow.com/questions/29188217/lens-zoo間模棱兩可變量)。我猶豫重複投票,因爲這個問題比另一個更清楚。 – 2015-04-02 07:40:36