9 method new
($outer?
, @binds?
, @exprs?
) {
10 self
.bless(:$outer, :@binds, :@exprs);
13 submethod BUILD
(:@
!binds
, :@
!exprs
, :$!outer
, :%!data
) {
14 for @
!binds
.kv
-> $idx, $key {
16 my $value = MalList
([@
!exprs
[$idx..*]]);
17 self
.set
(@
!binds
[$idx+1], $value);
20 my $value = @
!exprs
[$idx];
21 self
.set
($key, $value);
25 method set
($key, $value) {
26 %.data
{$key} = $value;
30 return %.data
{$key} ?? self
!! $.outer
&& $.outer
.find
($key);
34 my $env = self
.find
($key) or die X
::MalNotFound
.new
(name
=> $key);
35 return $env.data
{$key};