Re: [julia-users] promotion vs. specialization

2016-04-21 Thread Jacob Quinn
There's also been discussion around doing this specifically for keyword
arguments, which if I remember has generally had pretty good reception. It
would make the following pattern much more friendly:

f(x; parameter_arg::Nullable{Int}=Nullable{Int}()) = ...

f(x; parameter_arg = 1)

(since the 1 would be auto-converted to Nullable{Int}(1))

-Jacob


On Thu, Apr 21, 2016 at 9:20 AM, Milan Bouchet-Valat 
wrote:

> Le jeudi 21 avril 2016 à 11:00 -0400, Yichao Yu a écrit :
> > On Thu, Apr 21, 2016 at 10:55 AM, Stefan Karpinski  wrote:
> > >
> > > This is probably more of a julia-dev topic, but my gut reaction is
> that the
> > > combination of multiple dispatch and implicit conversion would be
> chaos.
> > > Following method calls can be tricky enough (much easier with Gallium,
> > > however) with just dispatch in the mix. With implicit conversion too,
> it
> > > seems like it would be nearly impossible to know what might or might
> not be
> > > called. I think it would be too easy to accidentally invoke a method
> that
> > > wasn't intended.
> > I think the proposal was to add an automatic conversion on top of the
> > dispatch. so
> >
> > f(a::Integer as Int) = ... will be effectively translated to
> > f(_a::Integer) = (a = convert(Int, _a)::Int; ...)
> For reference, this recently came up in a PR regarding 'as':
> https://github.com/JuliaLang/julia/pull/15818#issuecomment-207922230
>
>
> Regards
>
>
> > > On Thu, Apr 21, 2016 at 9:05 AM, Didier Verna
> > > wrote:
> > > >
> > > >
> > > >
> > > >   This is just an idea from the top of my head, probably wild and
> maybe
> > > >   silly. I haven't given it any serious thought.
> > > >
> > > > Given the existence of the general promotion system (which I like a
> lot,
> > > > along with other things in Julia, such as the functor capabilities),
> I'm
> > > > wondering about automatic specialization.
> > > >
> > > > What I mean is this: suppose you have a type Foo which can be
> converted
> > > > to an Int. Suppose as well that you have a function bar that only
> works
> > > > on Ints. You cannot currently call bar with a Foo, but since Foo is
> > > > convertible to an Int, it could make sense that bar() suddenly
> becomes
> > > > an applicable method, with implicit conversion...
> > > >
> > > > --
> > > > ELS'16 registration open! http://www.european-lisp-symposium.org
> > > >
> > > > Lisp, Jazz, Aïkido: http://www.didierverna.info
> > >
>


Re: [julia-users] promotion vs. specialization

2016-04-21 Thread Milan Bouchet-Valat
Le jeudi 21 avril 2016 à 11:00 -0400, Yichao Yu a écrit :
> On Thu, Apr 21, 2016 at 10:55 AM, Stefan Karpinski  wrote:
> > 
> > This is probably more of a julia-dev topic, but my gut reaction is that the
> > combination of multiple dispatch and implicit conversion would be chaos.
> > Following method calls can be tricky enough (much easier with Gallium,
> > however) with just dispatch in the mix. With implicit conversion too, it
> > seems like it would be nearly impossible to know what might or might not be
> > called. I think it would be too easy to accidentally invoke a method that
> > wasn't intended.
> I think the proposal was to add an automatic conversion on top of the
> dispatch. so
> 
> f(a::Integer as Int) = ... will be effectively translated to
> f(_a::Integer) = (a = convert(Int, _a)::Int; ...)
For reference, this recently came up in a PR regarding 'as':
https://github.com/JuliaLang/julia/pull/15818#issuecomment-207922230


Regards


> > On Thu, Apr 21, 2016 at 9:05 AM, Didier Verna 
> > wrote:
> > > 
> > > 
> > > 
> > >   This is just an idea from the top of my head, probably wild and maybe
> > >   silly. I haven't given it any serious thought.
> > > 
> > > Given the existence of the general promotion system (which I like a lot,
> > > along with other things in Julia, such as the functor capabilities), I'm
> > > wondering about automatic specialization.
> > > 
> > > What I mean is this: suppose you have a type Foo which can be converted
> > > to an Int. Suppose as well that you have a function bar that only works
> > > on Ints. You cannot currently call bar with a Foo, but since Foo is
> > > convertible to an Int, it could make sense that bar() suddenly becomes
> > > an applicable method, with implicit conversion...
> > > 
> > > --
> > > ELS'16 registration open! http://www.european-lisp-symposium.org
> > > 
> > > Lisp, Jazz, Aïkido: http://www.didierverna.info
> > 


Re: [julia-users] promotion vs. specialization

2016-04-21 Thread Stefan Karpinski
Right, if that's the proposal it's much more reasonable.

On Thu, Apr 21, 2016 at 11:00 AM, Yichao Yu  wrote:

> On Thu, Apr 21, 2016 at 10:55 AM, Stefan Karpinski 
> wrote:
> > This is probably more of a julia-dev topic, but my gut reaction is that
> the
> > combination of multiple dispatch and implicit conversion would be chaos.
> > Following method calls can be tricky enough (much easier with Gallium,
> > however) with just dispatch in the mix. With implicit conversion too, it
> > seems like it would be nearly impossible to know what might or might not
> be
> > called. I think it would be too easy to accidentally invoke a method that
> > wasn't intended.
>
> I think the proposal was to add an automatic conversion on top of the
> dispatch. so
>
> f(a::Integer as Int) = ... will be effectively translated to
> f(_a::Integer) = (a = convert(Int, _a)::Int; ...)
>
> >
> > On Thu, Apr 21, 2016 at 9:05 AM, Didier Verna 
> > wrote:
> >>
> >>
> >>   This is just an idea from the top of my head, probably wild and maybe
> >>   silly. I haven't given it any serious thought.
> >>
> >> Given the existence of the general promotion system (which I like a lot,
> >> along with other things in Julia, such as the functor capabilities), I'm
> >> wondering about automatic specialization.
> >>
> >> What I mean is this: suppose you have a type Foo which can be converted
> >> to an Int. Suppose as well that you have a function bar that only works
> >> on Ints. You cannot currently call bar with a Foo, but since Foo is
> >> convertible to an Int, it could make sense that bar() suddenly becomes
> >> an applicable method, with implicit conversion...
> >>
> >> --
> >> ELS'16 registration open! http://www.european-lisp-symposium.org
> >>
> >> Lisp, Jazz, Aïkido: http://www.didierverna.info
> >
> >
>


Re: [julia-users] promotion vs. specialization

2016-04-21 Thread Yichao Yu
On Thu, Apr 21, 2016 at 10:55 AM, Stefan Karpinski  wrote:
> This is probably more of a julia-dev topic, but my gut reaction is that the
> combination of multiple dispatch and implicit conversion would be chaos.
> Following method calls can be tricky enough (much easier with Gallium,
> however) with just dispatch in the mix. With implicit conversion too, it
> seems like it would be nearly impossible to know what might or might not be
> called. I think it would be too easy to accidentally invoke a method that
> wasn't intended.

I think the proposal was to add an automatic conversion on top of the
dispatch. so

f(a::Integer as Int) = ... will be effectively translated to
f(_a::Integer) = (a = convert(Int, _a)::Int; ...)

>
> On Thu, Apr 21, 2016 at 9:05 AM, Didier Verna 
> wrote:
>>
>>
>>   This is just an idea from the top of my head, probably wild and maybe
>>   silly. I haven't given it any serious thought.
>>
>> Given the existence of the general promotion system (which I like a lot,
>> along with other things in Julia, such as the functor capabilities), I'm
>> wondering about automatic specialization.
>>
>> What I mean is this: suppose you have a type Foo which can be converted
>> to an Int. Suppose as well that you have a function bar that only works
>> on Ints. You cannot currently call bar with a Foo, but since Foo is
>> convertible to an Int, it could make sense that bar() suddenly becomes
>> an applicable method, with implicit conversion...
>>
>> --
>> ELS'16 registration open! http://www.european-lisp-symposium.org
>>
>> Lisp, Jazz, Aïkido: http://www.didierverna.info
>
>


Re: [julia-users] promotion vs. specialization

2016-04-21 Thread Stefan Karpinski
This is probably more of a julia-dev topic, but my gut reaction is that the
combination of multiple dispatch and implicit conversion would be chaos.
Following method calls can be tricky enough (much easier with Gallium
, however) with just dispatch in the
mix. With implicit conversion too, it seems like it would be nearly
impossible to know what might or might not be called. I think it would be
too easy to accidentally invoke a method that wasn't intended.

On Thu, Apr 21, 2016 at 9:05 AM, Didier Verna 
wrote:

>
>   This is just an idea from the top of my head, probably wild and maybe
>   silly. I haven't given it any serious thought.
>
> Given the existence of the general promotion system (which I like a lot,
> along with other things in Julia, such as the functor capabilities), I'm
> wondering about automatic specialization.
>
> What I mean is this: suppose you have a type Foo which can be converted
> to an Int. Suppose as well that you have a function bar that only works
> on Ints. You cannot currently call bar with a Foo, but since Foo is
> convertible to an Int, it could make sense that bar() suddenly becomes
> an applicable method, with implicit conversion...
>
> --
> ELS'16 registration open! http://www.european-lisp-symposium.org
>
> Lisp, Jazz, Aïkido: http://www.didierverna.info
>


Re: [julia-users] promotion vs. specialization

2016-04-21 Thread Yichao Yu
On Thu, Apr 21, 2016 at 9:05 AM, Didier Verna  wrote:
>
>   This is just an idea from the top of my head, probably wild and maybe
>   silly. I haven't given it any serious thought.
>
> Given the existence of the general promotion system (which I like a lot,
> along with other things in Julia, such as the functor capabilities), I'm
> wondering about automatic specialization.
>
> What I mean is this: suppose you have a type Foo which can be converted
> to an Int. Suppose as well that you have a function bar that only works
> on Ints. You cannot currently call bar with a Foo, but since Foo is
> convertible to an Int, it could make sense that bar() suddenly becomes
> an applicable method, with implicit conversion...

There were similar proposals. to reduce the number of specializations.
I don't think there's any obvious issues but one have to implement it
and take advantage of it in various places.

>
> --
> ELS'16 registration open! http://www.european-lisp-symposium.org
>
> Lisp, Jazz, Aïkido: http://www.didierverna.info


[julia-users] promotion vs. specialization

2016-04-21 Thread Didier Verna

  This is just an idea from the top of my head, probably wild and maybe
  silly. I haven't given it any serious thought.

Given the existence of the general promotion system (which I like a lot,
along with other things in Julia, such as the functor capabilities), I'm
wondering about automatic specialization.

What I mean is this: suppose you have a type Foo which can be converted
to an Int. Suppose as well that you have a function bar that only works
on Ints. You cannot currently call bar with a Foo, but since Foo is
convertible to an Int, it could make sense that bar() suddenly becomes
an applicable method, with implicit conversion...

-- 
ELS'16 registration open! http://www.european-lisp-symposium.org

Lisp, Jazz, Aïkido: http://www.didierverna.info