title: Really binding an argument to a parameter? (Perl6)
body: <p>The <a href="https://docs.perl6.org/type/Signature" rel="noreferrer">Perl6 docs</a> state "By default, parameters are bound to their argument and marked as read-only." But running the following code:</p>
  
  <pre><code># Example 1
  sub f1 ( $x ) { say $x.VAR.WHAT; say $x.WHAT; say $x }
  f1(1);
  </code></pre>
  
  <p>yields:</p>
  
  <pre><code>(Scalar)
  (Int)
  1
  </code></pre>
  
  <p>while this code:</p>
  
  <pre><code># Example 2
  my $y := 1;
  say $y.VAR.WHAT; say $y.WHAT; say $y;
  </code></pre>
  
  <p>yields:</p>
  
  <pre><code>(Int)
  (Int)
  1
  </code></pre>
  
  <p>It's the <code>(Scalar)</code> in the output of Example1 that I do not understand: why is there a Scalar when I supposedly bind the Int 1 - argument to the identifier <code>$x</code> ? It seems as if the value <code>1</code> got "assigned" to <code>$x</code>, rather than "bound". </p>