diff --git a/DSH.cabal b/DSH.cabal
--- a/DSH.cabal
+++ b/DSH.cabal
@@ -1,5 +1,5 @@
 Name:                DSH
-Version:             0.6.2
+Version:             0.6.6
 Synopsis:            Database Supported Haskell
 Description:
   This is a Haskell library for database-supported program execution. Using
diff --git a/src/Database/DSH.hs b/src/Database/DSH.hs
--- a/src/Database/DSH.hs
+++ b/src/Database/DSH.hs
@@ -43,7 +43,7 @@
 import Database.DSH.Data (Q, QA, TA, table, tableDB, tableCSV, tableWithKeys, BasicType, View, view, fromView, tuple, record)
 import Database.DSH.QQ (qc)
 import Database.DSH.TH (generateRecords, generateInstances)
-import Database.DSH.CSV (csvExport)
+import Database.DSH.CSV (csvExport, csvExportHandle, csvExportStdout)
 
 import Database.DSH.Combinators
 
diff --git a/src/Database/DSH/CSV.hs b/src/Database/DSH/CSV.hs
--- a/src/Database/DSH/CSV.hs
+++ b/src/Database/DSH/CSV.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE TemplateHaskell, RelaxedPolyRec, OverloadedStrings #-}
 
-module Database.DSH.CSV (csvImport, csvExport) where
+module Database.DSH.CSV (csvImport, csvExport, csvExportHandle, csvExportStdout) where
 
 import Database.DSH.Data
 import Database.DSH.Impossible
@@ -10,8 +10,17 @@
 import qualified Data.Text as T
 import qualified Data.Text.IO as T
 
-csvExport :: (TA a) => FilePath -> [a] -> IO ()
-csvExport file as = T.writeFile file csvContent
+import qualified System.IO as IO
+import System.IO (Handle)
+
+csvExport :: (QA a) => FilePath -> [a] -> IO ()
+csvExport file as = IO.withFile file IO.WriteMode (\handle -> csvExportHandle handle as)
+
+csvExportStdout :: (QA a) => [a] -> IO ()
+csvExportStdout = csvExportHandle IO.stdout
+
+csvExportHandle :: (QA a) => Handle -> [a] -> IO ()
+csvExportHandle handle as = T.hPutStr handle csvContent
   where csvContent :: Text
         csvContent = T.unlines (map (toRow . toNorm) as)
 
@@ -26,7 +35,7 @@
 
         toRow :: Norm -> Text
         toRow e = case e of
-                    ListN _ _       -> $impossible
+                    ListN _ _       -> "Nesting"
                     UnitN _         -> quote "()"
                     BoolN b _       -> quote (T.pack (show b))
                     CharN c _       -> quote (escape (T.singleton c))
diff --git a/src/Database/DSH/QQ.hs b/src/Database/DSH/QQ.hs
--- a/src/Database/DSH/QQ.hs
+++ b/src/Database/DSH/QQ.hs
@@ -260,7 +260,7 @@
 
 patToExp :: Pat -> Exp
 patToExp (PVar x)                    = var x
-patToExp (PTuple [x, y])             = fromViewF $ tuple [patToExp x, patToExp y]
+patToExp (PTuple ps)                 = fromViewF $ tuple $ map patToExp ps
 patToExp (PApp (Special UnitCon) []) = unit
 patToExp PWildCard                   = unit
 patToExp p                           = error $ "Pattern not suppoted by ferry: " ++ show p
