Show HN: LCON 1.0 – For reals this time (Ludicrously Compact Object Notation) (github.com)
When I posted LCON before (https://github.com/ar-nelson/lcon), it was a horribly broken prerelease version. This version actually works (it has unit tests and everything!), and it has a slightly modified syntax that takes into account some of the criticisms from the last HN thread. In particular:
* Lists are now bulleted with - instead of .
* Comments are now delimited with # instead of ;
* Block strings are now delimited with """ instead of ``
* Stringify functions are now available, including one that stringifies to JSON with key order preserved.
3 comments
[ 5.4 ms ] story [ 15.1 ms ] thread* Lists are now bulleted with - instead of .
* Comments are now delimited with # instead of ;
* Block strings are now delimited with """ instead of ``
* Stringify functions are now available, including one that stringifies to JSON with key order preserved.
Now let me be sceptical for the following reasons:
1. I don't believe the world needs another human-rwable object notation format. We have json for read-only object notation and both YAML and TOML (https://github.com/toml-lang/toml) for human-writable stuff, config files etc. These formats are strongest when they are widespread and people don't need six different parsers to deal with six different services.
2. "ludicrous compactness" seems at odd with the concept of things being human readable. If you need to save on space, you're probably better off with a binary (protobuf-like) format.
3. What you're doing here seems to be a slightly less verbose take on YAML. I don't see the point here.
I'll give some of the same responses I gave on the other thread, hopefully before several other people say the same things:
* I understand that it seems like a solution looking for a problem; it's actually a byproduct of another project I'm working on, a language that's essentially JSON Lisp. I tried both YAML and CSON, and neither of them worked as syntax for the language due to various quirks and limitations. So this originally had a very narrow use case; I'm releasing it in the hopes that it's maybe useful to someone somewhere anyway, and so that I can refine it and work out bugs before writing tons of code in it.
* The compactness is primarily to save keystrokes, not file size. It even says it in the README: it's first and foremost a quickly-writable language.