У меня есть большой двоичный объект JSON, похожий на следующий:
[
{
"version": 1
},
{
"version": "3"
},
...
]
Обратите внимание, что некоторые версии являются числами, а некоторые — строками. Я хочу получить список версий. Я могу использовать следующую комбинацию линз для извлечения числовых версий:
v1 :: [String]
v1 = obj ^.. AL.values . AL.key fieldName . AL._Number . to show
И следующее для извлечения строк
v2 :: [String]
v2 = obj ^.. AL.values . AL.key fieldName . AL._String . to T.unpack
Но как я могу получить список версий за один проход по списку? Есть ли какой-нибудь комбинатор линз, который берет линзы AL._Number . to show
и AL._String . to T.unpack
и возвращает комбинированный геттер, чтобы в случае неудачи первого пробовать второй? Что-то вроде msum
для объективов?