equal
deleted
inserted
replaced
130 |
130 |
131 parse_translation {* |
131 parse_translation {* |
132 (* rewrite (_pat x) => (succeed) *) |
132 (* rewrite (_pat x) => (succeed) *) |
133 (* rewrite (_variable x t) => (Abs_cfun (%x. t)) *) |
133 (* rewrite (_variable x t) => (Abs_cfun (%x. t)) *) |
134 [(@{syntax_const "_pat"}, fn _ => Syntax.const @{const_syntax Fixrec.succeed}), |
134 [(@{syntax_const "_pat"}, fn _ => Syntax.const @{const_syntax Fixrec.succeed}), |
135 mk_binder_tr (@{syntax_const "_variable"}, @{const_syntax Abs_cfun})]; |
135 Syntax_Trans.mk_binder_tr (@{syntax_const "_variable"}, @{const_syntax Abs_cfun})]; |
136 *} |
136 *} |
137 |
137 |
138 text {* Printing Case expressions *} |
138 text {* Printing Case expressions *} |
139 |
139 |
140 syntax |
140 syntax |
152 | dest_LAM (Const (@{const_syntax Abs_cfun},_) $ t) = |
152 | dest_LAM (Const (@{const_syntax Abs_cfun},_) $ t) = |
153 let |
153 let |
154 val abs = |
154 val abs = |
155 case t of Abs abs => abs |
155 case t of Abs abs => abs |
156 | _ => ("x", dummyT, incr_boundvars 1 t $ Bound 0); |
156 | _ => ("x", dummyT, incr_boundvars 1 t $ Bound 0); |
157 val (x, t') = atomic_abs_tr' abs; |
157 val (x, t') = Syntax_Trans.atomic_abs_tr' abs; |
158 in (Syntax.const @{syntax_const "_variable"} $ x, t') end |
158 in (Syntax.const @{syntax_const "_variable"} $ x, t') end |
159 | dest_LAM _ = raise Match; (* too few vars: abort translation *) |
159 | dest_LAM _ = raise Match; (* too few vars: abort translation *) |
160 |
160 |
161 fun Case1_tr' [Const(@{const_syntax branch},_) $ p, r] = |
161 fun Case1_tr' [Const(@{const_syntax branch},_) $ p, r] = |
162 let val (v, t) = dest_LAM r in |
162 let val (v, t) = dest_LAM r in |