hi all.
I found SCM_BOOL_T will convert to #nil in the Guile.
If we write c-function like this:
============================
SCM_DEFINE(scm_my_init, "my-init", 1, 0, 0,
            (SCM flags),
            "Initializes my env.")
#define FUNC_NAME s_scm_my_init
{
    SCM_ASSERT(scm_is_integer(flags), flags, SCM_ARG1, FUNC_NAME);

    if( init_somthing(scm_to_ulong(flags)) == -1 )
        return SCM_BOOL_F;
    else        
        return SCM_BOOL_T;

}
#undef FUNC_NAME

=============================
If init_something success, return true, else false.

And I call this "my-init" function in the Guile:
---------------------------
(if (not (my-init flags))
  (error "init failed!")
  (format #f "init ok!~%")
)
---------------------------

The problem is SCM_BOOL_T convert to #nil, and (not #nil)==>#t ! So I
can't get a logical result.

Is this conversion accepted? Or I made some mistakes?
Any help would be appreciated! Thanks!



-- 
GNU Powered it
GPL Protected it
GOD Blessed it

HFG - NalaGinrut


Reply via email to