6
zippers 및 lens을 사용하여 문제가 발생했습니다. 예를 들어 다음과 같은 고려 : 당신이 볼 수 있듯이, 내가 Top :>> A :>> A
및 Top :>> A :>> B
에 Top :>> A
중 하나를 이동할 수지퍼 : 마지막 탐색 경로 위로 매핑
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
import Control.Lens
import Control.Zipper
data A = AA { _aa :: A }
| AB { _ab :: B }
deriving (Show)
data B = B deriving (Show)
makeLenses ''A
makeLenses ''B
main :: IO()
main = do
let a = AA $ AB $ B
z :: Top :>> A
z = zipper a
zAA :: Maybe (Top :>> A :>> A)
zAA = z & within aa
zAB :: Maybe (Top :>> A :>> B)
zAB = z & within (aa . ab)
return()
. 다만 마지막 이동 경로를 통해 렌즈를 매핑 -
upward
를 사용하지 않고, 어떻게 Top :>> A :>> B
(zAB
)에 (zAA
) Top :>> A :>> A
에서 이동할 수 ab
렌즈가 있습니까?