class LispWriter {

    public void writeChar(char c) {
        output.write("?");
        // TODO: any more special characters that should be quoted here?
        switch (c) {
            case '\"':
            case '\'':
            case '\\':
            case '?':
            case ')':
            case '(':
            case ']':
            case '[':
                output.write("\\");
                output.write(c);
                break;
            case '\n':
                output.write("\\n");
                break;
            case '\b':
                output.write("\\b");
                break;
            case '\r':
                output.write("\\r");
                break;
            case '\t':
                output.write("\\t");
                break;
            case '\f':
                output.write("\\f");
                break;
            default:
                output.write(c);
                break;
        }
    }

    public  LispWriter(PrintWriter dest);

}