diff --git a/lib/Minilisp.pm b/lib/Minilisp.pm index 7ac8b65..d12d968 100644 --- a/lib/Minilisp.pm +++ b/lib/Minilisp.pm @@ -362,7 +362,12 @@ sub macro_defun { return sub { my $ctx = shift; - my $fn = $body->($ctx); + my $fn; + my $self = sub { + return $fn->(@_); + }; + $ctx->{$ident->{value}} = $self; + $fn = $body->($ctx); $ctx->{$ident->{value}} = $fn; return $fn; }