Can somebody point me to to the docs where it says "single character atoms
are characters" please.... I seem to have missed something basic. I will
also read LPN, C&M and Art of Prolog tonight and make sure I take it in
that atoms are also characters.

Dammit.
:(


On 3 July 2013 16:26, Daniel Diaz <[email protected]> wrote:

>  Le 03/07/2013 16:44, emacstheviking a écrit :
>
> Hi,
>
>  I have been experimenting with the foreign interface and managed to
> confuse myself.
>
>  Given this foreign declaration:
>
>  %% :- foreign( foo( +string ), [fct_name( foo )]). %% +string => atom at
> call site
> %% :- foreign( foo( +codes ), [fct_name( foo )]).
>
>  :- foreign( foo( +codes ), [fct_name( foo )]).
>
>  and this implementation:
>
>  // +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;
> }
>
>  My problem is that when I use "+chars" I can't then say:
>
>      foo("Hello")
>
>  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.
>
> Hi,
>
> +atom means you pass an atom (e.g. abc) and you get the internal reference
> of the atom in C (which is an integer)
> +chars means you pass a list of characters (e.g. [a,b,c]) and you get a
> NULL terminated string in C, ie. a char * (e.g. "abc")
> +code means you pass a list of char codes (e.g. [97,98,99] which is the
> same a "abc" in Prolog) an dyou get the same char * as above.
>
> See http://gprolog.univ-paris1.fr/manual/html_node/gprolog068.html
>
> Daniel
>
>
>
>  Thanks.
>
>
> --
> Ce message a été vérifié par MailScanner <http://www.mailscanner.info/>pour 
> des virus ou des polluriels et rien de suspect n'a été trouvé.
>
> _______________________________________________
> Users-prolog mailing 
> [email protected]https://lists.gnu.org/mailman/listinfo/users-prolog
>
>
>
> --
> Ce message a été vérifié par MailScanner <http://www.mailscanner.info/>pour 
> des virus ou des polluriels et rien de suspect n'a été trouvé.
>
_______________________________________________
Users-prolog mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/users-prolog

Reply via email to