is a high-level wrapper around zlib.
(load "git@git.veitheller.de:carpentry/zlib.git@0.0.2")
The ZLib
module provides only two functions, inflate
and deflate
. These
functions work in tandem to provide you with data compression.
; deflate returns a Result of either binary data or an error message
(let [deflated (ZLib.deflate "mystring")]
(match deflated
; inflate returns a Result of either a string or an error message
(Success bin) (println* &(inflate bin))
(Error msg) (IO.errorln &msg)))
Because it’s a Result
type, we can apply combinators to it.
(=> (ZLib.deflate "mystring")
(Result.and-then &ZLib.inflate)
(Result.map-error &(fn [msg] (do (println* &msg) msg)))
)
You can also choose different levels of compression using deflate-with
. The
levels are defined in ZLib.ZLevel
, and are NoCompression
, BestSpeed
,
BestCompression
, and DefaultCompression
, which is, well, the default.
Have fun!