urlpath-0.1.0.1: Painfully simple URL writing combinators

Safe HaskellSafe-Inferred
LanguageHaskell2010

UrlPath

Synopsis

Documentation

class Url plain m => UrlReader plain m where Source

Overload deployment schemes with this - then, all that's needed is a type coercion to change deployment. This only works with flat (co)monads, so monad transformers are out.

Methods

runUrlReader Source

Arguments

:: Url plain m 
=> m plain b

MonadReader with index string and result b

-> plain

Reader index

-> b

Final result

Instances

(Monoid plain, IsString plain) => UrlReader plain AbsoluteUrl

Hand-off host prepending to the MonadReader instance

(Monoid plain, IsString plain) => UrlReader plain GroundedUrl 
(Monoid plain, IsString plain) => UrlReader plain RelativeUrl 

class (IsString plain, Monoid plain, MonadReader plain (m plain)) => Url plain m where Source

Url is a relationship between an underlying (monomorphic) string type string, and a deployment context m. We try to make the deployment and implementation type coercible at the top level - coercing your final expression to String or T.Text will have all use-cases coerce to that type, similarly with the deployment scheme.

We chose to not force MonadReader as a superclass for m due to the monomorphic demand on functional dependencies.

Methods

url Source

Arguments

:: UrlString plain

Url type, parameterized over small string type string

-> m plain plain

Rendered Url in some context.

plainUrl Source

Arguments

:: plain

raw small string

-> m plain plain

Rendered string in some context.

Instances

(Monoid plain, IsString plain) => Url plain AbsoluteUrl 
(Monoid plain, IsString plain) => Url plain GroundedUrl 
(Monoid plain, IsString plain) => Url plain RelativeUrl 
(Monad m, Monoid plain, IsString plain) => Url plain (AbsoluteUrlT m) 
(Monad m, Monoid plain, IsString plain) => Url plain (GroundedUrlT m) 
(Monad m, Monoid plain, IsString plain) => Url plain (RelativeUrlT m)