3 ms·
> Dylan and Julia both have functions which are generic by default And Perl 6. > in CL you cannot use multiple dispatch on parametric types. You can in Perl
by raiph 10y ago
> Dylan and Julia both have functions which are generic by default
And Perl 6.
> in CL you cannot use multiple dispatch on parametric types.
You can in Perl 6.
> In Julia even something as basic as mixed-type addition – e.g. `1 + 2.5` – is defined in terms of layers of generic functions, but the compiler is clever enough to boil it down to a couple of machine instructions. This allows multiple dispatch to be used everywhere, which is really transformative.
MD has been used everywhere in Perl 6.
Perl 6 has maturity issues, including performance. But I see these as temporary issues.
> It seems a bit remiss to have a series on multiple dispatch and never mention the two languages – Dylan and Julia – that take the paradigm the furthest and most seriously.
Are you omitting Perl 6 because you don't think it's ready for prime time or you don't know enough about it's MD features?
------
I note that the OP series is about "runtime subtype-based polymorphism". I'm surprised at the exclusion of compile-time MD in a series which purports to be a general guide.
- StefanKarpinski 10y ago> Are you omitting Perl 6 because you don't think it's ready for prime time or you don't know enough about it's MD features? Both. Are basic operations like `+` generic in Perl 6?
- raiph 10y ago> Are basic operations like `+` generic in Perl 6? Yes.
- StefanKarpinski 10y agoWell, that's cool. Maybe Perl 6 will be the next good example of a multiple dispatch language.
- raiph 10y agoI think I misunderstood your comment about CL vs Julia/Dylan in regard to generic "by default". In Perl 6 this function definition implies a generic function: multi concatenate (\foo, \bar) { foo ~ bar } This function definition does not: sub concatenate (\foo, \bar) { foo ~ bar } If one views the latter as the "default" (because it's two characters shorter and might be learned first) then Perl 6 has the same weakness, or at least the same default, as CL, compared to Julia and Dylan.