view tests/tail.ur @ 983:2cd8c1aa0d3a

Add tail call optimization to interpretation
author Adam Chlipala <adamc@hcoop.net>
date Thu, 24 Sep 2009 15:45:37 -0400
parents d80734855790
children
line wrap: on
line source
fun one () = return 1

fun addEm n =
    if n = 0 then
        return 0
    else
        n1 <- rpc (one ());
        n2 <- addEm (n - 1);
        return (n1 + n2)

fun addEm' n acc =
    if n = 0 then
        return acc
    else
        n1 <- rpc (one ());
        addEm' (n - 1) (n1 + acc)

fun main () =
    s <- source 0;
    s' <- source 0;
    return <xml><body onload={n <- addEm 3; set s n; n <- addEm' 4 0; set s' n; alert "Welcome!"}>
      <dyn signal={n <- signal s; return (txt n)}/>
      <dyn signal={n <- signal s'; return (txt n)}/>
    </body></xml>