diff options
| author | Taylan Kammer <taylan.kammer@gmail.com> | 2025-02-22 18:01:33 +0100 |
|---|---|---|
| committer | Taylan Kammer <taylan.kammer@gmail.com> | 2025-02-22 18:01:33 +0100 |
| commit | b7fb551ae61d26c30e6078f1f617862430141ce3 (patch) | |
| tree | 6ca7992432d11e8997def25671561454c7660c92 /src/libzisp/lib | |
| parent | c922361115c8ee398ec4e26bb0af8cca4dcb9667 (diff) | |
update
Diffstat (limited to 'src/libzisp/lib')
| -rw-r--r-- | src/libzisp/lib/list.zig | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libzisp/lib/list.zig b/src/libzisp/lib/list.zig new file mode 100644 index 0000000..9d6a6bc --- /dev/null +++ b/src/libzisp/lib/list.zig @@ -0,0 +1,20 @@ +const value = @import("../value.zig"); + +const Value = value.Value; + +pub fn reverse(list: Value) Value { + return reverseWithTail(list, value.nil.nil); +} + +pub fn reverseWithTail(list: Value, tail: Value) Value { + var head = list; + var result = tail; + while (!value.nil.check(head)) { + value.pair.assert(head); + const car = value.pair.car(head); + const cdr = value.pair.cdr(head); + result = value.pair.cons(car, result); + head = cdr; + } + return result; +} |
