add2 :: JSON a => MyData -> String -> a -> MyData
add2 m k v = fromJust $ (\js -> m { json = js }) `liftM` (showJSON
`liftM` (toJSObject `liftM` (((k, showJSON v):) `liftM` (fromJSObject
`liftM` (jsObj $ json m)))))
setJSON m js = m {json = js}
add2 m k v = fromJust $ setJSON m <$> showJSON <$> toJSObjct <$> ((k,
showJSON v):) <$> fromJSObject <$> (jsObj . json $ m)
now let's push all the fmaps together:
add2 m k v = fromJust . fmap (setJSON m . showJSON . toJSObject . ((k,
showJSON v):) . fromJSObject) . jsObj . json $ m
much better :)
Bob
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe