Удобное приведение типов, теперь и в х-ле!
import Data.Maybe (fromJust)
import Data.Aeson (decode, encode)
jsonCast :: (ToJSON a, FromJSON b) => a -> b
jsonCast = head . fromJust . decode . encode . (:[])
Теперь можно кастовать список интов в вектор даблов. Или различные числовые типы между собой.
♥ jsonCast ([1,2,3] :: [Int]) :: Data.Vector.Vector Double
fromList [1.0, 2.0, 3.0]
♥ let q = jsonCast; a=3::Int; b=1.3::Float; c=Just 10
♥ q a + q b + q c :: Double
14.3