adamc@1001: con reviewMeta = fn (db :: Type, widget :: Type) => adamc@1001: {Show : db -> xbody, adamc@1001: Widget : nm :: Name -> xml form [] [nm = widget], adamc@1001: WidgetPopulated : nm :: Name -> db -> xml form [] [nm = widget], adamc@1001: Parse : widget -> db, adamc@1001: Inject : sql_injectable db} adamc@1001: adamc@1001: val int : reviewMeta (int, string) adamc@1001: val float : reviewMeta (float, string) adamc@1001: val string : reviewMeta (string, string) adamc@1001: val bool : reviewMeta (bool, bool) adamc@1001: adamc@1001: functor Make(M : sig adamc@1001: con review :: {(Type * Type)} adamc@1001: val review : $(map reviewMeta review) adamc@1001: end) : sig adamc@1001: adamc@1001: val main : unit -> transaction page adamc@1001: adamc@1001: end