gensym.rs
use lazy_static::lazy_static;
use parking_lot::Mutex;
lazy_static! {
static ref CTR: Mutex<usize> = Mutex::new(0);
}
pub fn gensym() -> String {
gensym_prefix("var")
}
pub fn gensym_prefix(prefix: impl AsRef<str>) -> String {
let mut g = CTR.lock();
let ctr = *g;
*g += 1;
drop(g);
format!("{}{}", prefix.as_ref(), ctr)
}