S02 states "(Directly subscripting the type with either square brackets or curlies is reserved for various generic type-theoretic operations. In most other matters type names and package names are interchangeable.)"

What are these type-theoretic operations? And what do directly
attached < > pointy brackets on a type mean? How are they related
to « »? Is there something like ::_ as 'topic' type?

Here are the details of all four bracketing ops:

Foo($bar)     # function call? constructor?
Foo .($bar)   # same

Foo::($bar)   # symbolic symbol lookup with outward scanning
Foo .::($bar) # same

Foo::<$bar>   # direct symbol lookup without outward scanning
Foo::{'$bar'} # same
Foo .::<$bar> # same

Foo{$bar}     # type constraint check?

Foo<$bar>     # valid?
Foo«$bar»     # valid?

Foo[$bar]     # parametric type instanciation?

Foo::[$bar]   # valid?
Foo .::[$bar] # same?

Reply via email to