view demo/more/conferenceFields.ur @ 1289:3b22c3c67f35

Reduce: Inline let-bound variables whose types involve functions
author Adam Chlipala <adam@chlipala.net>
date Sun, 22 Aug 2010 13:43:46 -0400
parents 5d9f47124c4c
children
line wrap: on
line source
open Meta

val title = string "Title"
val abstract = textarea "Abstract"
val commentsForAuthors = textarea "Comments for Authors"

fun charIn s =
    if String.length s = 0 then
        error <xml>Impossible: Empty option value</xml>
    else
        String.sub s 0

con dropdown = (char, string)
fun dropdown name opts = {Nam = name,
                          Show = txt,
                          Widget = fn [nm :: Name] => <xml><select{nm}>
                            {List.mapX (fn x => <xml><option>{[x]}</option></xml>) opts}
                          </select></xml>,
                          WidgetPopulated = fn [nm :: Name] v => <xml><select{nm}>
                            {List.mapX (fn x => <xml><option selected={x = v}>{[x]}</option></xml>) opts}
                          </select></xml>,
                          Parse = charIn,
                          Inject = _}

val dropdown_show = _