In your Main.hs, do this:
main :: IO ()
main = do
ld <- newLessDirectory' "stylesheets"
td <- newTemplateDirectory' "templates" $ withSplices splices
quickServer $ lessHandler ld lessReloadHandler $ \ls ->
templateHandler td defaultReloadHandler $ \ts ->
ifTop (render ts "index")
<|> dir "css" (renderLess ls)
<|> fileServe "static"
Now any requests matching /css/foobar.css will get served the result of
putting the file /stylesheets/foobar.less in your project directory through
lessc. The output of lessc is cached, so it isn't
run on every request. If you want to refresh the cached stylesheets, send a
request to /admin/reload/less. If you want a different reload handler, pass
your own one to lessHandler instead of lessReloadHandler (or simply
(const pass) if you wish to have no reload handler).