title: Multi subroutine recursive in Raku
body: <p>I'm learning raku, following the book <a href="https://greenteapress.com/wp/think-perl-6/" rel="noreferrer">Thinking in Raku</a></p>
  <p>There is an exercise that I need to define the ackermann function.</p>
  <p>I defined a positive Integer subset:</p>
  <pre><code>subset Positive-Integer of Int where { $_ &gt; 0}
  </code></pre>
  <p>Then I goes through the recursive version using:</p>
  <pre><code>multi ackermann(0, Positive-Integer $n) {
      $n + 1;
  }
  
  multi ackermann(Positive-Integer $m, 0) {
      ackermann $m - 1, 1;
  }
  
  multi ackermann(Positive-Integer $m, Positive-Integer $n) {
      ackermann $m - 1, ackermann $m, $n - 1;
  }
  </code></pre>
  <p>but executing the code I get when executing:</p>
  <p>ackermann 3, 4;</p>
  <pre><code>&gt; * * &amp;ackermann
  &gt; &gt; * * &amp;ackermann
  &gt; &gt; * * &amp;ackermann
  &gt; &gt; ackermann 3, 4
  Cannot resolve caller ackermann(Int:D, Int:D); none of these signatures match:
      (0, Int $n)
      (Int $m, 0)
    in sub ackermann at &lt;unknown file&gt; line 3
    in sub ackermann at &lt;unknown file&gt; line 3
    in sub ackermann at &lt;unknown file&gt; line 3
    in sub ackermann at &lt;unknown file&gt; line 3
    in sub ackermann at &lt;unknown file&gt; line 3
    in sub ackermann at &lt;unknown file&gt; line 3
    in sub ackermann at &lt;unknown file&gt; line 3
    in block &lt;unit&gt; at &lt;unknown file&gt; line 2
  
  &gt; 
  </code></pre>
  <p>I do not get the point of what it is happening here.</p>