У меня есть HashMap, который содержит разные вещи (значение от Aeson):
cs :: Hashmap Text Value
cs = fromList [("phone", String "+00"), ("count", Number 1)]
Я понял, что могу легко извлекать элементы с помощью Lens и, в частности, lens-aeson :
import Data.Aeson.Lens
import Data.Lens
phone :: Maybe Text
phone = preview (at "phone" . _Just . _String) cs
Это хорошо работает. Но как я могу получить свой счет как Int? Я попытался:
count :: Maybe Int
count = preview (at "count" . _Just . _Number) cs
Но это возвращает Maybe Scientific
. Я нашел (в Data-Scientific):
toBoundedInteger :: forall i. (Integral i, Bounded i) => Scientific -> Maybe i
Как поднять toBoundedInteger
для работы в качестве линзы (или призмы) в моем предварительном просмотре выше?