diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/_vec.rs | 2 | ||||
| -rw-r--r-- | src/lib/option.rs | 12 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/lib/_vec.rs b/src/lib/_vec.rs index 6fc1d700..cc8fabca 100644 --- a/src/lib/_vec.rs +++ b/src/lib/_vec.rs @@ -266,7 +266,7 @@ fn unzip[T, U](&vec[tup(T, U)] v) -> tup(vec[T], vec[U]) { fn or(&vec[bool] v) -> bool { auto f = orb; - be _vec.foldl[bool, bool](f, false, v); + ret _vec.foldl[bool, bool](f, false, v); } fn clone[T](&vec[T] v) -> vec[T] { diff --git a/src/lib/option.rs b/src/lib/option.rs index 66a41bca..e214c774 100644 --- a/src/lib/option.rs +++ b/src/lib/option.rs @@ -39,12 +39,16 @@ fn is_none[T](&t[T] opt) -> bool { } fn from_maybe[T](&T def, &t[T] opt) -> T { - alt(opt) { - case (none[T]) { ret def; } - case (some[T](?t)) { ret t; } - } + auto f = bind util.id[T](_); + ret maybe[T, T](def, f, opt); } +fn maybe[T, U](&U def, fn(&T) -> U f, &t[T] opt) -> U { + alt (opt) { + case (none[T]) { ret def; } + case (some[T](?t)) { ret f(t); } + } +} // Local Variables: // mode: rust; // fill-column: 78; |