[edit] Actually, looks like strelka might actually be doing less, as you aren’t able to write handlers that take typed arguments, as far as I can tell. So this really just looks like the type of routing that Snap and Happstack have had for years and years…
Strelka provides higher-level abstractions with simpler signatures, e.g.:
-- Fn
method :: StdMethod -> Req -> IO (Maybe (Req, a -> a))
-- Strelka
getMethod :: Monad m => RequestParser m ByteString
No custom type-classes or operators. Instead the standard interfaces like Alternative and Monad are used
Streaming of both the request and the response bodies, instead of aggregating them in memory
Server-agnostic
API is isolated, providing for clarity and nudging the users towards separation of concerns
API is also isolated on the package-level, having all the features that the end-user won’t need located in a separate package (“strelka-core”).
Since it’s only the first official release, some features are yet to be implemented. E.g., the parameters' and URL-encoded body parsers are already slated. But overall, since you’re asking, IMO, Strelka is much simpler and more intuitive than any of the mentioned libraries, yet it aims to let the user solve the tasks of any complexity.
I’m wondering what this has that http://hackage.haskell.org/package/fn doesn’t (disclosure, I’m one of the primary authors).
[edit] Actually, looks like strelka might actually be doing less, as you aren’t able to write handlers that take typed arguments, as far as I can tell. So this really just looks like the type of routing that Snap and Happstack have had for years and years…
Compared to Fn,
Strelka provides higher-level abstractions with simpler signatures, e.g.:
No custom type-classes or operators. Instead the standard interfaces like
AlternativeandMonadare usedStreaming of both the request and the response bodies, instead of aggregating them in memory
Server-agnostic
API is isolated, providing for clarity and nudging the users towards separation of concerns
API is also isolated on the package-level, having all the features that the end-user won’t need located in a separate package (“strelka-core”).
Since it’s only the first official release, some features are yet to be implemented. E.g., the parameters' and URL-encoded body parsers are already slated. But overall, since you’re asking, IMO, Strelka is much simpler and more intuitive than any of the mentioned libraries, yet it aims to let the user solve the tasks of any complexity.