comparison src/explify.sml @ 171:c7a6e6dbc318

Elaborating some basic pattern matching
author Adam Chlipala <adamc@hcoop.net>
date Thu, 31 Jul 2008 10:06:27 -0400
parents 06a98129b23f
children 33d4a8eea484
comparison
equal deleted inserted replaced
170:a158f8c5aa55 171:c7a6e6dbc318
87 {field = explifyCon field, rest = explifyCon rest}), loc) 87 {field = explifyCon field, rest = explifyCon rest}), loc)
88 | L.ECut (e1, c, {field, rest}) => (L'.ECut (explifyExp e1, explifyCon c, 88 | L.ECut (e1, c, {field, rest}) => (L'.ECut (explifyExp e1, explifyCon c,
89 {field = explifyCon field, rest = explifyCon rest}), loc) 89 {field = explifyCon field, rest = explifyCon rest}), loc)
90 | L.EFold k => (L'.EFold (explifyKind k), loc) 90 | L.EFold k => (L'.EFold (explifyKind k), loc)
91 91
92 | L.ECase _ => raise Fail "Explify ECase"
93
92 | L.EError => raise Fail ("explifyExp: EError at " ^ EM.spanToString loc) 94 | L.EError => raise Fail ("explifyExp: EError at " ^ EM.spanToString loc)
93 95
94 fun explifySgi (sgi, loc) = 96 fun explifySgi (sgi, loc) =
95 case sgi of 97 case sgi of
96 L.SgiConAbs (x, n, k) => SOME (L'.SgiConAbs (x, n, explifyKind k), loc) 98 L.SgiConAbs (x, n, k) => SOME (L'.SgiConAbs (x, n, explifyKind k), loc)