On Thu, Mar 28, 2013 at 6:34 PM, Jamie F Olson <jamie.f.olson@gmail.com> wrote:
Would it have been legal to define data JSValue as something like this instead?

data JSValue
    = JSValue
    | JSValue     !Bool
    | JSValue !Rational
    | JSValue   JSString
    | JSValue    [JSValue]
    | JSValue   (JSObject JSValue)

No; the data constructor used tells it what to expect afterward. 

--
brandon s allbery kf8nh                               sine nomine associates
allbery.b@gmail.com                                  ballbery@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net