1
1
mirror of https://github.com/kanaka/mal.git synced 2024-10-05 18:08:55 +03:00

perl6: prevent defmacro from mutating functions

This commit is contained in:
Nicolas Boulenguez 2021-08-18 13:33:02 +02:00 committed by Joel Martin
parent 5452aa2782
commit c937e2a7a9
3 changed files with 3 additions and 0 deletions

View File

@ -108,6 +108,7 @@ sub eval ($ast is copy, $env is copy) {
when 'quasiquote' { $ast = quasiquote($a1) }
when 'defmacro!' {
my $func = eval($a2, $env);
$func = MalFunction($func.ast, $func.env, $func.params, $func.fn);
$func.is_macro = True;
return $env.set($a1.val, $func);
}

View File

@ -108,6 +108,7 @@ sub eval ($ast is copy, $env is copy) {
when 'quasiquote' { $ast = quasiquote($a1) }
when 'defmacro!' {
my $func = eval($a2, $env);
$func = MalFunction($func.ast, $func.env, $func.params, $func.fn);
$func.is_macro = True;
return $env.set($a1.val, $func);
}

View File

@ -108,6 +108,7 @@ sub eval ($ast is copy, $env is copy) {
when 'quasiquote' { $ast = quasiquote($a1) }
when 'defmacro!' {
my $func = eval($a2, $env);
$func = MalFunction($func.ast, $func.env, $func.params, $func.fn);
$func.is_macro = True;
return $env.set($a1.val, $func);
}