On Fri, Sep 14, 2018 at 7:08 AM Todd Chester <toddandma...@zoho.com
<mailto:toddandma...@zoho.com>> wrote:
On 09/14/2018 04:01 AM, Simon Proctor wrote:
> :D is a type constraint requiring an instantiated (or defined)
object of
> the given type (or a subtype of it).
>
> :U is a type constraint saying you have a container specified for
the
> given type that hasn't been instantiated.
Hi Simon,
Your went over my head. What the heck is "instantiated"?
https://www.dictionary.com/browse/instantiate
verb (used with object), in·stan·ti·at·ed, in·stan·ti·at·ing.
to provide an instance of or concrete evidence in support
of (a theory, concept, claim, or the like).
I am not connecting the dots.
Is there a list of these guys somewhere, or are these the only two?
-T
On 09/14/2018 04:16 AM, Curt Tilmes wrote:
See
https://docs.perl6.org/type/Signature#Constraining_defined_and_undefined_values
If I say "my Int $x",
$x is now an Int, but an undefined Int.
If I say "my Int $x = 42",
$x is an Int, but set to a defined value, 42.
Both are Int:
say 42 ~~ Int; # OUTPUT: «True»
say Int ~~ Int; # OUTPUT: «True»
There are three type constraint suffixes you can add -- :D (defined), :U
(undefined) or :_ (defined or undefined)
# Checking a type object
say Int ~~ Any:D; # OUTPUT: «False»
say Int ~~ Any:U; # OUTPUT: «True»
say Int ~~ Any:_; # OUTPUT: «True»
# Checking an object instance
say 42 ~~ Any:D; # OUTPUT: «True»
say 42 ~~ Any:U; # OUTPUT: «False»
say 42 ~~ Any:_; # OUTPUT: «True»
Hi Curt,
Beautiful explanation! I am writing it down tomorrow
in my keepers file.
Thank you!
-T