src/HOL/HOLCF/ex/Pattern_Match.thy
changeset 52143 36ffe23b25f8
parent 51717 9e7d1c139569
child 54742 7a86358a3c0b
equal deleted inserted replaced
52142:348aed032cda 52143:36ffe23b25f8
   129   "_variable _noargs r" => "CONST unit_when\<cdot>r"
   129   "_variable _noargs r" => "CONST unit_when\<cdot>r"
   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 _ => fn _ => Syntax.const @{const_syntax Fixrec.succeed}),
   135   Syntax_Trans.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 
   162           let val (v, t) = dest_LAM r in
   162           let val (v, t) = dest_LAM r in
   163             Syntax.const @{syntax_const "_Case1"} $
   163             Syntax.const @{syntax_const "_Case1"} $
   164               (Syntax.const @{syntax_const "_match"} $ p $ v) $ t
   164               (Syntax.const @{syntax_const "_match"} $ p $ v) $ t
   165           end;
   165           end;
   166 
   166 
   167   in [(@{const_syntax Rep_cfun}, Case1_tr')] end;
   167   in [(@{const_syntax Rep_cfun}, K Case1_tr')] end;
   168 *}
   168 *}
   169 
   169 
   170 translations
   170 translations
   171   "x" <= "_match (CONST succeed) (_variable x)"
   171   "x" <= "_match (CONST succeed) (_variable x)"
   172 
   172