6
私はlensとzippersと苦労しています。 Control.Monad.MonadPlus m => m (Zipper Top Int [Int] :>> A Int)
:私はのようなジッパーの種類を作成する方法、data A t = A t
を持つghci
「to」レンズでジッパーに踏み込む
> import Control.Lens
> import Control.Zipper
>
> :t within (ix 1) $ zipper ([1,2,3] :: [Int])
> within (ix 1) $ zipper ([1,2,3] :: [Int])
:: Control.Monad.MonadPlus m => m (Zipper Top Int [Int] :>> Int)
でコード実行の下に考えてみましょうか?
私はwithin (ix 1 . to A) $ zipper ([1,2,3] :: [Int])
を試してみましたが、それはエラーを与える:
Could not deduce (Contravariant
(Bazaar (Indexed Int) (A Int) (A Int)))
arising from a use of ‘to’
from the context (Control.Monad.MonadPlus m)
bound by the inferred type of
it :: Control.Monad.MonadPlus m =>
m (Zipper Top Int [Int] :>> A Int)
at Top level
In the second argument of ‘(.)’, namely ‘to A’
In the first argument of ‘within’, namely ‘(ix 1 . to A)’
In the expression: within (ix 1 . to A)
を(\(A) - > a)の'機能:無効な
Traversal
書くことができますが、それはまだ正常に動作しないのだろうか?私の場合はそれが明らかではない場合、私はここに 'undefined'を渡すことができますか? – remdezx実際はありません。問題は、あなたが元に戻ることができないということです。 '上向き 'を使用して戻ってくると' undefined'が返されます。 – cchalmers
私は参照してください... 'Iso'以外のオプションはありますか? – remdezx