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.