考虑项目[a]
的列表和一对功能
pop :: [a] -> (Maybe a, [a])
pop = headMay &&& tailSafe
push :: a -> [a] -> [a]
push = (:)
仅向列表提供后进先出队列结构。
我可能是错的,但是这种API感觉很lens
y,它提供了一种访问列表中第一个元素的方法。它仍然既不是Lens
也不是Prism
。
我想知道这可以实现为Traversal
或其他光学结构)>
考虑项目列表[a]和一对函数pop :: [a]->(也许a,[a])pop = headMay &&& tailSafe push :: a-> [a]-> [a] push =(:),仅向列表提供...
在列表头处的弹出和弹出可以表示为棱镜-从[a]
到(a, [a])
,再从(a, [a])
到[a]
。在lens