From f6beec6c43a720cded80cb2769b295882b94fdc2 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Sun, 22 May 2011 00:46:50 -0400 Subject: [PATCH] stdlib: Do tail calls in std::list. Remove FIXMEs --- src/lib/list.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/lib/list.rs b/src/lib/list.rs index fb7703a0b1d..4466a887072 100644 --- a/src/lib/list.rs +++ b/src/lib/list.rs @@ -25,15 +25,12 @@ fn foldl[T,U](&list[T] ls, &U u, fn(&T t, &U u) -> U f) -> U { alt(ls) { case (cons[T](?hd, ?tl)) { auto u_ = f(hd, u); - // FIXME: should use 'be' here, not 'ret'. But parametric - // tail calls currently don't work. - ret foldl[T,U](*tl, u_, f); + be foldl[T,U](*tl, u_, f); } case (nil[T]) { ret u; } } - fail; // TODO: remove me when exhaustiveness checking works } @@ -43,9 +40,7 @@ fn find[T,U](&list[T] ls, case (cons[T](?hd, ?tl)) { alt (f(hd)) { case (none[U]) { - // FIXME: should use 'be' here, not 'ret'. But parametric - // tail calls currently don't work. - ret find[T,U](*tl, f); + be find[T,U](*tl, f); } case (some[U](?res)) { ret some[U](res);