Closed popematt closed 5 days ago
I'm wary of several of these proposals. It's going to be hard to discuss with all of this under one issue.
void
and values
. I want to allow the former to accept and ignore any*
and thus act as an easy, structure-aware mechanism to discard a chuck of data. I find myself needing this almost daily when working with Ion-based DSLs.We agreed to delay implementation of parameter cardinality, not eliminate it. (As I work on the denotational semantic model, I'm becoming more convinced that we need more strong typing, not less.)
That's my mistake.
I've created the following issues to handle these discussions independently from each other.
Cardinality of parameters is no longer supported(foo int)
)—the type is annotated on the parameter name (e.g.int::foo
)(:)
,(:void)
, and(:values)
macros are superseded by the stream syntax[:
...]
[]
around the variable name (e.g.[foo]
). When the variable has a type annotation, the type annotation stays with the variable name (e.g.[int::foo]
).1
indicates the parameter is present, and0
indicates argument is not present.1
indicates a present expression group, and0
indicates no expression group for that parameter.