A technique for polymorphic invocation of methods based on the types of many (or all) arguments. Compare to single-dispatch, used in common OO languages, where methods can only be polymorphic in the first argument -- the runtime resolution of a.doSomething(x, y, z) depends only on the type of a.
Questions tagged [multiple-dispatch]
106 questions
321
votes
20 answers
Python function overloading
I know that Python does not support method overloading, but I've run into a problem that I can't seem to solve in a nice Pythonic way.
I am making a game where a character needs to shoot a variety of bullets, but how do I write different functions…

Bullets
- 3,251
- 3
- 15
- 6
49
votes
4 answers
Multiple dispatch in C++
I am trying to understand what multiple dispatch is. I read a lot of various texts but I still have no idea what multiple dispatch is and what it is good for. Maybe the thing I am missing is piece of code using multiple dispatch. Please, can you…

Martin
- 1,473
- 2
- 12
- 20
40
votes
2 answers
How to write "good" Julia code when dealing with multiple types and arrays (multiple dispatch)
OP UPDATE: Note that in the latest version of Julia (v0.5), the idiomatic approach to answering this question is to just define mysquare(x::Number) = x^2. The vectorised case is covered using automatic broadcasting, i.e. x = randn(5) ; mysquare.(x).…

Colin T Bowers
- 18,106
- 8
- 61
- 89
35
votes
7 answers
What's the difference between Polymorphism and Multiple Dispatch?
...or are they the same thing? I notice that each has its own Wikipedia entry: Polymorphism, Multiple Dispatch, but I'm having trouble seeing how the concepts differ.
Edit: And how does Overloading fit into all this?

raldi
- 21,344
- 33
- 76
- 86
32
votes
8 answers
Is C# a single dispatch or multiple dispatch language?
I'm trying to understand what single and multiple dispatch are, exactly.
I just read this:
http://en.wikipedia.org/wiki/Multiple_dispatch
And from that definition is seems to me that C# and VB.Net are multiple-dispatch, even though the choice of…

Daniel Magliola
- 30,898
- 61
- 164
- 243
17
votes
1 answer
How does Julia implement multimethods?
I've been reading a bit from http://c2.com/cgi/wiki?ImplementingMultipleDispatch
I've been having some trouble finding reference on how Julia implements multimethods. What's the runtime complexity of dispatch, and how does it achieve it?

math4tots
- 8,540
- 14
- 58
- 95
12
votes
2 answers
Is there any difference between multimethod and multipledispatch?
I would like to use overloading in Python. I know it's not possible by design (Python is dynamically typed language), there is quite good thread here on this topic. That's why I could use something like multiple dispatch (multimethods). And I'm…

Nerxis
- 3,452
- 2
- 23
- 39
12
votes
1 answer
How to provide a non-slurpy array or named array from the command line?
First of all: raku (perl6) is amazing. And so is Cro. It only took a week-end to fall in love. However now I stumble over something that must be extremely simple.
If I use a slurpy parameter in a multiple dispatch MAIN this is recognized and works…

acw
- 447
- 2
- 9
10
votes
3 answers
Can one encode binary functions between types in OCaml?
I am wondering if it is possible to build something similar to multiple dispatch in OCaml. To do that, I tried to make an explicit type for the input signature of a multimethod. As an example, I define a number type
type _ num =
| I : int -> int…

user3240588
- 1,252
- 9
- 16
10
votes
1 answer
What method did Julia use?
I have defined the following variable
julia> X = (1:10) * ones(1,10)
which defines a matrix with each row equals to the same number and the numbers in the column increasing from 1 to 10 by 1. I want to know which method used Julia for the function…

dapias
- 2,512
- 3
- 15
- 23
9
votes
1 answer
How to avoid massive amounts of boilerplate in Julia with new types?
I'm considering writing a type similar to those defined in NamedArrays and Images. Let's say I just want essentially an Array with a piece of metadata, say a user-friendly name that I'll write at the top of a file when I write the array to disk.…

Philip
- 7,253
- 3
- 23
- 31
9
votes
2 answers
Use invokedynamic to implement multiple dispatch
I wondered if Java7's new invokedynamic bytecode instruction could be used to implement multiple dispatch for the Java language. Would the new API under java.lang.invoke be helpful to perform such a thing?
The scenario I was thinking about looked as…

Matt
- 868
- 8
- 12
8
votes
2 answers
Dispatching on arguments after the slurping operator (args...) in julia
How would you implement a function like this:
function foo(a,b...,c)
println(a,b,c)
end
foo(2,3,3,"last")
=> a = 2 , b = (3,3) , c = "last"
I cannot use something like:
function foo(a,b...)
c = b[end]
println(a,b,c)
end
Because I…

ailuj
- 83
- 4
8
votes
1 answer
Generic dispatch with Symbols
I was wondering if there was a way to use Symbols for multiple dispatch, but also include a "catch-all method". i.e. something like
function dispatchtest{alg<:Symbol}(T::Type{Val{alg}})
println("This is the generic dispatch. The algorithm is…

Chris Rackauckas
- 18,645
- 3
- 50
- 81
7
votes
2 answers
Can I choose between Perl 6 multis that have no parameters?
I can choose a multi based on some non-argument value but I have to have at least one argument so I can kludge the where in there:
our $*DEBUG = 1;
debug( 'This should print', 'Phrase 2' );
$*DEBUG = 0;
debug( 'This should not print' );
multi…

brian d foy
- 129,424
- 31
- 207
- 592