Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92852 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 55207 invoked from network); 27 Apr 2016 21:21:06 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 27 Apr 2016 21:21:06 -0000 Authentication-Results: pb1.pair.com header.from=rasmus@mindplay.dk; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=rasmus@mindplay.dk; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain mindplay.dk from 209.85.218.66 cause and error) X-PHP-List-Original-Sender: rasmus@mindplay.dk X-Host-Fingerprint: 209.85.218.66 mail-oi0-f66.google.com Received: from [209.85.218.66] ([209.85.218.66:36109] helo=mail-oi0-f66.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 68/5C-20013-04D21275 for ; Wed, 27 Apr 2016 17:21:06 -0400 Received: by mail-oi0-f66.google.com with SMTP id i2so9552319oib.3 for ; Wed, 27 Apr 2016 14:21:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mindplay-dk.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-transfer-encoding; bh=vYKiWrcSiB5xinK+Q2arn+PA0b9XYvKuKPoiqzDknac=; b=KVAo46A0ot0O+U9eFamCLpDzBejWYYvFiG0qn5f4i+6q4yTvq1pGTxCk1Yrbkt9roq J9Bx9HXC88mhkIfDD/I0K5W54WRl55rlOndy4VSakbh3ATVt/XiiXgF97DdocT+OgnX2 lRZ4fpaIJzwkboVO4aWPGpX4fet8+R2rYmNs7O3BpBbCSTSgfGMWRa5Q/B753P5plXD1 kCIq7wZ2KQreq4ZL+yeLf/QJSpMXA4VKK2WoJhl11az5JACIs5KvXxE4cfYqAlj6obnD yU7+i0lz7+kD0rBhfpeThxr9fMjKsnelvF6C2MLfBBiirXGb6qAea6X0Tg3qgqsqhRKN mY5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-transfer-encoding; bh=vYKiWrcSiB5xinK+Q2arn+PA0b9XYvKuKPoiqzDknac=; b=amz7/2SQNDmI6Xbr3VxQg/DE3JKQWE2HQcD+TLLAHzG2wCJD7txkxIDxl8HOR6ylNG R/VL5xXRDuahhZCWEEvLfr1w4d8NfMNF6KbjyLHLFzb0UyTu1UoWzLWJpgAIwEpPAyt1 TtNjn3zHFieANE8Rz/yxJAhrBwVSfq4XWml6O5SOOdktn8abfseL9d/a+5flrDSH4TYO zyNQgD2HN91X6/B7SXuybwrh3KGAPHtgw61UF93+LAAKUq7peu8RjE2VH6VfiL2RadHY RldX/r0hSNNg/TTUOedyo/vK0tFEPKMUMyjXtBRJJdqUVoEslE54H1Fq+jwvU5up0liz uvrg== X-Gm-Message-State: AOPr4FVihjk7ROONHvssLaj0D0rLT3kzL5qGWVzR2AH5MxfQYXOXhAKL3q2N6jodrh8qNBPV3xaZiNTcZp4q+w== MIME-Version: 1.0 X-Received: by 10.157.58.100 with SMTP id j91mr5079404otc.43.1461792060855; Wed, 27 Apr 2016 14:21:00 -0700 (PDT) Received: by 10.157.37.120 with HTTP; Wed, 27 Apr 2016 14:21:00 -0700 (PDT) In-Reply-To: <013101d19ff8$596b6010$0c422030$@tutteli.ch> References: <3cc8a4c7-2640-11ae-a67b-06f909ac1e27@texthtml.net> <57173859.4080501@rochette.cc> <013101d19ff8$596b6010$0c422030$@tutteli.ch> Date: Wed, 27 Apr 2016 23:21:00 +0200 Message-ID: To: Robert Stoll Cc: Josh Di Fabio , Dominic Grostate , Guilherme Blanco , Mathieu Rochette , "Ben Scholzen 'DASPRiD'" , Sara Golemon , PHP internals , Mathieu Rochette Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [PHP-DEV] [RFC:generics] From: rasmus@mindplay.dk (Rasmus Schultz) > In this case I would suggest to use class A which leaves room op= en to define lower bounds later on IMHO that is bordering on unreadable - all those brackets are really confus= ing and hard on the eyes. Either way, using : does not prevent us from adding lower bounds later on - but even then, upper bound is the 99% use case, so I don't think it makes sense to d= esign the syntax around a possible future upper bound. If we do support it in the future, I don't think anyone's going to care what it looks like, as it's unlikely most people will ever encounter it or need it. On Tue, Apr 26, 2016 at 10:15 PM, Robert Stoll wrote: > > >> -----Urspr=C3=BCngliche Nachricht----- >> Von: Rasmus Schultz [mailto:rasmus@mindplay.dk] >> Gesendet: Montag, 25. April 2016 18:09 >> An: Josh Di Fabio >> Cc: Dominic Grostate; Guilherme Blanco; Mathieu Rochette; Ben Scholzen '= DASPRiD'; Sara Golemon; PHP internals; Mathieu >> Rochette >> Betreff: Re: [PHP-DEV] [RFC:generics] >> >> > I really don't like 'as' in this context, even if Hack uses it, as it >> > doesn't reflect in English terms what the code is doing. As others >> > have already said, it reads as if 'T' is being aliased to 'Bar'. >> >> I second that. >> >> I hear the concerns about adding another reserved word "is" though, so I= 'd like to suggest simply using a ":" ... as in: >> >> class A { ... } > > In this case I would suggest to use class A which leaves room op= en to define lower bounds later on (either with <: as well or with :> as in= scala) > >> >> Consistent with return type-hints, it should feel like home? >> >> For sure nobody wants to type out "instanceof", and (as pointed out in t= he RFC) the instanceof operator checks the type of >> an object, which is *not* what this is doing - a type argument is not an= "instance of" anything. The ":" is more neutral in that >> regard maybe? >> >> >> On Thu, Apr 21, 2016 at 10:32 AM, Josh Di Fabio = wrote: >> > On Wed, Apr 20, 2016 at 8:17 PM, Dominic Grostate >> > wrote: >> >> Thanks for you're input everyone. >> >> >> >> So far, we have read some ideas for handling upper bounds, or >> >> multiple there of. >> >> The preferred keywords appear to be either "as" or "instanceof". >> >> >> >> class Foo {} >> >> class Foo {} >> >> >> >> We would like to know for sure then if everyone is largely against >> >> the addition of an "is" keyword, in favour of one of the other two. >> >> >> > >> > I really don't like 'as' in this context, even if Hack uses it, as it >> > doesn't reflect in English terms what the code is doing. As others >> > have already said, it reads as if 'T' is being aliased to 'Bar'. >> > >> > On Wed, Apr 20, 2016 at 8:17 PM, Dominic Grostate >> > wrote: >> >> Thanks for you're input everyone. >> >> >> >> So far, we have read some ideas for handling upper bounds, or >> >> multiple there of. >> >> The preferred keywords appear to be either "as" or "instanceof". >> >> >> >> class Foo {} >> >> class Foo {} >> >> >> >> We would like to know for sure then if everyone is largely against >> >> the addition of an "is" keyword, in favour of one of the other two. >> >> >> >> ---------------- >> >> >> >> There is also a desire to include unions and intersections. >> >> Presently though, this feature feels tied in with >> >> https://wiki.php.net/rfc/union_types meaning if union types are >> >> approved, then generics would have to support them as well. Likewise >> >> if this feature becomes approved in generics, it would make sense to >> >> support them in regular type hints as well. >> >> >> >> ---------------- >> >> >> >> The RFC makes a reference to generic closures, which may look >> >> something like >> >> this: >> >> >> >> function my_function(callable $func) { >> >> >> >> } >> >> >> >> However, an RFC already exists which is very similar to this feature >> >> at https://wiki.php.net/rfc/callable-types >> >> As it currently standards these RFCs appear incompatible with each >> >> other (please correct me if I am wrong). >> >> >> >> My question about this is would you prefer the generics RFC exclude >> >> this part in favour of a separate or later RFC. >> >> Initially the proposal included generic arrays "array". >> >> However to ease the implementation it was decided that should be a se= parate feature. >> >> So we'd like to find out if everyone else feels the same way about >> >> callable types. >> >> >> >> ---------------- >> >> >> >> This RFC currently doesn't specify in detail how reflection would >> >> work. We have attempted a few API designs, but due to generic classe= s being ... >> >> generic, it is difficult to find a suitable way to glean information >> >> about a class in a backwards compatible manner. So we will need some >> >> help on this one. >> >> >> >> ----------------- >> >> >> >> Aside from these top issues on our own list, however does everyone >> >> feel about the proposal in general? >> >> As the RFC is still in draft, we will continue to make changes to it >> >> as more popular idea pop up, so please continue. >> >> >> >> Thanks. >> >> >> >> PS: I wasn't properly subscribed to the mailing list, so I missed a >> >> few important messages that were mailed directly to internals, but >> >> hopefully I've managed to fix that now. >> >> -- >> PHP Internals - PHP Runtime Development Mailing List To unsubscribe, vis= it: http://www.php.net/unsub.php > >