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:
parent
5452aa2782
commit
c937e2a7a9
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user