Next: , Previous: , Up: Interfacing with Erlang   [Contents]


14.9.4.2 Using pragma foreign_proc for Erlang

The input and output variables for a Erlang ‘pragma foreign_proc’ will be the Erlang representations as described in Erlang data passing conventions.

The Erlang code in a pragma foreign_proc declaration for a procedure whose determinism indicates that it can fail must assign either ‘true’ or ‘false’ to the variable ‘SUCCESS_INDICATOR’. For example:

:- pred contains_char(list(char)::in, char::in) is semidet.

:- pragma foreign_proc("Erlang",
	contains_char(Str::in, Ch::in),
        [will_not_call_mercury, promise_pure, thread_safe],
        "SUCCESS_INDICATOR = (string:chr(Str, Ch) =/= 0)").

Arguments whose mode is input will have their values set by the Mercury implementation on entry to the Erlang code. The Erlang code must set the values of all output variables, even if the procedure fails (i.e. sets the ‘SUCCESS_INDICATOR’ variable to false).