You have two parameters - a vector of size &quot;m&quot;, and a vector of size &quot;n&quot;.  The function signature then expects to get back a vector of size &quot;m + n&quot;.<p>Contrast that with a language with method signatures that can only return types like &quot;Vector&quot; or &quot;List&quot;, without any information that is dependent on the incoming parameters.<p>So then, the logic is checked - if the method returns a vector that is anything other than the size of the two incoming parameter vector sizes added together, it won&#x27;t compile.<p>In other words, even more behavior that would normally be a runtime bug is checked at compile time, which is a good thing if you are working in a domain where correctness is important and want to avoid runtime bugs.