Я изучаю пакет Lens. Я должен сказать, что это довольно сложная задача.
Может кто-нибудь показать мне, как пересечь дерево с молнией из объектива? В частности, как я могу написать функцию, которая принимает список корней и позволяет мне получить доступ к ветвям поддерева?
Предположим, что у меня есть это дерево. Если мой ввод [1, 3]
, функция должна позволить мне получить доступ к node 10 и 11.
import Control.Lens
import Data.Tree
import Data.Tree.Lens
testTree = Node 1 [ Node 2 [ Node 4 [ Node 6 [], Node 8 [] ],
Node 5 [ Node 7 [], Node 9 [] ] ],
Node 3 [ Node 10 [],
Node 11 [] ]
]
zipperTree = zipper testTree
Кроме того, как именно я использую saveTape
и restoreTape
для сохранения пути обхода (к StateT или IORef)?