view tests/tail.ur @ 1431:4a6f84092399

Represent 'unit' as C 'int'; change pattern match compilation to avoid 'goto'; change Postgres prepared statement compilation to make life easier for the GCC escape analysis; all this in support of better tail call optimization
author Adam Chlipala <adam@chlipala.net>
date Thu, 10 Mar 2011 18:51:15 -0500
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>