[Haskell-beginners] (no subject)

Jamie F Olson jamie.f.olson at gmail.com
Thu Mar 28 23:26:28 CET 2013

David McBride <toad3k <at> gmail.com> writes:

> data JSValue = ... | JSObject (JSObject JSValue) | ...
> The first JSValue is a type.  The first JSObject is a constructor.
> The second JSObject is a type and so is the second JSValue.  Put them
> together it is a single type "JSObject JSValue".  So that JObject
> constructor takes a single type of (JSObject JSValue).
> newtype JSObject e = JSONObject [(String, e)]
> The first JSObject is again a type.  The e will be replaced with a
> type.  JSONObject is a constructor again.  ...

Thank you very much for the clarification!

This is what I couldn't wrap my head around.  JSObject as a data constructor 
creates objects of type JSValue, not JSObject, which are instead created by 
JSONObject.  Frankly, it's the Text.JSON api that's confusing more than the 
language.  The language feature is more or less like classes vs constructors in 
OOP (except for types not actually existing in Haskell)

The other weird thing is that the types don't exist as objects that can be 

More information about the Beginners mailing list