Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 7411ffa2ac65ad52d53f7e945566c7f4 > files > 22

ghc-json-devel-0.4.4-2.fc14.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Text.JSON.Generic</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_Text-JSON-Generic.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>json-0.4.4: Support for serialising Haskell to and from JSON</TD
><TD CLASS="topbut"
><A HREF="src/Text-JSON-Generic.html"
>Source code</A
></TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>Text.JSON.Generic</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>portable</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>provisional</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>Sigbjorn Finne &lt;sof@galois.com&gt;</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
>JSON serializer and deserializer using Data.Generics.
 The functions here handle algebraic data types and primitive types.
 It uses the same representation as <A HREF="Text-JSON.html"
>Text.JSON</A
> for <A HREF="Prelude.html"
>Prelude</A
> types.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>module <A HREF="Text-JSON.html"
>Text.JSON</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>class</SPAN
> <A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A HREF="#t%3AData"
>Data</A
> a </TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>class</SPAN
>  <A HREF="#t%3ATypeable"
>Typeable</A
> a </TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AtoJSON"
>toJSON</A
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; a -&gt; <A HREF="Text-JSON-Types.html#t%3AJSValue"
>JSValue</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfromJSON"
>fromJSON</A
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; <A HREF="Text-JSON-Types.html#t%3AJSValue"
>JSValue</A
> -&gt; <A HREF="Text-JSON.html#t%3AResult"
>Result</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AencodeJSON"
>encodeJSON</A
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdecodeJSON"
>decodeJSON</A
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AtoJSON_generic"
>toJSON_generic</A
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; a -&gt; <A HREF="Text-JSON-Types.html#t%3AJSValue"
>JSValue</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfromJSON_generic"
>fromJSON_generic</A
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; <A HREF="Text-JSON-Types.html#t%3AJSValue"
>JSValue</A
> -&gt; <A HREF="Text-JSON.html#t%3AResult"
>Result</A
> a</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Documentation</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
>module <A HREF="Text-JSON.html"
>Text.JSON</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>class</SPAN
> <A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A NAME="t:Data"
><A NAME="t%3AData"
></A
></A
><B
>Data</B
> a </TD
><TD CLASS="declbut"
><A HREF="src/Data-Data.html#Data"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><P
>The <TT
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
></TT
> class comprehends a fundamental primitive <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3Agfoldl"
>gfoldl</A
></TT
> for
folding over constructor applications, say terms. This primitive can
be instantiated in several ways to map over the immediate subterms
of a term; see the <TT
>gmap</TT
> combinators later in this class.  Indeed, a
generic programmer does not necessarily need to use the ingenious gfoldl
primitive but rather the intuitive <TT
>gmap</TT
> combinators.  The <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3Agfoldl"
>gfoldl</A
></TT
>
primitive is completed by means to query top-level constructors, to
turn constructor representations into proper terms, and to list all
possible datatype constructors.  This completion allows us to serve
generic programming scenarios like read, show, equality, term generation.
</P
><P
>The combinators <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3AgmapT"
>gmapT</A
></TT
>, <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3AgmapQ"
>gmapQ</A
></TT
>, <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3AgmapM"
>gmapM</A
></TT
>, etc are all provided with
default definitions in terms of <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3Agfoldl"
>gfoldl</A
></TT
>, leaving open the opportunity
to provide datatype-specific definitions.
(The inclusion of the <TT
>gmap</TT
> combinators as members of class <TT
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
></TT
>
allows the programmer or the compiler to derive specialised, and maybe
more efficient code per datatype.  <EM
>Note</EM
>: <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3Agfoldl"
>gfoldl</A
></TT
> is more higher-order
than the <TT
>gmap</TT
> combinators.  This is subject to ongoing benchmarking
experiments.  It might turn out that the <TT
>gmap</TT
> combinators will be
moved out of the class <TT
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
></TT
>.)
</P
><P
>Conceptually, the definition of the <TT
>gmap</TT
> combinators in terms of the
primitive <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3Agfoldl"
>gfoldl</A
></TT
> requires the identification of the <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3Agfoldl"
>gfoldl</A
></TT
> function
arguments.  Technically, we also need to identify the type constructor
<TT
>c</TT
> for the construction of the result type from the folded term type.
</P
><P
>In the definition of <TT
>gmapQ</TT
><EM
>x</EM
> combinators, we use phantom type
constructors for the <TT
>c</TT
> in the type of <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3Agfoldl"
>gfoldl</A
></TT
> because the result type
of a query does not involve the (polymorphic) type of the term argument.
In the definition of <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3AgmapQl"
>gmapQl</A
></TT
> we simply use the plain constant type
constructor because <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#v%3Agfoldl"
>gfoldl</A
></TT
> is left-associative anyway and so it is
readily suited to fold a left-associative binary operation over the
immediate subterms.  In the definition of gmapQr, extra effort is
needed. We use a higher-order accumulation trick to mediate between
left-associative constructor application vs. right-associative binary
operation (e.g., <TT
>(:)</TT
>).  When the query is meant to compute a value
of type <TT
>r</TT
>, then the result type withing generic folding is <TT
>r -&gt; r</TT
>.
So the result of folding is a function to which we finally pass the
right unit.
</P
><P
>With the <TT
>-XDeriveDataTypeable</TT
> option, GHC can generate instances of the
<TT
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
></TT
> class automatically.  For example, given the declaration
</P
><TT
> data T a b = C1 a b | C2 deriving (Typeable, Data)
</TT
><P
>GHC will generate an instance that is equivalent to
</P
><TT
> instance (Data a, Data b) =&gt; Data (T a b) where
     gfoldl k z (C1 a b) = z C1 `k` a `k` b
     gfoldl k z C2       = z C2

     gunfold k z c = case constrIndex c of
                         1 -&gt; k (k (z C1))
                         2 -&gt; z C2

     toConstr (C1 _ _) = con_C1
     toConstr C2       = con_C2

     dataTypeOf _ = ty_T

 con_C1 = mkConstr ty_T &quot;C1&quot; [] Prefix
 con_C2 = mkConstr ty_T &quot;C2&quot; [] Prefix
 ty_T   = mkDataType &quot;Module.T&quot; [con_C1, con_C2]
</TT
><P
>This is suitable for datatypes that are exported transparently.
</P
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Data')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Data" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AChar"
>Char</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ADouble"
>Double</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AFloat"
>Float</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt8"
>Int8</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt16"
>Int16</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt32"
>Int32</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt64"
>Int64</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrdering"
>Ordering</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord"
>Word</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord8"
>Word8</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord16"
>Word16</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord32"
>Word32</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord64"
>Word64</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> ()</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-IO-Handle.html#t%3AHandle"
>Handle</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#t%3ADataType"
>DataType</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Concurrent.html#t%3AThreadId"
>ThreadId</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeRep"
>TypeRep</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATyCon"
>TyCon</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString-Lazy.html#t%3AByteString"
>ByteString</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString.html#t%3AByteString"
>ByteString</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> <A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-IntSet.html#t%3AIntSet"
>IntSet</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> [a]</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AIntegral"
>Integral</A
> a) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ratio.html#t%3ARatio"
>Ratio</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Foreign-StablePtr.html#t%3AStablePtr"
>StablePtr</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Foreign-ForeignPtr.html#t%3AForeignPtr"
>ForeignPtr</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-Conc.html#t%3ASTM"
>STM</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/GHC-Conc.html#t%3ATVar"
>TVar</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-IORef.html#t%3AIORef"
>IORef</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Concurrent-MVar.html#t%3AMVar"
>MVar</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-IntMap.html#t%3AIntMap"
>IntMap</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd"
>Ord</A
> a) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-Set.html#t%3ASet"
>Set</A
> a)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> b) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (a -&gt; b)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> b) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Either.html#t%3AEither"
>Either</A
> a b)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> b) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (a, b)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> s, <A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad-ST.html#t%3AST"
>ST</A
> s a)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> b, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ix.html#t%3AIx"
>Ix</A
> a) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/array-0.3.0.1/Data-Array.html#t%3AArray"
>Array</A
> a b)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> k, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd"
>Ord</A
> k) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-Map.html#t%3AMap"
>Map</A
> k a)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> b, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> c) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (a, b, c)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> b, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> c, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> d) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (a, b, c, d)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> b, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> c, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> d, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> e) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (a, b, c, d, e)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> b, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> c, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> d, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> e, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> f) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (a, b, c, d, e, f)</TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> b, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> c, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> d, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> e, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> f, <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> g) =&gt; <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> (a, b, c, d, e, f, g)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>class</SPAN
>  <A NAME="t:Typeable"
><A NAME="t%3ATypeable"
></A
></A
><B
>Typeable</B
> a </TD
><TD CLASS="declbut"
><A HREF="src/Data-Typeable.html#Typeable"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>The class <TT
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
></TT
> allows a concrete representation of a type to
 be calculated.
</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Typeable')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Typeable" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AChar"
>Char</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ADouble"
>Double</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AFloat"
>Float</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt8"
>Int8</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt16"
>Int16</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt32"
>Int32</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt64"
>Int64</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger"
>Integer</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrdering"
>Ordering</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad-ST.html#t%3ARealWorld"
>RealWorld</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord"
>Word</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord8"
>Word8</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord16"
>Word16</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord32"
>Word32</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord64"
>Word64</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> ()</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Data.html#t%3ADataType"
>DataType</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ABlockedIndefinitelyOnMVar"
>BlockedIndefinitelyOnMVar</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ABlockedIndefinitelyOnSTM"
>BlockedIndefinitelyOnSTM</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3ADeadlock"
>Deadlock</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3AAssertionFailed"
>AssertionFailed</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3AAsyncException"
>AsyncException</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3AArrayException"
>ArrayException</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-Exit.html#t%3AExitCode"
>ExitCode</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Exception-Base.html#t%3AIOException"
>IOException</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeRep"
>TypeRep</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATyCon"
>TyCon</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString-Lazy.html#t%3AByteString"
>ByteString</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString.html#t%3AByteString"
>ByteString</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-IntSet.html#t%3AIntSet"
>IntSet</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="Text-JSON-Types.html#t%3AJSString"
>JSString</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> <A HREF="Text-JSON-Types.html#t%3AJSValue"
>JSValue</A
></TD
></TR
><TR
><TD CLASS="decl"
>(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> s, <A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> a) =&gt; <A HREF="Text-JSON-Generic.html#t%3ATypeable"
>Typeable</A
> (s a)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:toJSON"
><A NAME="v%3AtoJSON"
></A
></A
><B
>toJSON</B
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; a -&gt; <A HREF="Text-JSON-Types.html#t%3AJSValue"
>JSValue</A
></TD
><TD CLASS="declbut"
><A HREF="src/Text-JSON-Generic.html#toJSON"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Convert anything to a JSON value.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:fromJSON"
><A NAME="v%3AfromJSON"
></A
></A
><B
>fromJSON</B
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; <A HREF="Text-JSON-Types.html#t%3AJSValue"
>JSValue</A
> -&gt; <A HREF="Text-JSON.html#t%3AResult"
>Result</A
> a</TD
><TD CLASS="declbut"
><A HREF="src/Text-JSON-Generic.html#fromJSON"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Convert a JSON value to anything (fails if the types do not match).
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:encodeJSON"
><A NAME="v%3AencodeJSON"
></A
></A
><B
>encodeJSON</B
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="declbut"
><A HREF="src/Text-JSON-Generic.html#encodeJSON"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Encode a value as a string.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:decodeJSON"
><A NAME="v%3AdecodeJSON"
></A
></A
><B
>decodeJSON</B
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; a</TD
><TD CLASS="declbut"
><A HREF="src/Text-JSON-Generic.html#decodeJSON"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Decode a string as a value.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:toJSON_generic"
><A NAME="v%3AtoJSON_generic"
></A
></A
><B
>toJSON_generic</B
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; a -&gt; <A HREF="Text-JSON-Types.html#t%3AJSValue"
>JSValue</A
></TD
><TD CLASS="declbut"
><A HREF="src/Text-JSON-Generic.html#toJSON_generic"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:fromJSON_generic"
><A NAME="v%3AfromJSON_generic"
></A
></A
><B
>fromJSON_generic</B
> :: <A HREF="Text-JSON-Generic.html#t%3AData"
>Data</A
> a =&gt; <A HREF="Text-JSON-Types.html#t%3AJSValue"
>JSValue</A
> -&gt; <A HREF="Text-JSON.html#t%3AResult"
>Result</A
> a</TD
><TD CLASS="declbut"
><A HREF="src/Text-JSON-Generic.html#fromJSON_generic"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.1</TD
></TR
></TABLE
></BODY
></HTML
>