Mercurial > urweb
changeset 465:ddd363e856ff
Cookie prose; fix bugs that broke demo compilation
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Thu, 06 Nov 2008 12:46:45 -0500 |
parents | 91914c15a85b |
children | 1626dcba13ee |
files | demo/cookie.ur demo/prose src/mono_reduce.sml src/monoize.sml |
diffstat | 4 files changed, 22 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/demo/cookie.ur Thu Nov 06 12:22:50 2008 -0500 +++ b/demo/cookie.ur Thu Nov 06 12:46:45 2008 -0500 @@ -6,21 +6,16 @@ fun main () = ro <- getCookie c; - let - val xml = case ro of - None => <xml>No cookie set.</xml> - | Some v => <xml>Cookie: A = {[v.A]}, B = {[v.B]}, C = {[v.C]}</xml> - in - return <xml><body> - {xml}<br/><br/> + return <xml><body> + {case ro of + None => <xml>No cookie set.</xml> + | Some v => <xml>Cookie: A = {[v.A]}, B = {[v.B]}, C = {[v.C]}</xml>} + <br/><br/> - <form> - A: <textbox{#A}/><br/> - B: <textbox{#B}/><br/> - C: <textbox{#C}/><br/> - <submit action={set}/> - </form> - </body></xml> - end - - + <form> + A: <textbox{#A}/><br/> + B: <textbox{#B}/><br/> + C: <textbox{#C}/><br/> + <submit action={set}/> + </form> + </body></xml>
--- a/demo/prose Thu Nov 06 12:22:50 2008 -0500 +++ b/demo/prose Thu Nov 06 12:46:45 2008 -0500 @@ -58,6 +58,12 @@ <p>Here is an implementation of the tiny challenge problem from <a href="http://www.accursoft.co.uk/web/">this web framework comparison</a>. Using nested function definitions, it is easy to persist state across clicks.</p> +cookie.urp + +<p>Often, it is useful to associate persistent data with particular web clients. Ur/Web includes an easy facility for using type-safe cookies. This example shows how to use a form to set a named cookie.</p> + +<p>After setting the cookie, try browsing back to this demo from the main index. The data you entered should still be there.</p> + listShop.urp <p>This example shows off algebraic datatypes, parametric polymorphism, and functors.</p>
--- a/src/mono_reduce.sml Thu Nov 06 12:22:50 2008 -0500 +++ b/src/mono_reduce.sml Thu Nov 06 12:46:45 2008 -0500 @@ -352,9 +352,10 @@ (EApp (b, liftExpInExp 0 e'), loc)), loc)) | ELet (x, t, e', (EAbs (x', t' as (TRecord [], _), ran, e''), loc)) => - if impure e' then + (*if impure e' then e - else + else*) + (* Seems unsound in general without the check... should revisit later *) EAbs (x', t', ran, (ELet (x, t, liftExpInExp 0 e', swapExpVars 0 e''), loc)) | ELet (x, t, e', b) =>
--- a/src/monoize.sml Thu Nov 06 12:22:50 2008 -0500 +++ b/src/monoize.sml Thu Nov 06 12:46:45 2008 -0500 @@ -1565,13 +1565,9 @@ | L.EFfiApp ("Basis", "nextval", [e]) => let - val un = (L'.TRecord [], loc) - val int = (L'.TFfi ("Basis", "int"), loc) val (e, fm) = monoExp (env, st, fm) e in - ((L'.EAbs ("_", un, int, - (L'.ENextval (liftExpInExp 0 e), loc)), loc), - fm) + ((L'.ENextval e, loc), fm) end | L.EApp (