This seems unnecessarily terse. If you want types, why not make it look like one of the existing popular languages with types? (Rust/TypeScript/protobuf)<p>Instead of:<p><pre><code> uxf 1
=Database server:str ports:list connection_max:int enabled:bool
=DateTime when:datetime tz:str
=Owner name:str dob:DateTime
=Hosts name:str
[
(Owner <Tom Preston-Werner> (DateTime 1979-05-27T07:32:00 <-08:00>))
(Database <192.168.1.1> [8000 8001 8002] 5000 yes)
(Hosts
<alpha>
<omega>)
]
</code></pre>
Why not:<p><pre><code> type Database {
server: str,
ports: list,
connection_max: int,
enabled: bool,
}
type DateTime {
when: datetime,
tz: str,
}
type Owner {
name: str,
dob: DateTime,
}
type Hosts {
name: str,
}
[
Owner('Tom Preston-Werner', DateTime('1979-05-27T07:32:00', '-08:00')),
Database('192.168.1.1', [8000, 8001, 8002], 5000, yes),
[
Hosts('alpha'),
Hosts('omega'),
],
]
</code></pre>
Evidence shows that people like that kind of format, for "plain text human readable" purposes. They are also used to it. It's only 20% longer, and you can also go with a Haskell-style syntax if you dislike braces.<p>What's the point of a plain-text format that is not human-friendly? Especially for type definitions, do you expect people to write this or do you want them to compile their schema from a different human-readable format into your human readable-format (and why)?