pub unsafe extern "C" fn PL_register_foreign(
    name: *const c_char,
    arity: c_int,
    func: pl_function_t,
    flags: c_int
    ...
) -> c_int