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

Reply via email to