Îõ³h*f     1.0.0 Safe-Inferred"4<Õ6respRESP3 Expression.ÜThis descriminates the difference between RespString and RespBlob, even though both contain bytestrings, in order to not throw away information. A caller might care whether the response was delivered with "+", or "$".æWe do not, however descriminate between the different encodings of null. As far as I can tell, these are considered a mistake in the previous versions of the RESP spec, and clients should treat the different encodings the same.Why don't we parse  into Text›? Well, the caller might not actually need to decode it into text, and so we let the caller decide. This way, we don't have to deal with encoding errors.Similarly, we don't parse a  into a HashMapë, because that would involve imposing our choice of data structure on the caller. They might want to use HashMap, Map, or just use the  function.®Given these choices, our purview is simple: Parse the text protocol into a Haskell datatype, maintaining all useful information, and not imposing our taste onto the caller.resp(Top-level resp reply. Cannot be nested.        !"#!resp-1.0.0-LYF9uNboG4jCMPZqHytGRd Data.RESPrespRespExpr RespStringRespBlobRespStreamingBlobRespStringError RespBlobError RespArray RespIntegerRespNullRespBool RespDoubleRespVerbatimStringRespVerbatimMarkdownRespBigIntegerRespMapRespSet RespAttribute RespReplyRespPush parseReplyparseExpression$fShowRespReply $fEqRespReply$fOrdRespReply$fGenericRespReply$fShowRespExpr $fEqRespExpr $fOrdRespExpr$fGenericRespExprbaseGHC.Listlookup