src/Tools/Code/code_haskell.ML
changeset 39154 0e6f54c9d201
parent 39152 24f82786cc57
child 39192 68853347ba37
equal deleted inserted replaced
39153:544f4702d621 39154:0e6f54c9d201
   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 =);