diff src/core_util.sml @ 461:5c9606deacb6

Cookies through shake2
author Adam Chlipala <adamc@hcoop.net>
date Thu, 06 Nov 2008 10:48:02 -0500
parents 787d4931fb07
children ffa18975e661
line wrap: on
line diff
--- a/src/core_util.sml	Thu Nov 06 10:43:48 2008 -0500
+++ b/src/core_util.sml	Thu Nov 06 10:48:02 2008 -0500
@@ -656,10 +656,14 @@
               | DExport _ => S.return2 dAll
               | DTable (x, n, c, s) =>
                 S.map2 (mfc ctx c,
-                        fn c' =>
-                           (DTable (x, n, c', s), loc))
+                     fn c' =>
+                        (DTable (x, n, c', s), loc))
               | DSequence _ => S.return2 dAll
               | DDatabase _ => S.return2 dAll
+              | DCookie (x, n, c, s) =>
+                S.map2 (mfc ctx c,
+                     fn c' =>
+                        (DCookie (x, n, c', s), loc))
 
         and mfvi ctx (x, n, t, e, s) =
             S.bind2 (mfc ctx t,
@@ -755,6 +759,12 @@
                                             bind (ctx, NamedE (x, n, t, NONE, s))
                                         end
                                       | DDatabase _ => ctx
+                                      | DCookie (x, n, c, s) =>
+                                        let
+                                            val t = (CApp ((CFfi ("Basis", "http_cookie"), #2 d'), c), #2 d')
+                                        in
+                                            bind (ctx, NamedE (x, n, t, NONE, s))
+                                        end
                             in
                                 S.map2 (mff ctx' ds',
                                      fn ds' =>
@@ -807,7 +817,8 @@
                           | DExport _ => count
                           | DTable (_, n, _, _) => Int.max (n, count)
                           | DSequence (_, n, _) => Int.max (n, count)
-                          | DDatabase _ => count) 0
+                          | DDatabase _ => count
+                          | DCookie (_, n, _, _) => Int.max (n, count)) 0
               
 end