/** * ops/list_ops.c * * Post Scarcity Software Environment: list_ops. * * Operations on cons cells. * * (c) 2026 Simon Brooke * Licensed under GPL version 2.0, or, at your option, any later version. */ #include "memory/pointer.h" #include "memory/pso2.h" #include "memory/pso4.h" #include "ops/stack_ops.h" #include "payloads/stack.h" #include "ops/truth.h" struct pso_pointer length( struct pso_pointer frame_pointer) { struct pso4* frame = pointer_to_pso4(frame_pointer); struct pso_pointer list = fetch_arg( frame, 0); int count = 0; for ( struct pso_pointer cursor = list; !c_nilp( cursor); cursor = cdr( make_frame( 1, frame_pointer, list))) { count++; } return make_integer( frame_pointer, count); }