Created
August 30, 2016 12:45
-
-
Save gfldex/ede35a3da3f2c0cb517ca478f2efea7b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use v6; | |
enum Noms(<Greenstuff Walkingstuff Syntetics>); | |
(my %eaten{Noms} is default(0)) does role :: { | |
method keys { Noms::.values } | |
method kv { gather for self.keys -> \k { take k, self.{k}} } | |
}; | |
%eaten{Greenstuff}++; | |
dd %eaten, %eaten.keyof, %eaten.keys; | |
dd %eaten.kv; | |
role Enumkeys[::T] { | |
method keys { T::.values } | |
multi method kv(Positional:D) { gather for self.keys -> \k { take k, self.[k] } } | |
multi method kv(Associative:D) { gather for self.keys -> \k { take k, self.{k} } } | |
} | |
multi sub prefix:<+>(Any:U \E where .HOW ~~ Metamodel::EnumHOW){ E.enums.elems } | |
(my @eaten[+Noms]) does Enumkeys[Noms]; | |
dd @eaten.kv; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment