问题描述
cs :: Hashmap Text Value
cs = fromList [("phone",String "+00"),("count",Number 1)]
我发现我可以使用Lenses尤其是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
作为镜头(或棱镜)的作用?