On Wed, Feb 18, 2015 at 4:05 AM, Nikita Popov <nikita....@gmail.com> wrote:

> On Wed, Feb 18, 2015 at 1:53 AM, Rasmus Lerdorf <ras...@lerdorf.com>
> wrote:
>
> > On 02/17/2015 04:35 PM, Nikita Popov wrote:
> > > I don't buy into Rasmus arguments about internal functions. They
> concern
> > > one particular edge case (int->float coercion) and I doubt they have
> much
> > > relevance if applied to codebases with pervasive use of typehints
> (where
> > > you can be reasonably sure of the types of your variables). Even if,
> for
> > > the sake of argument, we acknowledge the concern as valid we should be
> > > discussing that particular case (int->float coercion) rather than
> > dropping
> > > the strict typing for internal functions altogether.
> >
> > int->float is actually secondary to "123"->int. And while they may be
> > edge-cases there are enough of them that we would be pushing people
> > towards casting by default which should be a last-resort thing, not the
> > first thing you do.
> >
>
> The inability to implicitly cast "123" to int is pretty much the KEY
> distinction between weak and strict scalar typehints (those pesky
> value-dependent type checks). If the strict typing mode doesn't offer this,
> what's the point at all?
>
> This is exactly what I fear will happen with an arginfo based approach. If
> even fundamental aspects like the "123" vs 123 (or true vs 1) distinction
> are suppressed for internal functions, this isn't a strict typing mode,
> it's just a weak typing mode with slightly different rules.
>
>
The difference between true and 1 is even more strict than rules of
statically typed languages.
Could you write a short list, where the strict types are really useful.
In my opinion it's only program verification, but for this case we may
enable strict typing by a tool and not in the language definition (we may
provide callback in the core).

Thanks. Dmitry.


> Nikita
>

Reply via email to