35 for (
size_t i = count; i-- > 0;) {
37 node->
value = items[i];
64 node->
next = next_head;
67 result->
len = next_len + 1;
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_LIST(value_ref)
#define IS_NIL(value_ref)
srn_value_t * srn_list_cons(srn_context_t *ctx, srn_metadata_t *metadata, srn_value_t *value, srn_value_t *list)
Prepend value to list, returning a new list.
srn_value_t * srn_list_make(srn_context_t *ctx, srn_metadata_t *metadata, srn_value_t *const *items, size_t count)
Build a list from an array of elements.
A list is a singly linked sequence of values.
struct srn_list_node_t * next
Since all the values are immutable and persistent.
#define PANIC_IF_NULL(ptr)