Рассмотрим список элементов [a]
и пару функций
pop :: [a] -> (Maybe a, [a])
pop = headMay &&& tailSafe
push :: a -> [a] -> [a]
push = (:)
, которые просто предоставляют в список структуру очереди «последний пришел - вышел».
Я могу ошибаться , но API этого ощущается очень lens
y, предоставляя способ доступа к первому элементу списка. Тем не менее, это не Lens
и не Prism
.
Мне было интересно, что это может быть реализовано как Traversal
или какая-либо другая структура оптики