+-- |This is the entry point of Lucu httpd. It listens to a socket and
+-- waits for clients. Computation of 'runHttpd' never stops by itself
+-- so the only way to stop it is to raise an exception in the thread
+-- computing it.
+--
+-- Note that 'runHttpd' automatically makes SIGPIPE be ignored by
+-- computing @'System.Posix.Signals.installHandler'
+-- 'System.Posix.Signals.sigPIPE' 'System.Posix.Signals.Ignore'
+-- 'Prelude.Nothing'@. This can hardly cause a problem but it may do.
+--
+-- Example:
+--
+-- > module Main where
+-- > import Network.HTTP.Lucu
+-- >
+-- > main :: IO ()
+-- > main = let config = defaultConfig
+-- > resources = mkResTree [ ([], helloWorld) ]
+-- > in
+-- > runHttpd config resourcees []
+-- >
+-- > helloWorld :: ResourceDef
+-- > helloWorld = ResourceDef {
+-- > resUsesNativeThread = False
+-- > , resIsGreedy = False
+-- > , resGet
+-- > = Just $ do setContentType $ "text" </> "plain"
+-- > output "Hello, world!"
+-- > , resHead = Nothing
+-- > , resPost = Nothing
+-- > , resPut = Nothing
+-- > , resDelete = Nothing
+-- > }
+runHttpd :: Config -> ResTree -> [FallbackHandler] -> IO ()
+runHttpd cnf tree fbs