Magicloud Magiclouds | 21 Jun 10:14 2013
Picon

How to make this data type work?

data ActionData = AD { oldData :: (FromJSON j, ToJSON j) => j                                                    
                     , newData :: (FromJSON j, ToJSON j) => j}                                                   
instance ToJSON ActionData where                                                                                 
  toJSON (AD o n) = object [ "oldData" .= o                                                                      
                           , "newData" .= n ]                                                                    
instance FromJSON ActionData where                                                                               
  parseJSON (Object v) = AD                                                                                      
    <$> v .: "oldData"                                                                                           
    <*> v .: "newData"                                                                                           
  parseJSON _ = mzero

I got when compile:
    No instance for (FromJSON (forall j. (FromJSON j, ToJSON j) => j))
      arising from a use of `.:'
    Possible fix:
      add an instance declaration for
      (FromJSON (forall j. (FromJSON j, ToJSON j) => j))
    In the second argument of `(<$>)', namely `v .: "oldData"'
    In the first argument of `(<*>)', namely `AD <$> v .: "oldData"'
    In the expression: AD <$> v .: "oldData" <*> v .: "newData"

--
竹密岂妨流水过
山高哪阻野云飞

And for G+, please use magiclouds#gmail.com.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Gmane