úÎ,g)ï'      !"#$%&'()'()'()() Like MonadIO, but for *. This allows JSON parsing 9 operations to be lifted into our various view monads. IAttempts to parse a JSON value into a given type. This is typically used N with a type annotation to indicate the target type. If the value can not A be parsed into that type, the entire computation will fail. Applies  5 to a list of values. This is commonly used with the  reduce function arguments. JParses a required field of an object. If the field is not present, or the N value can not be parsed into the target type, the computation will fail. JParses an optional field of an object. This will not halt the computation  on failure.     +,MThe type of your reduce functions as they are stored in CouchDB. The trivial  example: & \keys values rereduce -> return Null CThe monad within which a reduce computation takes place. This is a  transformation of the * monad, although the precise Q nature and depth of the transformation is an internal detail and subject to @ change. ViewReduceT is guaranteed to be an instance of the   3 class, allowing you to parse JSON structures. -JSend a log message to the CouchDB server. Note that log messages are only Q sent if the computation succeeds. If you want to log a message in the event  of a failure, look at ..   JThe type of your map functions as they are stored in CouchDB. The trivial  example:  \doc -> return () @The monad within which a map computation takes place. This is a  transformation of the * monad, although the precise Q nature and depth of the transformation is an internal detail and subject to = change. ViewMapT is guaranteed to be an instance of the   3 class, allowing you to parse JSON structures. / !"#$ Emit a key/?value pair for the current document. The values will be turned G into JSON objects for you, although you will have to provide type  annotations somewhere. 5\doc -> do value <- doc .: "value" :: ViewMap Double  emit Null value %Same as $", but with wrapped key and value. ?\doc -> emitM (return Null) (doc .: "value" :: ViewMap Double) &JSend a log message to the CouchDB server. Note that log messages are only Q sent if the computation succeeds. If you want to log a message in the event  of a failure, look at ..   !"#$%& $%& !#" !"#$%&0      !"#$%&'()*+,--./0123456couch-hs-0.1.2"Database.CouchDB.ViewServer.ReduceDatabase.CouchDB.ViewServer.Map$Database.CouchDB.ViewServer.Internal!Database.CouchDB.ViewServer.ParseDatabase.CouchDB.ViewServer aeson-0.3.2.8Data.Aeson.Typesobject.=ObjectArrayStringNumberBoolNullValue MonadParser liftParser parseJSON parseJSONList.:.:? ReduceFuncReduceSignature ViewReduce ReduceOutput toReduceFuncreduceFuncInterpreterexecReduceFunclogMsgMapFunc runMapFunc MapSignatureViewMap MapOutputLogEmit toMapFuncmapFuncInterpreter execMapFuncemitslogsemitemitM LogMessagemessageParser runReduceFunc ViewReduceTbaseControl.Applicative AlternativeViewMapT