comparison src/mono_util.sml @ 2218:f7113855f3b7

More invalidation progress.
author Ziv Scully <ziv@mit.edu>
date Tue, 11 Nov 2014 04:25:20 -0500
parents 98895243b5b6
children 278e10629ba1
comparison
equal deleted inserted replaced
2217:98b87d905601 2218:f7113855f3b7
14 * 14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
279 S.bind2 (mfe ctx e, 279 S.bind2 (mfe ctx e,
280 fn e' => 280 fn e' =>
281 S.map2 (mft t, 281 S.map2 (mft t,
282 fn t' => 282 fn t' =>
283 (ERedirect (e', t'), loc))) 283 (ERedirect (e', t'), loc)))
284 284
285 | EStrcat (e1, e2) => 285 | EStrcat (e1, e2) =>
286 S.bind2 (mfe ctx e1, 286 S.bind2 (mfe ctx e1,
287 fn e1' => 287 fn e1' =>
288 S.map2 (mfe ctx e2, 288 S.map2 (mfe ctx e2,
289 fn e2' => 289 fn e2' =>
622 S.map2 (mfe ctx e, 622 S.map2 (mfe ctx e,
623 fn e' => 623 fn e' =>
624 (x, n, t', e', s))) 624 (x, n, t', e', s)))
625 in 625 in
626 mfd 626 mfd
627 end 627 end
628 628
629 fun mapfold {typ = fc, exp = fe, decl = fd} = 629 fun mapfold {typ = fc, exp = fe, decl = fd} =
630 mapfoldB {typ = fc, 630 mapfoldB {typ = fc,
631 exp = fn () => fe, 631 exp = fn () => fe,
632 decl = fn () => fd, 632 decl = fn () => fd,