diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-10-21 17:34:20 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-10-21 17:34:20 -0400 |
commit | bda701f557d0e9aadd4717dd4fd6a38ac8ceb1eb (patch) | |
tree | e4635d5a6f6b89dfa6beb1fcc253363184d2a01e | |
parent | d4e5d7bbce0aac719ac2c6451e0a6bfb675ab641 (diff) |
Rec demo
-rw-r--r-- | demo/prose | 4 | ||||
-rw-r--r-- | demo/rec.ur | 7 | ||||
-rw-r--r-- | demo/rec.urp | 2 | ||||
-rw-r--r-- | demo/rec.urs | 1 | ||||
-rw-r--r-- | lib/basis.urs | 1 |
5 files changed, 15 insertions, 0 deletions
@@ -38,6 +38,10 @@ link.urp <p>In <tt>link.ur</tt>, we see how easy it is to link to another page. The Ur/Web compiler guarantees that all links are valid. We just write some Ur/Web code inside an "antiquote" in our XML, denoting a transaction that will produce the new page if the link is clicked.</p> +rec.urp + +<p>Crafting webs of interlinked pages is easy, using recursion.</p> + form.urp <p>Here we see a basic form. The type system tracks which form inputs we include, and it enforces that the form handler function expects a record containing exactly those fields, with exactly the proper types.</p> diff --git a/demo/rec.ur b/demo/rec.ur new file mode 100644 index 00000000..a8084462 --- /dev/null +++ b/demo/rec.ur @@ -0,0 +1,7 @@ +fun main () = return <xml><body> + <a link={other ()}>Go to the other one!</a> +</body></xml> + +and other () = return <xml><body> + <a link={main ()}>Return to <tt>main</tt>!</a> +</body></xml> diff --git a/demo/rec.urp b/demo/rec.urp new file mode 100644 index 00000000..979d20d5 --- /dev/null +++ b/demo/rec.urp @@ -0,0 +1,2 @@ + +rec diff --git a/demo/rec.urs b/demo/rec.urs new file mode 100644 index 00000000..6ac44e0b --- /dev/null +++ b/demo/rec.urs @@ -0,0 +1 @@ +val main : unit -> transaction page diff --git a/lib/basis.urs b/lib/basis.urs index 212cccc6..53c4529d 100644 --- a/lib/basis.urs +++ b/lib/basis.urs @@ -333,6 +333,7 @@ val br : bodyTagStandalone [] val p : bodyTag [] val b : bodyTag [] val i : bodyTag [] +val tt : bodyTag [] val font : bodyTag [Size = int, Face = string] val h1 : bodyTag [] |