src/Tools/Code/code_haskell.ML
changeset 81712 97987036f051
parent 81681 bac9b067c768
child 82380 ceb4f33d3073
equal deleted inserted replaced
81711:a55b236f9e1d 81712:97987036f051
   328 val prelude_import_unqualified_constr = [
   328 val prelude_import_unqualified_constr = [
   329   ("Bool", ["True", "False"]),
   329   ("Bool", ["True", "False"]),
   330   ("Maybe", ["Nothing", "Just"])
   330   ("Maybe", ["Nothing", "Just"])
   331 ];
   331 ];
   332 
   332 
       
   333 val data_bits_import_operators = [
       
   334   ".&.", ".|.", ".^."
       
   335 ];
       
   336 
   333 fun serialize_haskell module_prefix string_classes ctxt { module_name,
   337 fun serialize_haskell module_prefix string_classes ctxt { module_name,
   334     reserved_syms, identifiers, includes, class_syntax, tyco_syntax, const_syntax } program exports =
   338     reserved_syms, identifiers, includes, class_syntax, tyco_syntax, const_syntax } program exports =
   335   let
   339   let
   336 
   340 
   337     (* build program *)
   341     (* build program *)
   377       semicolon [str "import qualified", str module_name];
   381       semicolon [str "import qualified", str module_name];
   378     val import_common_ps =
   382     val import_common_ps =
   379       enclose "import Prelude (" ");" (commas (map str
   383       enclose "import Prelude (" ");" (commas (map str
   380         (map (Library.enclose "(" ")") prelude_import_operators @ prelude_import_unqualified)
   384         (map (Library.enclose "(" ")") prelude_import_operators @ prelude_import_unqualified)
   381           @ map (fn (tyco, constrs) => (enclose (tyco ^ "(") ")" o commas o map str) constrs) prelude_import_unqualified_constr))
   385           @ map (fn (tyco, constrs) => (enclose (tyco ^ "(") ")" o commas o map str) constrs) prelude_import_unqualified_constr))
       
   386       :: enclose "import Data.Bits (" ");" (commas
       
   387         (map (str o Library.enclose "(" ")") data_bits_import_operators))
   382       :: print_qualified_import "Prelude"
   388       :: print_qualified_import "Prelude"
       
   389       :: print_qualified_import "Data.Bits"
   383       :: map (print_qualified_import o fst) includes;
   390       :: map (print_qualified_import o fst) includes;
   384     fun print_module module_name (gr, imports) =
   391     fun print_module module_name (gr, imports) =
   385       let
   392       let
   386         val deresolve = deresolver module_name;
   393         val deresolve = deresolver module_name;
   387         val deresolve_import = SOME o str o deresolve;
   394         val deresolve_import = SOME o str o deresolve;