32 lines
612 B
Plaintext
32 lines
612 B
Plaintext
pub hkt Functor[Self<T>]
|
|
fn <U> map(f: fn (t: T) -> U) -> Self<U>
|
|
end
|
|
|
|
pub int Iterable<T>
|
|
fn iter() -> Iterator<T>
|
|
end
|
|
|
|
pub int Iterator<T> = () -> Option<T>
|
|
|
|
pub enum Option<T> : Functor[Self<T>]
|
|
Some(T),
|
|
None;
|
|
|
|
fn unwrap() -> T
|
|
self is Some(t) ? t : throw Exception('Empty Option')
|
|
end
|
|
|
|
fn expect(msg: String) -> T
|
|
self is Some(t) ? t : throw Exception(msg)
|
|
end
|
|
|
|
impl Functor
|
|
fn <U> map(f: fn (t: T) -> U) -> Self<U>
|
|
self is Some(t) ? Some(f(t)) : None
|
|
end
|
|
end
|
|
|
|
static fn lift(t: T) -> Self<T>
|
|
Some(t)
|
|
end
|
|
end |