AltME: Ren - Data Exchange Format


If you use Ren to exchange data between systems, where it means MM:SS, and you allow the first part to be any value (larger than 23 also), then it should work too, shouldn't it?
Isn't Ren about what you allow users to write. How they interpret it, is up to each case.
A string in one human language might mean something else in another human language, but it's still valid text.
It's an interesting problem, because whether hh:mm or mm:ss is expected is based on context. The only way around that is to require all fields. Of course, REBOL made a good call, and it's right most of the time, but I've been tripped up by it a couple times myself. More importantly, you have to explain it to everyone that needs to use it. hh:mm:ss is unambiguous.
But if it can be either, and we only allow decimals on seconds, it gets trickier still.
In a language with computation, you need to explain, yes. But in a data format, couldn't you let it be up to the user, how to interpret two integers separated by a colon?
The argument to mee is like sending just one integer telling the receiver, it's the number of days until some event. If the receiver choose to interpret the integer being number of weeks, we have a problem. But I wouldn't restrict the format because of just misinterpretation.
mee -> me
My point about context, yes. BUT (all caps), what does your spec look like now? Ugly is what.
Date and time is some of the hardest datatypes to implement.
I think the REN data format should be self-explaining. XX:YY isn't.
Now we know why JSON left out date-time. :-)
If we make seconds optional, the onus is on the user to make things unambiguous if they want. If we say two segments are hh:mm, that's what they are, even if we sometimes forget. :-\
World goes a bit further. Examples:
w> 12:00 + 1    ; Here 12:00 is HH:MM
== 12:00:01
w> 12:00.1      ; Here it's MM:SS.1
== 0:12:00.100000
So if you just have two numbers separated by a colon, it is minutes and seconds, if you have fraction also.
REBOL does that as well, which I think Ren should NOT do.
Ah yes, Rebol does it too.
Maybe you need Loose Ren and Strict Ren?
Nope. Need to keep it simple.
That doesn't mean people can't write tolerant loaders though.
So if we start with hh:mm:ss all being required, and everyone writes loaders that allow just hh:mm, changing the spec to allow that won't invalidate any existing Ren data.

Last message posted 201 weeks ago.