32 if (s->
inner.maybe_error !=
nullptr) {
33 return srn_errors_err_to_value(ctx, metadata, s->
inner.maybe_error);
46 return srn_errors_make_error(ctx, metadata,
ABSURD,
"expected a seq");
51 if (neu->
inner.maybe_error !=
nullptr) {
52 return srn_errors_err_to_value(ctx, metadata, neu->
inner.maybe_error);
srn_value_t * srn_value_make(srn_context_t *ctx, srn_value_tag_t tag, srn_metadata_t *metadata, void *payload)
Creates a new serene value.
#define AS_SEQ(value_ref)
#define IS_A(value_ref, field)
seq_t seq_push(const srn_context_t *ctx, const seq_t *seq, seq_elem_t x)
seq_t seq_empty(const srn_context_t *ctx)
This is an implementation of bit - partitioned, persistent, immutable sequence For more information,...
void * seq_elem_t
We use generic pointers to refer to internal nodes, leaf nodes and even elements.
srn_value_t * srn_seq_empty(srn_context_t *ctx, srn_metadata_t *metadata)
srn_value_t * srn_seq_conj(srn_context_t *ctx, srn_metadata_t *metadata, srn_value_t *seq, srn_value_t *value)
A persistent, immutable, indexed sequence.
#define PANIC_IF_NULL(ptr)