491 end; |
490 end; |
492 |
491 |
493 |
492 |
494 (** Isar setup **) |
493 (** Isar setup **) |
495 |
494 |
496 val _ = |
495 val _ = Theory.setup |
497 Outer_Syntax.command @{command_spec "code_monad"} "define code syntax for monads" |
496 (Code_Target.add_language |
498 (Parse.term -- Parse.name >> (fn (raw_bind, target) => |
|
499 Toplevel.theory (add_monad target raw_bind))); |
|
500 |
|
501 val setup = |
|
502 Code_Target.add_language |
|
503 (target, { serializer = serializer, literals = literals, |
497 (target, { serializer = serializer, literals = literals, |
504 check = { env_var = "ISABELLE_GHC", make_destination = I, |
498 check = { env_var = "ISABELLE_GHC", make_destination = I, |
505 make_command = fn module_name => |
499 make_command = fn module_name => |
506 "\"$ISABELLE_GHC\" " ^ language_params ^ " -odir build -hidir build -stubdir build -e \"\" " ^ |
500 "\"$ISABELLE_GHC\" " ^ language_params ^ " -odir build -hidir build -stubdir build -e \"\" " ^ |
507 module_name ^ ".hs" } }) |
501 module_name ^ ".hs" } }) |
517 "import", "default", "forall", "let", "in", "class", "qualified", "data", |
511 "import", "default", "forall", "let", "in", "class", "qualified", "data", |
518 "newtype", "instance", "if", "then", "else", "type", "as", "do", "module" |
512 "newtype", "instance", "if", "then", "else", "type", "as", "do", "module" |
519 ] |
513 ] |
520 #> fold (Code_Target.add_reserved target) prelude_import_unqualified |
514 #> fold (Code_Target.add_reserved target) prelude_import_unqualified |
521 #> fold (Code_Target.add_reserved target o fst) prelude_import_unqualified_constr |
515 #> fold (Code_Target.add_reserved target o fst) prelude_import_unqualified_constr |
522 #> fold (fold (Code_Target.add_reserved target) o snd) prelude_import_unqualified_constr; |
516 #> fold (fold (Code_Target.add_reserved target) o snd) prelude_import_unqualified_constr); |
|
517 |
|
518 val _ = |
|
519 Outer_Syntax.command @{command_spec "code_monad"} "define code syntax for monads" |
|
520 (Parse.term -- Parse.name >> (fn (raw_bind, target) => |
|
521 Toplevel.theory (add_monad target raw_bind))); |
523 |
522 |
524 end; (*struct*) |
523 end; (*struct*) |