в них значения? Вроде должен получаться AffineTraversal, но почему-то (в optics) такая функция afailing есть только у AffineFold и устанавливать значения там уже нельзя (только preview)
можно подробнее, ты хочешь траверсал который "или конструктор А, или конструктор B"?
Да. Я уже сделал так: dictOrRec = atraversal getter upd where getter = \case VDict m -> Right m VRec m -> Right m v -> Left v upd v m' = case v of VDict _ -> VDict m' VRec _ -> VRec m' _ -> v
Обсуждают сегодня