
Hi there,
how can bignums be communicated to/from Ciao Prolog? More precisely, since we have
$ ciao Ciao-Prolog 1.9 #34: Sat Nov 30 19:17:43 CET 2002 ?- current_prolog_flag(bounded, X).
X = false ?
yes ?-
integers are unbounded. However, the function
ciao_term ciao_integer(int i)
allows to build only integers that fit in a machine word. The problem with the design of the function
int ciao_to_integer(ciao_term term)
appears to be more serious, as the C application seems to have no way of detecting whether the conversion was successful or not. It would seem better to define something like
int ciao_to_integer(ciao_term term, long* pl)
so that 0 is returned if the conversion failed (in which case *pl has not been touched), and a number different from 0 otherwise. Bignums could then be communicated with a pair of functions ciao_get_number_chars() and ciao_put_number_chars(). What do you think? Best wishes to you all
Roberto