clvm_tools_rs 0.4.0

tools for working with chialisp language; compiler, repl, python and wasm bindings
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use std::sync::atomic::AtomicUsize;
use std::sync::atomic::Ordering;

lazy_static! {
    pub static ref ARGNAME_CTR: AtomicUsize = AtomicUsize::new(0);
}

/// As (gensym ...) in lisp.
pub fn gensym(name: Vec<u8>) -> Vec<u8> {
    let count = ARGNAME_CTR.fetch_add(1, Ordering::SeqCst);
    let mut result_vec = name;
    let number_value = format!("{}", count + 1);
    result_vec.append(&mut "_$_".as_bytes().to_vec());
    result_vec.append(&mut number_value.as_bytes().to_vec());
    result_vec
}