312 o Symtab.lookup hs_program) ((mk_name_module o fst o dest_name) name))) name |
312 o Symtab.lookup hs_program) ((mk_name_module o fst o dest_name) name))) name |
313 handle Option => error ("Unknown statement name: " ^ labelled_name name); |
313 handle Option => error ("Unknown statement name: " ^ labelled_name name); |
314 in (deresolver, hs_program) end; |
314 in (deresolver, hs_program) end; |
315 |
315 |
316 fun serialize_haskell module_prefix string_classes { labelled_name, |
316 fun serialize_haskell module_prefix string_classes { labelled_name, |
317 reserved_syms, includes, single_module, module_alias, |
317 reserved_syms, includes, module_alias, |
318 class_syntax, tyco_syntax, const_syntax, program, |
318 class_syntax, tyco_syntax, const_syntax, program, |
319 names, presentation_names } = |
319 names, presentation_names } = |
320 let |
320 let |
321 val reserved = fold (insert (op =) o fst) includes reserved_syms; |
321 val reserved = fold (insert (op =) o fst) includes reserved_syms; |
322 val (deresolver, hs_program) = haskell_program_of_program labelled_name |
322 val (deresolver, hs_program) = haskell_program_of_program labelled_name |
348 str "}" |
348 str "}" |
349 ]); |
349 ]); |
350 fun serialize_module1 (module_name', (deps, (stmts, _))) = |
350 fun serialize_module1 (module_name', (deps, (stmts, _))) = |
351 let |
351 let |
352 val stmt_names = map fst stmts; |
352 val stmt_names = map fst stmts; |
353 val qualified = not single_module; |
353 val qualified = null presentation_names; |
354 val imports = subtract (op =) stmt_names deps |
354 val imports = subtract (op =) stmt_names deps |
355 |> distinct (op =) |
355 |> distinct (op =) |
356 |> map_filter (try deresolver) |
356 |> map_filter (try deresolver) |
357 |> map Long_Name.qualifier |
357 |> map Long_Name.qualifier |
358 |> distinct (op =); |
358 |> distinct (op =); |