Size: a a a

2021 January 02

к

кана in Haskell Start
суть трюка в том, что 10 имеет тип Num a => a
инстанс PrintNum a как раз под него подходит, а уже после подбора инстанса применяется констрейнт на a ~ Int. INCOHERENT нужен для того, чтобы можно было написать другие инстансы, то есть это такой фолбек инстанс по сути
источник

A

Aragaer in Haskell Start
а вот еще один вопрос, но уже про Aeson.Lens наверно. Есть жсон, в котором список объектов, я хочу список значений определенных ключей оттуда.
источник

к

кана in Haskell Start
хочется прочитать, или обновить?
источник

A

Aragaer in Haskell Start
прочитать
источник

A

Aragaer in Haskell Start
я понимаю, что можно достать сам список, а потом map чтобы достать ключи, но есть ли возможность это через линзы сделать сразу?
источник

к

кана in Haskell Start
ixes :: (Monoid r, Ixed s, Foldable t) => t (Index s) -> Getting r s (IxValue s)
ixes = foldMap ix

value ^.. key "a" . key "b" . _Object . ixes ["a", "b", "c"]
источник

к

кана in Haskell Start
-- Examples:
-- >>> Map.fromList [("a", 1), ("b", 2), ("c", 3)] ^.. ixes (Set.fromList ["a", "b", "d"])
-- [1, 2]
источник

A

Aragaer in Haskell Start
сейчас попробую
источник

A

Aragaer in Haskell Start
ну то есть у меня допустим {"k":[{"a":1},{"a":2},{"a",3}]}, хочу получить список [1,2,3]
источник

к

кана in Haskell Start
а, тут ничего такого не надо

value ^.. key "k" . values . key "a" . _Number
источник

A

Aragaer in Haskell Start
о, получилось. А я не туда ^.. пихал, писал value ^? key "k" . _Array ^.. key "a" . _Number
источник

A

Aragaer in Haskell Start
спасибо
источник

к

кана in Haskell Start
Aragaer
о, получилось. А я не туда ^.. пихал, писал value ^? key "k" . _Array ^.. key "a" . _Number
так тоже можно на самом деле, но не нужно

a =
 [aesonQQ| { "k": [{"a": 1}, {"a": 2}, {"a": 3}] } |]
   ^? key "k" . _Array
   ^.. _Just . each . key "a" . _Number
источник

к

кана in Haskell Start
_Just чтобы добраться до значения от ^? (который Maybe возвращает), each, потому что там вектор в результате
источник

к

кана in Haskell Start
values = _Array . each
источник

A

Aragaer in Haskell Start
ну я использовал ^?!
источник

A

Aragaer in Haskell Start
но ключевое что я не знал, это each
источник

к

кана in Haskell Start
хинт: лучше заранее распарсить json в Value, если хочется захендлить или упасть на невалидном json
источник

к

кана in Haskell Start
потому что весь этот линзокод просто пропустит все ошибки, и ни на чем не сфокусится просто
источник

к

кана in Haskell Start
a =
 ("invalid json" :: String)
   & key "k" . values . key "a" . _Number +~ 1
-- "invalid json"
источник