This is mercury_ref.info, produced by makeinfo version 4.11 from
reference_manual.texi_pp.

INFO-DIR-SECTION The Mercury Programming Language
START-INFO-DIR-ENTRY
* Mercury Language: (mercury_ref).  The Mercury Language Reference Manual.
END-INFO-DIR-ENTRY

   This file documents the Mercury programming language, version 11.07.

   Copyright (C) 1995-2011 The University of Melbourne.

   Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the entire resulting derived work is distributed under the terms
of a permission notice identical to this one.

   Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions.


Indirect:
mercury_ref.info-1: 959
mercury_ref.info-2: 300783

Tag Table:
(Indirect)
Node: Top959
Node: Introduction3274
Node: Syntax5184
Node: Syntax Overview5566
Node: Tokens6337
Node: Terms12008
Node: Builtin Operators15490
Ref: Builtin Operators-Footnote-123077
Node: Items23116
Node: Declarations23888
Node: Facts24737
Node: Rules25519
Node: Goals26251
Node: State variables38282
Node: DCG-rules45273
Node: DCG-goals46560
Node: Data-terms51265
Node: Data-functors52377
Node: Record syntax54052
Node: Unification expressions57113
Node: Conditional expressions58182
Node: Lambda expressions58887
Node: Higher-order function applications61057
Node: Explicit type qualification61800
Node: Variable scoping62699
Node: Implicit quantification64754
Node: Elimination of double negation66170
Node: Types67082
Node: Builtin types67477
Node: User-defined types69117
Node: Discriminated unions69482
Node: Equivalence types73603
Node: Abstract types74500
Node: Predicate and function type declarations75236
Ref: Predicate and function type declarations-Footnote-181081
Node: Field access functions81464
Node: Field selection82264
Node: Field update83314
Node: User-supplied field access function declarations85075
Node: Field access examples87115
Node: Modes88851
Node: Insts modes and mode definitions89121
Node: Predicate and function mode declarations94667
Node: Constrained polymorphic modes101217
Node: Different clauses for different modes103925
Node: Unique modes108158
Node: Destructive update109365
Node: Backtrackable destructive update110790
Node: Limitations of the current implementation112320
Node: Determinism113250
Node: Determinism categories113630
Node: Determinism checking and inference118638
Node: Replacing compile-time checking with run-time checking127451
Node: Interfacing nondeterministic code with the real world129908
Node: Committed choice nondeterminism133281
Node: User-defined equality and comparison136214
Ref: User-defined equality and comparison-Footnote-1143749
Node: Higher-order144129
Node: Creating higher-order terms144780
Node: Calling higher-order terms149621
Node: Higher-order modes152662
Node: Modules156717
Node: The module system156987
Node: An example module160815
Node: Sub-modules162085
Node: Nested sub-modules162819
Node: Separate sub-modules164358
Node: Visibility rules166857
Node: Implementation bugs and limitations168180
Node: Module initialisation168877
Node: Module finalisation170412
Node: Module-local mutable variables171791
Node: Type classes176714
Node: Typeclass declarations177421
Node: Instance declarations180263
Node: Abstract typeclass declarations187556
Node: Abstract instance declarations188565
Node: Type class constraints on predicates and functions190143
Node: Type class constraints on type class declarations191831
Node: Type class constraints on instance declarations193854
Node: Functional dependencies195892
Node: Existential types201879
Node: Existentially typed predicates and functions202711
Node: Syntax for explicit type quantifiers203144
Node: Semantics of type quantifiers204687
Node: Examples of correct code using type quantifiers207541
Node: Examples of incorrect code using type quantifiers208824
Node: Existential class constraints209873
Node: Existentially typed data types211398
Node: Some idioms using existentially quantified types215046
Node: Exception handling219141
Node: Semantics223410
Node: Foreign language interface230518
Node: Calling foreign code from Mercury232187
Node: pragma foreign_proc232695
Node: Foreign code attributes237596
Node: Calling Mercury from foreign code245575
Node: Data passing conventions246636
Node: C data passing conventions247244
Node: C# data passing conventions250999
Node: Java data passing conventions255902
Node: Erlang data passing conventions261400
Node: Using foreign types from Mercury263718
Node: Using Mercury enumerations in foreign code267620
Node: Using foreign enumerations in Mercury code271305
Node: Adding foreign declarations273062
Node: Adding foreign definitions276565
Node: Language specific bindings277512
Node: Interfacing with C278606
Node: Using pragma foreign_type for C279623
Node: Using pragma foreign_export_enum for C282701
Node: Using pragma foreign_enum for C283685
Node: Using pragma foreign_proc for C284128
Node: Using pragma foreign_export for C286708
Node: Using pragma foreign_decl for C289342
Node: Using pragma foreign_code for C290910
Node: Memory management for C291473
Node: Linking with C object files293606
Node: Interfacing with C#295021
Node: Using pragma foreign_type for C#295790
Node: Using pragma foreign_export_enum for C#296495
Node: Using pragma foreign_enum for C#297181
Node: Using pragma foreign_proc for C#297595
Node: Using pragma foreign_export for C#299357
Node: Using pragma foreign_decl for C#300783
Node: Using pragma foreign_code for C#301649
Node: Interfacing with Java302636
Node: Using pragma foreign_type for Java303475
Node: Using pragma foreign_export_enum for Java304216
Node: Using pragma foreign_enum for Java305070
Node: Using pragma foreign_proc for Java305409
Node: Using pragma foreign_export for Java307239
Node: Using pragma foreign_decl for Java308693
Node: Using pragma foreign_code for Java309792
Node: Interfacing with Erlang310803
Node: Using pragma foreign_type for Erlang311383
Node: Using pragma foreign_proc for Erlang311922
Node: Using pragma foreign_export for Erlang313115
Node: Using pragma foreign_decl for Erlang314594
Node: Using pragma foreign_code for Erlang315655
Node: Impurity316446
Node: Purity levels318781
Node: Purity ordering320698
Node: Impurity semantics320997
Node: Declaring impurity323403
Node: Impure goals324796
Node: Promising purity326420
Node: Impurity Example328808
Node: Higher-order impurity330264
Node: Purity annotations on higher-order types330893
Node: Purity annotations on lambda expressions331985
Node: Purity annotations on higher-order calls333025
Node: Solver types334359
Node: The any inst335286
Node: Abstract solver type declarations336294
Node: Solver type definitions336774
Node: Implementing solver types341120
Node: Solver types and negated contexts342518
Node: Trace goals345230
Node: Pragmas354345
Node: Inlining355704
Node: Type specialization356414
Node: Syntax and semantics of type specialization pragmas357059
Node: When to use type specialization358319
Node: Implementation specific details359283
Node: Obsolescence359778
Node: No determinism warnings360918
Node: Source file name362099
Node: Implementation-dependent extensions363767
Node: Fact tables364717
Node: Tabled evaluation366314
Node: Termination analysis378283
Node: Feature sets382517
Node: Trailing385333
Node: Choice points386747
Node: Value trailing387696
Node: Function trailing388835
Node: Delayed goals and floundering392159
Node: Avoiding redundant trailing393901
Node: Bibliography400765
Node: [1]401424
Node: [2]401850
Node: [3]402201
Node: [4]402534
Node: [5]402847

End Tag Table
