#lang racket
(provide make-csv-writer)
(define (make-csv-writer
#:delimiter [ delimiter "\t" ]
#:lineterminator [ lineterminator "\n" ]
#:escapechar [ escapechar "\\" ]
#:doublequote [ doublequote #t ]
#:quotechar [ quotechar "\"" ]
#:quoting [ quoting #t ]
#:skipinitialspace [ skipinitialspace #t ]
#:strict [ strict #t ] )
(define (slist->string data element-flatten separator)
(string-join (map element-flatten data) separator))
(define (flatten-row row)
(slist->string row (λ(x) x) delimiter))
(define (flatten-list-of-rows list-of-rows)
(slist->string list-of-rows flatten-row lineterminator))
flatten-list-of-rows)