Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92373 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 87134 invoked from network); 17 Apr 2016 01:30:04 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 17 Apr 2016 01:30:04 -0000 Authentication-Results: pb1.pair.com header.from=me@daveyshafik.com; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=me@daveyshafik.com; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain daveyshafik.com from 209.85.215.54 cause and error) X-PHP-List-Original-Sender: me@daveyshafik.com X-Host-Fingerprint: 209.85.215.54 mail-lf0-f54.google.com Received: from [209.85.215.54] ([209.85.215.54:33533] helo=mail-lf0-f54.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id C7/26-32052-717E2175 for ; Sat, 16 Apr 2016 21:30:02 -0400 Received: by mail-lf0-f54.google.com with SMTP id e190so182684489lfe.0 for ; Sat, 16 Apr 2016 18:29:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daveyshafik-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc; bh=4HAoocgmyLBWmFEh0fIGYgAnjurz+DdQjTli2JAvm3o=; b=lZlGyfied2yVq8X7PRonvHHtZNUExUKaZqgTdXjp99ye5dc4AsF7eF0rsta+2L9wre AVK20y+7Oni+SXG2UwZEr6wZuKR414p9hDNry0qUMg0OZG5LXdJHp6c1txMwZOmvnVhM JTBQpiSv3La3FUhvJmsuBbFFtbmtjKEVH84Qn+Vg/lUBapzSCaSqACa3B6vmuH3oq86o Etzzo91fTXKheZNbuKga8kvGiJaKaNpEy/qMtJvbZxoVOYEoz2cGoyYwlfAht7q7srPD yh0gdpMr65yx2KG5u2KtM/s8C5laT5YHhVEVzvNFv4azUxfHj94N7FMKI7aNMjhhnSyA kJTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:date :message-id:subject:from:to:cc; bh=4HAoocgmyLBWmFEh0fIGYgAnjurz+DdQjTli2JAvm3o=; b=iyqwcJ22sikUw4+zpKTJtw8Os2mdX3GwaB/UjH1uJeBGML7e3YgNW4M0TVpZP3IkSP l8ZTUuP0L7Ga+TJynvPmlfsPvnyS6LPD6HVHtlT7P/ftUiLPB4CTfPFX4OqdslQH6lEB AI/E2fCdMhZSk87ALvmQjDWytHqnXy9+j8R1IoWgaQJsgQRF0m31Wg2wLoQSSQ9dkiWP 4SUbYERMMMFMfod+U7IdWx9u0YIJ0PeeY64o6ShA3tPOBQKNQMhDzCS+XARpP35xxxjq A0sN+hEh6CX4Jt1DgQDUUy10BgOWNf4EsOO3wj8OU/HY9EfdKR2SNmsCqZYY1RBv5DZv NMTA== X-Gm-Message-State: AOPr4FWH49AkWtmeBQenz1WR5GATYlCkCzkuROc9vVIGP7vols/Nzp9kSU5gKzV9U5jZVLp0XMt677AQJ7coEPl8 MIME-Version: 1.0 X-Received: by 10.25.21.98 with SMTP id l95mr12843539lfi.161.1460856596744; Sat, 16 Apr 2016 18:29:56 -0700 (PDT) Sender: me@daveyshafik.com Received: by 10.25.125.196 with HTTP; Sat, 16 Apr 2016 18:29:56 -0700 (PDT) In-Reply-To: References: <570E99AC.3090804@fleshgrinder.com> <570EA5EB.8090501@fleshgrinder.com> <570EAB0D.6080706@gmail.com> <570EB67E.8010908@garfieldtech.com> <5B147E88-CC0A-4CBC-A49D-C7FE3BF557C0@zend.com> <6F.C3.12455.94C5F075@pb1.pair.com> <20160414094440.GF19347@phcomp.co.uk> <570FD94F.90703@fleshgrinder.com> <570FE8A9.4020809@gmail.com> <20.53.29891.17401175@pb1.pair.com> <57110BCD.5030009@garfieldtech.com> <571124C2.9040606@gmx.de> <57112F31.8070209@garfieldtech.com> <57120FAF.7070602@commerce-plus.com> Date: Sat, 16 Apr 2016 18:29:56 -0700 X-Google-Sender-Auth: 63nb8P8v3RKGHCH6e0wYZJ1WuBs Message-ID: To: Ryan Pallas Cc: Bastian Schneider , "internals@lists.php.net" Content-Type: multipart/alternative; boundary=001a114021c0846a630530a42e4f Subject: Re: [PHP-DEV] Re: Improving PHP's type system From: davey@php.net (Davey Shafik) --001a114021c0846a630530a42e4f Content-Type: text/plain; charset=UTF-8 On Sat, Apr 16, 2016 at 5:06 PM, Ryan Pallas wrote: > On Sat, Apr 16, 2016 at 4:10 AM, Bastian Schneider < > bastian.schneider@commerce-plus.com> wrote: > > > > > Just a quick thought. I would prefer something like > > > > union Iterable { > > use array; > > use ArrayAccess; > > use Traversable; > > } > > > > function bla(Iterable $iterable) { > > foreach($iterable as $element) {} > > } > > > > Primitives like string, float, bool or int are not allowed in union. Only > > classes, interfaces and array. I doesn't see any benefit in combining > > string with int or int with float in one union. > > > > Here's an example that shows combining scalar maybe useful: > > union Numeric { > use int; > use float; > } > > Something I would very much like to use where types are allowed. Could also be used for solving the issue of coercing: union Numeric { use int; use float; use string as float; } Thoughts? - Davey --001a114021c0846a630530a42e4f--