| • 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.