chore: prevent strings from being inlined and replicated
This commit is contained in:
parent
c2bf6e5682
commit
98cb01413b
|
@ -183,9 +183,14 @@ fn lambda_reducer(term: &mut Term<Name>) {
|
||||||
body,
|
body,
|
||||||
} = func
|
} = func
|
||||||
{
|
{
|
||||||
if let replace_term @ (Term::Var(_) | Term::Constant(_) | Term::Builtin(_)) = arg {
|
if let Term::Constant(c) = arg {
|
||||||
|
if !matches!(c.as_ref(), Constant::String(_)) {
|
||||||
|
let body = Rc::make_mut(body);
|
||||||
|
*term = substitute_term(body, parameter_name.clone(), arg);
|
||||||
|
}
|
||||||
|
} else if let Term::Var(_) | Term::Builtin(_) = arg {
|
||||||
let body = Rc::make_mut(body);
|
let body = Rc::make_mut(body);
|
||||||
*term = substitute_term(body, parameter_name.clone(), replace_term);
|
*term = substitute_term(body, parameter_name.clone(), arg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue