equal
deleted
inserted
replaced
48 | tuplify print fxy [x] = SOME (print fxy x) |
48 | tuplify print fxy [x] = SOME (print fxy x) |
49 | tuplify print _ xs = SOME (enum "," "(" ")" (map (print NOBR) xs)); |
49 | tuplify print _ xs = SOME (enum "," "(" ")" (map (print NOBR) xs)); |
50 |
50 |
51 |
51 |
52 (** SML serializer **) |
52 (** SML serializer **) |
|
53 |
|
54 fun print_char_any_ml s = |
|
55 if Symbol.is_char s then ML_Syntax.print_char s else "\\092" ^ unprefix "\\" s; |
|
56 |
|
57 val print_string_any_ml = quote o implode o map print_char_any_ml o Symbol.explode; |
53 |
58 |
54 fun print_sml_stmt tyco_syntax const_syntax reserved is_constr deresolve = |
59 fun print_sml_stmt tyco_syntax const_syntax reserved is_constr deresolve = |
55 let |
60 let |
56 val deresolve_const = deresolve o Constant; |
61 val deresolve_const = deresolve o Constant; |
57 val deresolve_class = deresolve o Type_Class; |
62 val deresolve_class = deresolve o Type_Class; |
248 :: deresolve_const const |
253 :: deresolve_const const |
249 :: replicate n "_" |
254 :: replicate n "_" |
250 @ "=" |
255 @ "=" |
251 :: "raise" |
256 :: "raise" |
252 :: "Fail" |
257 :: "Fail" |
253 @@ ML_Syntax.print_string const |
258 @@ print_string_any_ml const |
254 )) |
259 )) |
255 | print_stmt _ (ML_Val binding) = |
260 | print_stmt _ (ML_Val binding) = |
256 let |
261 let |
257 val (sig_p, p) = print_def (K false) true "val" binding |
262 val (sig_p, p) = print_def (K false) true "val" binding |
258 in pair |
263 in pair |
352 @| str ("end; (*struct " ^ name ^ "*)") |
357 @| str ("end; (*struct " ^ name ^ "*)") |
353 ); |
358 ); |
354 |
359 |
355 val literals_sml = Literals { |
360 val literals_sml = Literals { |
356 literal_char = prefix "#" o quote o ML_Syntax.print_char, |
361 literal_char = prefix "#" o quote o ML_Syntax.print_char, |
357 literal_string = quote o translate_string ML_Syntax.print_char, |
362 literal_string = print_string_any_ml, |
358 literal_numeral = fn k => "(" ^ string_of_int k ^ " : IntInf.int)", |
363 literal_numeral = fn k => "(" ^ string_of_int k ^ " : IntInf.int)", |
359 literal_list = enum "," "[" "]", |
364 literal_list = enum "," "[" "]", |
360 infix_cons = (7, "::") |
365 infix_cons = (7, "::") |
361 }; |
366 }; |
362 |
367 |