{"body":"use nqp;\nsub postcircumfix:<{; }>(\\SELF, @indices, :$exists!) {\n    multi recurse-at-key(\\SELF, \\indices, 0) {\n\t\tFalse xx indices.map(*.elems).reduce(&infix:<*>)\n\t}\n    multi recurse-at-key(\\SELF, [@idx, +@indices]) {\n\t\t@idx.map: -> $idx { |recurse-at-key(SELF, ($idx, |@indices)) }\n\t}\n\tmulti recurse-at-key(\\SELF, [$idx, +@indices where *.elems > 0]) {\n\t\tnqp::if(\n\t\t\tnqp::not_i(SELF.EXISTS-KEY($idx)),\n\t\t\trecurse-at-key(SELF{$idx}, @indices, 0),\n\t\t\trecurse-at-key(SELF{$idx}, @indices),\n\t\t)\n\t}\n\tmulti recurse-at-key(\\SELF, [$idx]) {\n\t\tSELF.EXISTS-KEY($idx)\n\t}\n\n\trecurse-at-key SELF, @indices\n}\n\nmy %a = 1 => {2 => {3 => 42}};\n\nsay %a{1;2;3}:exists;\nsay %a{-99;2;3}:exists;\nsay %a{-99;2,3;4}:exists;\nsay %a{1,1;2;3}:exists;\nsay %a{1;2,2;3}:exists;\nsay %a{1;2,2;3,3}:exists;\nsay %a{1,1;2,2;3,3}:exists;\nsay %a{1,1;-99,2;3,3}:exists;","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/fYK6sZos","modified":1490757001,"id":"fYK6sZos","size":831,"lines":32,"own_paste":false,"theme":"","date":1490757001}