119 (* abstraction *) |
119 (* abstraction *) |
120 |
120 |
121 fun idtyp_ast_tr [x, ty] = Ast.Appl [Ast.Constant "_constrain", x, ty] |
121 fun idtyp_ast_tr [x, ty] = Ast.Appl [Ast.Constant "_constrain", x, ty] |
122 | idtyp_ast_tr asts = raise Ast.AST ("idtyp_ast_tr", asts); |
122 | idtyp_ast_tr asts = raise Ast.AST ("idtyp_ast_tr", asts); |
123 |
123 |
124 fun idtypdummy_ast_tr [ty] = Ast.Appl [Ast.Constant "_constrain", Ast.Constant "_idtdummy", ty] |
|
125 | idtypdummy_ast_tr asts = raise Ast.AST ("idtyp_ast_tr", asts); |
|
126 |
|
127 fun lambda_ast_tr [pats, body] = Ast.fold_ast_p "_abs" (Ast.unfold_ast "_pttrns" pats, body) |
124 fun lambda_ast_tr [pats, body] = Ast.fold_ast_p "_abs" (Ast.unfold_ast "_pttrns" pats, body) |
128 | lambda_ast_tr asts = raise Ast.AST ("lambda_ast_tr", asts); |
125 | lambda_ast_tr asts = raise Ast.AST ("lambda_ast_tr", asts); |
129 |
126 |
130 fun absfree_proper (x, T) t = |
127 fun absfree_proper (x, T) t = |
131 if can Name.dest_internal x |
128 if can Name.dest_internal x |
511 ("_bracket", fn _ => bracket_ast_tr), |
508 ("_bracket", fn _ => bracket_ast_tr), |
512 ("_appl", fn _ => appl_ast_tr), |
509 ("_appl", fn _ => appl_ast_tr), |
513 ("_applC", fn _ => applC_ast_tr), |
510 ("_applC", fn _ => applC_ast_tr), |
514 ("_lambda", fn _ => lambda_ast_tr), |
511 ("_lambda", fn _ => lambda_ast_tr), |
515 ("_idtyp", fn _ => idtyp_ast_tr), |
512 ("_idtyp", fn _ => idtyp_ast_tr), |
516 ("_idtypdummy", fn _ => idtypdummy_ast_tr), |
|
517 ("_bigimpl", fn _ => bigimpl_ast_tr), |
513 ("_bigimpl", fn _ => bigimpl_ast_tr), |
518 ("_indexdefault", fn _ => indexdefault_ast_tr), |
514 ("_indexdefault", fn _ => indexdefault_ast_tr), |
519 ("_indexvar", fn _ => indexvar_ast_tr), |
515 ("_indexvar", fn _ => indexvar_ast_tr), |
520 ("_struct", fn _ => struct_ast_tr)]; |
516 ("_struct", fn _ => struct_ast_tr)]; |
521 |
517 |