`withCompression'` should take a predicate function #148

hvr opened this Issue Jul 8, 2012 · 0 comments

1 participant

Snap Framework member
hvr commented Jul 8, 2012

The current signature reads:

withCompression' :: MonadSnap m
                 => Set ByteString    -- ^ set of compressible MIME types
                 -> m a               -- ^ the web handler to run
                 -> m ()

The use of Set seems to be too inflexible to me, e.g. if you wanted to compress all mime-types matching text/*, you'd have to enumerate them all; or if you wanted to use a HashSet instead of Set. Also, in some cases you might want to compress the data only if a certain size threshold is exceeded. Thus, I'd suggest using a predicate function with the signature :: ByteString -> Int64 -> Bool instead of a value of type Set ByteString.

PS: is there a reason, that the monadic value of m a is discarded, and is transformed into a m () action?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment