diff options
Diffstat (limited to 'src/libzisp/value/pair.zig')
| -rw-r--r-- | src/libzisp/value/pair.zig | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/src/libzisp/value/pair.zig b/src/libzisp/value/pair.zig deleted file mode 100644 index 6ea1edf..0000000 --- a/src/libzisp/value/pair.zig +++ /dev/null @@ -1,55 +0,0 @@ -const std = @import("std"); - -const value = @import("../value.zig"); -const gc = @import("../gc.zig"); - -const ptr = @import("ptr.zig"); - -const Value = value.Value; - -// Zig API - -pub fn check(v: Value) bool { - return ptr.checkZispTag(v, .pair); -} - -pub fn assert(v: Value) void { - if (!check(v)) { - v.dump(); - @panic("not pair"); - } -} - -// Zisp API - -pub fn pred(v: Value) Value { - return value.boole.pack(check(v)); -} - -pub fn cons(v1: Value, v2: Value) Value { - return ptr.pack(@ptrCast(gc.cons(v1, v2)), .pair); -} - -fn getMem(v: Value) *[2]Value { - return @ptrCast(ptr.unpack(v).@"0"); -} - -pub fn car(v: Value) Value { - assert(v); - return getMem(v)[0]; -} - -pub fn cdr(v: Value) Value { - assert(v); - return getMem(v)[1]; -} - -pub fn setcar(v: Value, new: Value) void { - assert(v); - getMem(v)[0] = new; -} - -pub fn setcdr(v: Value, new: Value) void { - assert(v); - getMem(v)[1] = new; -} |
