comparison src/mono_util.sml @ 729:7c6b6c3c7b79

Some client-side error handling
author Adam Chlipala <adamc@hcoop.net>
date Thu, 16 Apr 2009 13:47:20 -0400
parents 4c5796512edc
children 796e42c93c48
comparison
equal deleted inserted replaced
728:2197f0e24a9f 729:7c6b6c3c7b79
323 fn e' => 323 fn e' =>
324 S.map2 (mft t, 324 S.map2 (mft t,
325 fn t' => 325 fn t' =>
326 (EUnurlify (e', t'), loc))) 326 (EUnurlify (e', t'), loc)))
327 | EJavaScript (m, e, NONE) => 327 | EJavaScript (m, e, NONE) =>
328 S.map2 (mfe ctx e, 328 S.bind2 (mfmode ctx m,
329 fn e' => 329 fn m' =>
330 (EJavaScript (m, e', NONE), loc)) 330 S.map2 (mfe ctx e,
331 fn e' =>
332 (EJavaScript (m', e', NONE), loc)))
331 | EJavaScript (m, e, SOME e2) => 333 | EJavaScript (m, e, SOME e2) =>
332 S.bind2 (mfe ctx e, 334 S.bind2 (mfmode ctx m,
333 fn e' => 335 fn m' =>
334 S.map2 (mfe ctx e2, 336 S.bind2 (mfe ctx e,
335 fn e2' => 337 fn e' =>
336 (EJavaScript (m, e', SOME e2'), loc))) 338 S.map2 (mfe ctx e2,
339 fn e2' =>
340 (EJavaScript (m, e', SOME e2'), loc))))
337 341
338 | ESignalReturn e => 342 | ESignalReturn e =>
339 S.map2 (mfe ctx e, 343 S.map2 (mfe ctx e,
340 fn e' => 344 fn e' =>
341 (ESignalReturn e', loc)) 345 (ESignalReturn e', loc))
370 S.bind2 (mfe ctx s, 374 S.bind2 (mfe ctx s,
371 fn s' => 375 fn s' =>
372 S.map2 (mfe ctx ek, 376 S.map2 (mfe ctx ek,
373 fn ek' => 377 fn ek' =>
374 (ESleep (s', ek'), loc))) 378 (ESleep (s', ek'), loc)))
379
380 and mfmode ctx mode =
381 case mode of
382 Attribute => S.return2 mode
383 | Script => S.return2 mode
384 | Source t =>
385 S.map2 (mft t,
386 fn t' => Source t')
375 in 387 in
376 mfe 388 mfe
377 end 389 end
378 390
379 fun mapfold {typ = fc, exp = fe} = 391 fun mapfold {typ = fc, exp = fe} =