SRFI 198 and the Schemeregistry hga@xxxxxx (30 Aug 2020 12:37 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 14:01 UTC)
Re: SRFI 198 and the Schemeregistry hga@xxxxxx (30 Aug 2020 14:25 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 14:52 UTC)
Re: SRFI 198 and the Schemeregistry hga@xxxxxx (30 Aug 2020 15:45 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 16:06 UTC)
Re: SRFI 198 and the Schemeregistry John Cowan (30 Aug 2020 14:55 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 15:22 UTC)
Re: SRFI 198 and the Schemeregistry John Cowan (30 Aug 2020 16:05 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 16:39 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 16:56 UTC)
Re: SRFI 198 and the Schemeregistry hga@xxxxxx (30 Aug 2020 20:13 UTC)
Re: SRFI 198 and the Schemeregistry hga@xxxxxx (30 Aug 2020 15:23 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 15:35 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 15:44 UTC)
Re: SRFI 198 and the Schemeregistry Marc Nieper-Wißkirchen (30 Aug 2020 16:02 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 17:05 UTC)
Re: SRFI 198 and the Schemeregistry John Cowan (30 Aug 2020 17:47 UTC)
Re: SRFI 198 and the Schemeregistry John Cowan (30 Aug 2020 18:56 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 18:59 UTC)
Re: SRFI 198 and the Schemeregistry Marc Nieper-Wißkirchen (30 Aug 2020 19:45 UTC)
Re: SRFI 198 and the Schemeregistry hga@xxxxxx (30 Aug 2020 17:34 UTC)
Re: SRFI 198 and the Schemeregistry John Cowan (30 Aug 2020 17:55 UTC)
Re: SRFI 198 and the Schemeregistry Arthur A. Gleckler (30 Aug 2020 18:27 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 18:57 UTC)
Re: SRFI 198 and the Schemeregistry Arthur A. Gleckler (30 Aug 2020 19:10 UTC)
Don't panic Lassi Kortela (30 Aug 2020 19:28 UTC)
Re: Don't panic Marc Nieper-Wißkirchen (30 Aug 2020 19:34 UTC)
Re: Don't panic Arthur A. Gleckler (30 Aug 2020 20:00 UTC)
Re: SRFI 198 and the Schemeregistry Lassi Kortela (30 Aug 2020 19:57 UTC)
Re: SRFI 198 and the Schemeregistry John Cowan (30 Aug 2020 20:09 UTC)

Re: SRFI 198 and the Schemeregistry Lassi Kortela 30 Aug 2020 14:52 UTC

>> These rely on the fact that some property names only make sense with
>> particular foreign interfaces. 'oracle-ORA only makes sense with Oracle....
>>
>> Likewise, 'sqlstate only makes sense with SQL databases; if you FIND it....
>
> Emphasis added to "find".
>
> And I'm sorry I failed to communicate my question.  *Exactly* how
> would the library developer consulting registry.scheme.org discover
> "'sqlstate" and "'oracle-ORA"?  Would he navigate to a sub-page and
> ^F/F3 search for likely things, like "database", "RDMBS", "sql", etc.?
>
> If there is such a sub-page, what limiting principle, if any, would
> be used to decide which names to include in it, vs. ones that might
> be in a sub-sub-page like fiddly details only relevant to Oracle
> ORAs, PostgreSQL status returns, etc.?

We have a tentative list of 15 properties at
<https://registry.scheme.org/#foreign-status-property>. Assume we wrap
so many foreign systems that the list grows to 50 properties, making it
difficult to navigate at a glance.

Options for managing that level of complexity:

* Use prefixes: e.g. start SQL-related property names with `sql`
   and HTTP-related ones with `http`.

* Have little groups of two or three properties that are conventionally
   used together and interpreted in light of each other. We started with
   `set`, `code/number`, and `name/symbol`. That would be one set where
   all three help interpret the others.

* I originally thought it would make sense to divide all or most
   properties by set, not only code/number and name/symbol. But it
   soon became apparent that most properties are probably naturally
   set-independent. For example, a `line-number` property could
   potentially make sense for dozens of different systems, since
   all kinds of things deal with line numbers.

I think the issue you're getting at is: "Suppose I'm interfacing to
sqlite; how do I know which properties I can expect to be filled in by a
foreign status object coming from the sqlite interface? I could test for
all 50 properties, but that doesn't make much sense."

I think that is a question that would make sense to pose to the people
who wrote each interface, not to the registry. Suppose you're the person
writing the sqlite binding. You'd go through the manual for SQLite's C
API, looking at what information it returns. You'd then look at the full
list of 50 properties in the registry, picking out the ones that have a
sensible mapping to something coming from the SQLite C API, and leave
out the rest.

E.g. the C API gives you an error code and corresponding error message,
so your Scheme wrapper would fill in the 'code and 'message properties.
Likewise, if we had a 'foreign-system or 'foreign-library property or
some such, you'd put 'sqlite or 'sqlite3 in there. If SQLite returned a
SQLSTATE code, you'd store it in a 'sqlstate property. But I don't think
it does; this illustrates that the flexibility in not unnecessarily
coupling properties is useful. You'd think all SQL databases use
SQLSTATE codes, but maybe not. Things like that.

What we're doing is kind of like duck typing in OOP. Dynamic languages
are kind of based on the insight that you can leave out constraints that
everyone thinks are mandatory for basic programming sanity and
everything can still work just fine. Many OOP people thought you need to
know the class of an object you're calling, but it turns out that if you
get some object that implements the methods you want, you don't really
need to know its class and things still work fine.