diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-08-22 12:55:18 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-08-22 12:55:18 -0400 |
commit | f79732bbf16467ecf40c6068bac93502aa49e9d2 (patch) | |
tree | 1d7e3ef3f5bbca99b53ac3ee3b66d934c22f1d0d /lib | |
parent | 28f2c29dd98659f00e4d7bc3147c2fc2e5320f34 (diff) |
Convert to requiring explicit 'rpc' marker
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ur/basis.urs | 2 | ||||
-rw-r--r-- | lib/ur/list.ur | 7 | ||||
-rw-r--r-- | lib/ur/list.urs | 5 |
3 files changed, 14 insertions, 0 deletions
diff --git a/lib/ur/basis.urs b/lib/ur/basis.urs index 7f06a47a..9f5a9b97 100644 --- a/lib/ur/basis.urs +++ b/lib/ur/basis.urs @@ -125,6 +125,8 @@ val alert : string -> transaction unit val spawn : transaction unit -> transaction unit val sleep : int -> transaction unit +val rpc : t ::: Type -> transaction t -> transaction t + (** Channels *) diff --git a/lib/ur/list.ur b/lib/ur/list.ur index d774cc54..3d4134ea 100644 --- a/lib/ur/list.ur +++ b/lib/ur/list.ur @@ -217,6 +217,13 @@ fun app [m] (_ : monad m) [a] f = app' end +fun mapQuery [tables ::: {{Type}}] [exps ::: {Type}] [t ::: Type] + [tables ~ exps] (q : sql_query tables exps) + (f : $(exps ++ map (fn fields :: {Type} => $fields) tables) -> t) = + query q + (fn fs acc => return (f fs :: acc)) + [] + fun assoc [a] [b] (_ : eq a) (x : a) = let fun assoc' (ls : list (a * b)) = diff --git a/lib/ur/list.urs b/lib/ur/list.urs index 1b0fced9..ece85e8c 100644 --- a/lib/ur/list.urs +++ b/lib/ur/list.urs @@ -43,6 +43,11 @@ val all : a ::: Type -> (a -> bool) -> t a -> bool val app : m ::: (Type -> Type) -> monad m -> a ::: Type -> (a -> m unit) -> t a -> m unit +val mapQuery : tables ::: {{Type}} -> exps ::: {Type} -> t ::: Type + -> [tables ~ exps] => + sql_query tables exps + -> ($(exps ++ map (fn fields :: {Type} => $fields) tables) -> t) + -> transaction (list t) (** Association lists *) |