In recent discussions we were weighing up the options of array of and
generics came into conversation, brought forward from the Hack
language by Sara G.

I was wrong about one thing: Generics CAN have setup outside of the
type-hint, much like a collection, but it is not required. I thought
it was.

This means that array of could easily be considered "weak-generics"
and the two features can share the same syntax without confusion to
the user. A few of you said that, so sorry that I disagreed. ;)

Before we worry too much about that, the logical next question is:

Is there any interest in generics? If there is interest, then one
syntax would be preferable over the other.

With the existing proposed syntax for "array of", it looks like this:

     function(Spanner[] $spanner)

Evolving that same syntax into generics would look something like this:

     $tool = new Spanner[];
     $tool = new int[];

That would be... less than ideal, but its nice and simple for the type hints.

Using the generics syntax for... generics:

     function(array<Spanner> $spanner)
     $tool = array<Spanner>();

Obviously angle-brackets are a bit new, but that same syntax works for both.

These examples are provided to make a point, and the syntax is not
definite. The point here really is that If we care about generics,
then using generic-like syntax for this feature probably makes sense.
If we don't care about generics, then there is probably no point using
this more verbose syntax for simple "array of" type-hinting, but the
syntax could still easily change.

Can you lot vote A, B, C or D to show your interest?

A) I want Array Of, but not Generics
B) I want Generics, but not Array Of
C) I want both
D) I want neither

Nothing really binding here, its more of a survey than a vote, but it
should help with the next steps.

Search Discussions

Discussion Posts

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 1 of 13 | next ›
Discussion Overview
groupphp-internals @
postedJan 24, '14 at 3:20a
activeJan 26, '14 at 10:28p



site design / logo © 2018 Grokbase