I will talk about which methods get called by
which(methods) calls. How does Julia decide? How fast does it decide? And when does it figure it all out?
Let’s take a lightning fast dive together into the complexities of the method selection algorithm we affectionately call multiple-dispatch.
The semantics of multiple dispatch can sound simple and obvious at first glance. But there are lots of strange cases to consider when you start to really explore the details. So how do we do this in a mere few hundred lines of C code? What happens if two methods overlap in applicability? What happens when the user calls invoke instead? How do we track when something changes, after loading a new package or Reviseing an existing one? I will walk through the process of taking the full list of methods in Julia and picking out exactly which method to call. Then take a look at how we extend that action to re-evaluate the results after every new method that gets added.