12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <errno.h>
- #include "sans.h"
- #include "garbagecollector.h"
- #include "runtime.h"
- sdata bltn_car(sdata ob) {
- if (ob.tag == tcons) {
- return heap_ref(ob.data.value);
- }
- else {
- log_err("runtime/bltn_car: not a pair\n");
- }
- }
- sdata bltn_cdr(sdata ob) {
- if (ob.tag == tcons) {
- return heap_ref(ob.data.value + 1);
- }
- else {
- log_err("runtime/bltn_cdr: not a pair\n");
- }
- }
- sdata bltn_cons(sdata car, sdata cdr) {
- return cons(car, cdr);
- }
- void bltn_set_car(sdata ob, sdata x) {
- if (ob.tag == tcons) {
- heap_set(ob.data.value, x);
- }
- else {
- log_err("runtime/bltn_set_car: not a pair\n");
- }
- }
- void bltn_set_cdr(sdata ob, sdata x) {
- if (ob.tag == tcons) {
- heap_set(ob.data.value + 1, x);
- }
- else {
- log_err("runtime/bltn_set_cdr: not a pair\n");
- }
- }
|