| • Calling foreign code from Mercury | How to implement a Mercury predicate or function as a call to code written in a different programming language. | |
| • Calling Mercury from foreign code | How to call a Mercury predicate or function from a different programming language. | |
| • Data passing conventions | How Mercury types are passed to different languages. | |
| • Using foreign types from Mercury | How to use a type defined in a different programming language in Mercury code. | |
| • Using foreign enumerations in Mercury code | How to use an enumeration type defined in a foreign language in Mercury code. | |
| • Using Mercury enumerations in foreign code | How to use an enumeration type defined in Mercury in a different programming language. | |
| • Adding foreign declarations | How to add declarations of entities in other programming languages. | |
| • Declaring Mercury exports to other modules | How to call Mercury procedures from a different programming language in another module. | |
| • Adding foreign definitions | How to add definitions of entities in other programming languages. | |
| • Language specific bindings | Information specific to each foreign language. | |
This chapter documents the foreign language interface.