handle_typ (*handleFromInt)(int_typ x);
// For bool, O is false, 1 is true, and no other value is allowed.
handle_typ (*handleFromBool)(int_typ x);
handle_typ (*handleFromDouble)(double x);
handle_typ (*handleFromString)(string_typ x);
handle_typ (*handleFromFunction)(const char *signature,
function_typ f, void *data);
int_typ (*IntFromHandle)(handle_typ handle);
int_typ (*boolFromHandle)(handle_typ handle);
double (*doubleFromHandle)(handle_typ handle);
// TODO: Note that a pointer and length are returned, but the pointer is
// valid for a limited time only.
string_typ (*stringFromHandle)(handle_typ handle);
// Adds a field to a datum (possibly a module) and sets it to an initial
// value.
// TODO: Change name to sig.
void (*addField)(handle_typ handle,
const char *name, handle_typ init);