
From Real World Haskell:
data JValue = JString String | JNumber Double | JBool Bool | JNull | JObject [(String, JValue)] | JArray [JValue] deriving (Eq, Ord, Show) .... type JSONError = String class JSON a where toJValue :: a -> JValue fromJValue :: JValue -> Either JSONError a instance JSON JValue where toJValue = id -- Really ? fromJValue = Right Now, instead of applying a constructor like JNumber to a value to wrap it,
we apply the toJValue function. If we change a value's type, the compiler will choose a suitable implementation of toJValue to use with it.
Actually it does not work. And I don't see how it could with this toJValue implementation. Is it possible to make it work by providing another implementation? Oscar

Forget it. It's more clear reading further.
Sorry for the noise.
On Sat, Dec 27, 2008 at 1:02 AM, Oscar Picasso
From Real World Haskell:
data JValue = JString String | JNumber Double | JBool Bool | JNull | JObject [(String, JValue)] | JArray [JValue] deriving (Eq, Ord, Show)
.... type JSONError = String
class JSON a where toJValue :: a -> JValue fromJValue :: JValue -> Either JSONError a
instance JSON JValue where toJValue = id -- Really ? fromJValue = Right
Now, instead of applying a constructor like JNumber to a value to wrap it,
we apply the toJValue function. If we change a value's type, the compiler will choose a suitable implementation of toJValue to use with it.
Actually it does not work. And I don't see how it could with this toJValue implementation. Is it possible to make it work by providing another implementation?
Oscar
participants (1)
-
Oscar Picasso