{-# LANGUAGE OverloadedStrings #-} module Main where import Network.Wai.Handler.Warp import Network.Wai.Trans import Network.Wai.Middleware.ContentType import Network.HTTP.Types import qualified Data.Text as T import qualified Lucid as L import Control.Monad.IO.Class data AppError = AppError myListener :: MonadIO m => FileExtListenerT (MiddlewareT m) m () myListener = do text "Text!" json ("Json!" :: T.Text) lucid (L.toHtmlRaw ("Html!" :: T.Text)) myApp :: MonadIO m => MiddlewareT m myApp = fileExtsToMiddleware myListener main :: IO () main = run 3000 (myApp defApp) where defApp :: Application defApp _ respond = respond $ textOnlyStatus status404 "404"