// Option type utilities // For working with optional values /// Wrap a value in Some pub fn some(value: T): Option = Some(value) /// The None value pub fn none(): Option = None /// Check if option has a value pub fn isSome(opt: Option): Bool = match opt { Some(_) => true, None => false } /// Check if option is empty pub fn isNone(opt: Option): Bool = match opt { Some(_) => false, None => true } /// Get value or default pub fn unwrapOr(opt: Option, default: T): T = match opt { Some(v) => v, None => default } /// Map over the value if present pub fn map(opt: Option, f: fn(T): U): Option = match opt { Some(v) => Some(f(v)), None => None } /// FlatMap (bind) for options pub fn flatMap(opt: Option, f: fn(T): Option): Option = match opt { Some(v) => f(v), None => None } /// Filter option by predicate pub fn filter(opt: Option, pred: fn(T): Bool): Option = match opt { Some(v) => if pred(v) then Some(v) else None, None => None } /// Convert Option to List (empty or singleton) pub fn toList(opt: Option): List = match opt { Some(v) => [v], None => [] }