I was curious about grammars being classes or singletons, so I created this small program to find out:
grammar Mini {
token TOP { \* <word> \* }
token word { \w+ }
}
proto sub is-class( | ) { * };
multi sub is-class( Grammar:D $g ) { return "Object" };
multi sub is-class( Grammar:U $g ) { return "Class" };
say is-class( Mini );
This uses multiple dispatch to find that out, and it turns out that Mini
is actually a class. In general, would there be a shorter way of finding this out? Or a way that would not require to know the actual class of which the package might be an instance?
You can disambiguate 'instances' and 'classes' via DEFINITE, ie
Mini.DEFINITE ?? 'Object' !! 'Class'
or rather
Mini.DEFINITE ?? 'concrete object' !! 'type object'
should do the trick.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With