@@ -0,0 +1,24 @@
1+{-# LANGUAGE OverloadedStrings #-}
2+import Network.Wai
3+import Blaze.ByteString.Builder (Builder, fromByteString)
4+import Blaze.ByteString.Builder.Char8 (fromShow)
5+import Data.Monoid (mappend)
6+import Network.Wai.Handler.Warp (run)
7+import Data.Enumerator (enumList, ($$), run_)
8+
9+bigtable :: [Builder]
10+bigtable =
11+ fromByteString "<table>"
12+ : foldr (:) [fromByteString "</table>"] (replicate 2 row)
13+ where
14+ row = fromByteString "<tr>"
15+ `mappend` foldr go (fromByteString "</tr>") [1..2]
16+ go i rest = fromByteString "<td>"
17+ `mappend` fromShow i
18+ `mappend` fromByteString "</td>"
19+ `mappend` rest
20+
21+main = run 3000 app
22+
23+app _ = return $ ResponseEnumerator $ \f ->
24+ run_ $ enumList 4 bigtable $$ f status200 [("Content-Type", "text/html")]