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
