list_open

I have a vague recollection of discussing this before,
but I can't for the life of me work out what the
"list_open" field in AOM C_STRING class is
for. It is described as being for when a
constraint is "non-exhaustive" but I don't know what
this means in practical terms. I also can't
work out how the "non-exhaustive" lists would be
specified in ADL - I was guessing

"a","b", ...

but the ADL explanation says that these are
for list continuations in dADL which seem to me
to have a different purpose.

Andrew

I have a vague recollection of discussing this before,
but I can't for the life of me work out what the
"list_open" field in AOM C_STRING class is
for. It is described as being for when a
constraint is "non-exhaustive" but I don't know what
this means in practical terms. I also can't

Hi Andrew,

I think in practical terms, when list_open is set, the string
validation based on given string value list should not be performed
since the list is considered non-exhaustive.

work out how the "non-exhaustive" lists would be
specified in ADL - I was guessing

"a","b", ...

Yes, that seems to be correct ADL format to specific an open list of
string values.

/Rong

Andrew Patterson wrote:

I have a vague recollection of discussing this before,
but I can't for the life of me work out what the
"list_open" field in AOM C_STRING class is
for. It is described as being for when a
constraint is "non-exhaustive" but I don't know what
this means in practical terms. I also can't
work out how the "non-exhaustive" lists would be
specified in ADL - I was guessing

"a","b", ...

In dADL, the feature you are thinking of is there to allow the parser to
correctly determine the types of:

<1.0, 2.0, 3.0> -> List<Integer>
<1.0> -> Integer
<1.0, ...> -> List<Integer>

same syntax for any other basic type. It's not a wonderful piece of
syntax design, but it enabled us to stick to the goal of having no
typing information at all for basic types in dADL

In C_STRING, list_open is a constraint flag that says whether or not
only the values in the list are allowed to be used; True = other values
possible (i.e. the listed values are just 'preferred'). The same syntax
is used, e.g. {"a", "b", ...} is an open list.

- thomas beale