aboutsummaryrefslogtreecommitdiffhomepage
path: root/demo/more/grid.ur
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-09-15 09:45:46 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-09-15 09:45:46 -0400
commita8fa8a4567570b1925ff11b17da729ac32cd191e (patch)
treeb0c64428283fba211e8d782b474877c98467593c /demo/more/grid.ur
parent89ff99b8cb398180ae3168dec72baa793fe42850 (diff)
Include 'key' type in Grid
Diffstat (limited to 'demo/more/grid.ur')
-rw-r--r--demo/more/grid.ur11
1 files changed, 7 insertions, 4 deletions
diff --git a/demo/more/grid.ur b/demo/more/grid.ur
index 084ddefc..cb836970 100644
--- a/demo/more/grid.ur
+++ b/demo/more/grid.ur
@@ -17,10 +17,13 @@ con aggregateMeta = fn (row :: Type) (acc :: Type) =>
functor Make(M : sig
type row
+ type key
+ val keyOf : row -> key
+
val list : transaction (list row)
val new : transaction row
- val save : {Old : row, New : row} -> transaction unit
- val delete : row -> transaction unit
+ val save : key -> row -> transaction unit
+ val delete : key -> transaction unit
con cols :: {(Type * Type)}
val cols : $(map (colMeta row) cols)
@@ -85,7 +88,7 @@ functor Make(M : sig
val delete =
Dlist.delete pos;
row <- get rowS;
- rpc (M.delete row)
+ rpc (M.delete (M.keyOf row))
val update = set ud True
@@ -122,7 +125,7 @@ functor Make(M : sig
[[nm] ~ rest] data meta v row' =>
(meta.Handlers data).Update row' v)
row [_] M.folder grid.Cols M.cols cols;
- rpc (M.save {Old = row, New = row'});
+ rpc (M.save (M.keyOf row) row');
set rowS row';
cols <- makeAll grid.Cols row';