annotate demo/more/versioned.urs @ 1096:324c9ffe8ff9

Protocol-specific compiler options
author Adam Chlipala <adamc@hcoop.net>
date Sun, 27 Dec 2009 14:25:22 -0500
parents 166ea3944b91
children
rev   line source
adamc@993 1 functor Make(M : sig
adamc@993 2 con key :: {Type}
adamc@993 3 con data :: {Type}
adamc@993 4 constraint key ~ data
adamc@995 5 constraint [When, Version] ~ (key ++ data)
adamc@993 6
adamc@993 7 val key : $(map sql_injectable key)
adamc@993 8 val data : $(map (fn t => {Inj : sql_injectable_prim t,
adamc@993 9 Eq : eq t}) data)
adamc@993 10
adamc@993 11 val keyFolder : folder key
adamc@993 12 val dataFolder : folder data
adamc@993 13 end) : sig
adamc@993 14 val insert : $(M.key ++ M.data) -> transaction unit
adamc@993 15 val update : $(M.key ++ M.data) -> transaction unit
adamc@993 16
adamc@993 17 val keys : transaction (list $M.key)
adamc@993 18 val current : $M.key -> transaction (option $M.data)
adamc@995 19
adamc@995 20 type version
adamc@995 21 val keysAt : version -> transaction (list $M.key)
adamc@995 22 val archive : version -> $M.key -> transaction (option $M.data)
adamc@995 23 val updateTimes : transaction (list (version * time))
adamc@993 24 end