snap init しないで動かす場合は、ハンドラとルータを書いてquickHttpServeで動かせばいい。
ハンドラの型がSnap ()で、route関数をパスとハンドラの組みのリストに適用した結果もまたSnap ()型なのはなんとなく不思議だなぁと。
{-# LANGUAGE OverloadedStrings #-} import Snap.Core import Snap.Http.Server hello :: Snap () hello = writeText "Hello, Snap!" app :: Snap () app = route [("/", hello)] main :: IO() main = quickHttpServe app
snapのソースコードを読んでみるのもイイかもしれないと思った。