///|
fn[T] unless(cond : Bool, value : () -> T) -> T? {
if !cond {
Some(value())
} else {
None
}
}
///|
fn[T] when(cond : Bool, value : () -> T) -> T? {
if cond {
Some(value())
} else {
None
}
}
///|
fn isInValidName(name : String) -> Bool {
if name.is_empty() {
return true
}
let contain_illegal_chars = !name
.iter()
.all(c => c.is_ascii_alphabetic() ||
c.is_ascii_digit() ||
c == '_' ||
c == '$')
contain_illegal_chars
}