{"body":"use nqp;\nsub postcircumfix:<{; }>(\\SELF, @indices, :$exists!) {\n    multi recurse-at-key(\\SELF, \\indices, 0) {\n\t\t(False xx indices.map(*.elems).reduce(&infix:<*>)).List\n\t}\n    multi recurse-at-key(\\SELF, [@idx, +@indices]) {\n\t\t@idx.map( -> $idx { |recurse-at-key(SELF, ($idx, |@indices)) }).List\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\ndd %a{1;2;3}:exists;\ndd %a{-99;2;3}:exists;\ndd %a{-99;2,3;4}:exists;\ndd %a{1,1;2;3}:exists;\ndd %a{1;2,2;3}:exists;\ndd %a{1;2,2;3,3}:exists;\ndd %a{1,1;2,2;3,3}:exists;\ndd %a{1,1;-99,2;3,3}:exists;","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/CGDZ7gJw","modified":1490757389,"id":"CGDZ7gJw","size":836,"lines":32,"own_paste":false,"theme":"","date":1490757389}