You are looking at historical revision 18002 of this page. It may differ significantly from its current revision.



The csv library contains procedures for parsing and formatting of comma-separated values (CSV) as described in RFC 4180. There are several differences with the RFC:

Library Procedures

[procedure] (csv-record? X) => BOOL

Returns #t if the given object is a csv-record, #f otherwise.

[procedure] (list->csv-record LIST) => CSV-RECORD

Takes in a list of values and creates a csv-record object.

[procedure] (csv-record->list CSV-RECORD) => LIST

Returns the list of values contained in the given csv-record object.

[procedure] (make-parse [DELIMITER]) => PARSER

Returns a CSV parsing procedure. Optional argument DELIMITER specifies the field delimiter (comma by default). DELIMITER can be a character, or an SRFI-14 character set. The returned procedure takes in a string and returns a list of the form:

 ((<#csv-record (FIELD1 FIELD2 ...)>) (<#csv-record ... >))

where FIELD represents the field values in a record.

[procedure] (make-format [DELIMITER]) => FORMAT-CELL * FORMAT-RECORD * FORMAT-CSV

Returns procedures for outputting individual field values, CSV records, and lists of CSV records, where each list is printed on a separate line.

Procedure FORMAT-CELL takes in a value, obtains its string representation via format, and surrounds the string with quotes, if it contains characters that need to be escaped (such as quote characters, the delimiter character, or newlines).

Procedure FORMAT-RECORD takes in a record of type csv-record and returns its string representation, based on the strings produced by FORMAT-CELL and the delimiter character.

Procedure FORMAT-CVS takes in a list of csv-record objects and produces a string representation using FORMAT-RECORD.


Version History


 Copyright 2009 Ivan Raikov and the Okinawa Institute of Science and Technology.
 This program is free software: you can redistribute it and/or
 modify it under the terms of the GNU General Public License as
 published by the Free Software Foundation, either version 3 of the
 License, or (at your option) any later version.
 This program is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY; without even the implied warranty of
 General Public License for more details.
 A full copy of the GPL license can be found at