From ae83d3e44959b43c167ba83736055bf94ace3113 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Thu, 17 Sep 2009 16:35:11 -0400 Subject: Basic tail recursion introduction seems to be working --- demo/more/dlist.ur | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'demo/more/dlist.ur') diff --git a/demo/more/dlist.ur b/demo/more/dlist.ur index a8c464a6..6e660ab8 100644 --- a/demo/more/dlist.ur +++ b/demo/more/dlist.ur @@ -48,6 +48,24 @@ fun append [t] dl v = set tl new; return (tailPos cur new tl) +fun replace [t] dl ls = + case ls of + [] => set dl Empty + | x :: ls => + tl <- source Nil; + let + fun build ls acc = + case ls of + [] => return acc + | x :: ls => + this <- source (Cons (x, tl)); + build ls this + in + hd <- build (List.rev ls) tl; + tlS <- source tl; + set dl (Nonempty {Head = Cons (x, hd), Tail = tlS}) + end + fun renderDyn [ctx] [ctx ~ body] [t] (f : t -> position -> xml (ctx ++ body) [] []) filter dl =