Re: Different kinds of JSON writers, and naming them Lassi Kortela 22 Jan 2020 22:33 UTC

> I think it would be a mistake for the SRFI to prescribe some
> particular pp algorithm, though.

Agreed. That sounds too complex. Unless Amirouche wants it, since it's
his SRFI.

>     ability to put JSON keys in a convenient application-specific order.
>
> I see what you mean, but we don't have a good mechanism for creating
> such ordering predicates.  The enum machinery I have a pre-SRFI for will
> allow it:  an enum object has a distinct type and four instance
> variables: the enum type, the symbol name, the ordinal number, and the
> arbitrary value.

https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/EnumsCowan.md

Would it work to just accept a (less? key1 key2) predicate? Maybe the
enum SRFI can provide a predicate-maker.

> I think json-write would make the most sense here.  Scheme doesn't have
> a standard name for write-then-newline like writeln in many languages or
> CL print.

Racket has `writeln` and `displayln`. Both are so useful, I wish they
were standard.

> That's why I think json-write and json-write-sequence-text are best.

Hmm. I feel there's something missing with all the alternatives we've
thought of so far. I wish someone thought of an unexpected solution :)

Amirouche, do you have an opinion?

>     Finally, one could add a `json-pretty-write` or `json-pretty-print` (or
>     `json-indented-write` or `json-custom-write`, etc.)
>
> I like json-pp for analogy with pp.

Not bad! That didn't occur to me.

> pp should not be called pretty-print, because it is a case in which terseness
> is actually important.

Fair enough.

> We could just say that json-pp is the same as json-write,
> but may introduce additional whitespace for better human readability.
> That allows a minimal implementation where memory is tight to make it
> the same as json-write.

json-pp should probably allow a custom indent string (N spaces or a tab)
since people will probably want to write files that conform to the style
used in some existing collection of JSON files.