On 10/20/25 10:28 AM, Quanrong via perl6-users wrote:
> Oh, but it *does* serve a purpose, and it *will* fire under the right circumstances!  For instance:
 >
 > $ raku -e 'sub a(--> Int:D) { Int }; a'
 > Type check failed for return value; expected Int:D but got Int (Int)
 >    in sub a at -e line 1
 >    in block <unit> at -e line 1

You are right! I had missed that, it's very obvious in retrospective. Now I understand.
Thanks for your help! And for working on Raku :)


Okay, made me look up what an Int:D is.  This back
from search.brave.com's AI:

    In Raku, Int:D refers to a type constraint that specifies
    a defined value of the Int type. It is used to restrict
    a variable or parameter to only accept instances of the
    Int class (i.e., actual integer values), excluding the
    Int type object itself. For example, declaring
      my Int:D $x = 42;
    ensures that $x can only hold an integer value and not
    the Int type object. This constraint is useful for enforcing
    that a variable contains a concrete, defined integer rather
    than a type object. The :D smiley stands for "definite,"
    indicating that the value must be defined.

I use Int a lot.  When would Int:D be useful?  When you
want the finger wagged at you if you send a Nil?

Yours in confusion,
-T

Reply via email to