-gunzipAndPutChunkDecl ∷ [Decl]
-gunzipAndPutChunkDecl
- = [ TypeSig (⊥) [funName]
- (TyFun (TyCon (Qual (ModuleName "Lazy") (name "ByteString")))
- tyResourceUnit)
- , sfun (⊥) funName [] (UnGuardedRhs funExp) (binds goDecl)
- ]
- where
- funName ∷ Name
- funName = name "gunzipAndPutChunk"
-
- goName ∷ Name
- goName = name "go"
-
- tyResourceUnit ∷ Type
- tyResourceUnit
- = TyApp (TyCon (UnQual (name "Resource")))
- (TyTuple Boxed [])
-
- funExp ∷ Exp
- funExp = var goName
- `app`
- function "."
- `app`
- metaFunction "decompressWithErrors"
- [ function "gzipFormat"
- , function "defaultDecompressParams"
- ]
-
- goDecl ∷ [Decl]
- goDecl = [ TypeSig (⊥) [goName]
- (TyFun (TyCon (UnQual (name "DecompressStream")))
- tyResourceUnit)
- , FunBind [ Match (⊥) goName [pvar (name "StreamEnd")]
- Nothing (UnGuardedRhs endExp) (binds [])
- , Match (⊥) goName [pApp (name "StreamChunk")
- [ pvar (name "x")
- , pvar (name "xs") ]]
- Nothing (UnGuardedRhs chunkExp) (binds [])
- , Match (⊥) goName [pApp (name "StreamError")
- [ wildcard
- , pvar (name "msg") ]]
- Nothing (UnGuardedRhs errorExp) (binds [])
- ]
- ]
-
- endExp ∷ Exp
- endExp = function "return" `app` tuple []
-
- chunkExp ∷ Exp
- chunkExp = function "putBuilder"
- `app`
- paren ( qvar (ModuleName "BB") (name "fromByteString")
- `app`
- var (name "x")
- )
- `app`
- function ">>"
- `app`
- function "go" `app` var (name "xs")
-
- errorExp ∷ Exp
- errorExp = metaFunction "abort"
- [ var (name "InternalServerError")
- , listE []
- , function "Just"
- `app`
- paren ( qvar (ModuleName "T") (name "pack")
- `app`
- paren ( strE "gunzip: "
- `app`
- function "++"
- `app`
- var (name "msg")
- )
- )
- ]
-