I have been experimenting with the foreign interface and managed to confuse myself.
%% :- foreign( foo( +string ), [fct_name( foo )]). %% +string => atom at call site
%% :- foreign( foo( +codes ), [fct_name( foo )]).
:- foreign( foo( +codes ), [fct_name( foo )]).
// +string :: atom ==> char*, works
// +codes :: character-code list ==> char*, works as foo("Hello").
// +chars :: character list ==> char*, fails on call foo("HI"), foo([64,65]). Why?
PlBool
foo(char* s)
{
printf("FOO: ==> %s\n", s);
return PL_TRUE;
}
as I get a type_error so please can anybody explain to me what "character list" is and how it looks in a command line session? The flag that controls the interpretation of double-quoted strings is at its default value as I have not altered it but I am aware of its existence and the fact that "" is syntactic sugaring of lists of codes.
Thanks.