Как воспроизвести
import qualified Data.Aeson.Types as Aeson
import qualified Data.Map as Map
import Database.Bolt.Extras (NodeLike (fromNode, toNode))
import Database.Bolt.Extras.Graph
import Database.Bolt.Extras.Template (makeNodeLike)
newtype Data = Data {value :: Double} deriving (Show)
makeNodeLike ''Data
reproduce :: IO ()
reproduce =
let dataNodeResultWhole =
NodeResult
{ nresId = 1,
nresLabels = ["Data"],
nresProps = Map.fromList [("value", Aeson.Number 3.0)]
}
in print @Data $ fromNode . toNode $ dataNodeResultWhole
Ожидаемый результат
Реальный результат
example: Database.Bolt.Extras.Internal.Instances:80: could not unpack I 3 into Double
Варианты решения
- конвертировать из
I x через fromIntegral в инстансах FromValue для Float и Double