mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-14 00:07:36 +02:00
Revert memq, memv, assq, assv back to primitives
This commit is contained in:
parent
86e3b0fbd9
commit
e636f40f99
5 changed files with 70 additions and 30 deletions
|
@ -347,6 +347,10 @@ extern const object primitive_cell;
|
||||||
extern const object primitive_eq_127;
|
extern const object primitive_eq_127;
|
||||||
extern const object primitive_eqv_127;
|
extern const object primitive_eqv_127;
|
||||||
extern const object primitive_equal_127;
|
extern const object primitive_equal_127;
|
||||||
|
extern const object primitive_assq;
|
||||||
|
extern const object primitive_assv;
|
||||||
|
extern const object primitive_memq;
|
||||||
|
extern const object primitive_memv;
|
||||||
extern const object primitive_length;
|
extern const object primitive_length;
|
||||||
extern const object primitive_vector_91length;
|
extern const object primitive_vector_91length;
|
||||||
extern const object primitive_bytevector_91length;
|
extern const object primitive_bytevector_91length;
|
||||||
|
|
32
runtime.c
32
runtime.c
|
@ -3410,6 +3410,30 @@ void _apply(void *data, object cont, object args)
|
||||||
dispatch(data, obj_obj2int(argc), (function_type)dispatch_apply_va, cont, cont, args);
|
dispatch(data, obj_obj2int(argc), (function_type)dispatch_apply_va, cont, cont, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _assq(void *data, object cont, object args)
|
||||||
|
{
|
||||||
|
Cyc_check_num_args(data, "assq ", 2, args);
|
||||||
|
return_closcall1(data, cont, assq(data, car(args), cadr(args)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void _assv(void *data, object cont, object args)
|
||||||
|
{
|
||||||
|
Cyc_check_num_args(data, "assv ", 2, args);
|
||||||
|
return_closcall1(data, cont, assq(data, car(args), cadr(args)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void _memq(void *data, object cont, object args)
|
||||||
|
{
|
||||||
|
Cyc_check_num_args(data, "memq", 2, args);
|
||||||
|
return_closcall1(data, cont, memqp(data, car(args), cadr(args)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void _memv(void *data, object cont, object args)
|
||||||
|
{
|
||||||
|
Cyc_check_num_args(data, "memv", 2, args);
|
||||||
|
return_closcall1(data, cont, memqp(data, car(args), cadr(args)));
|
||||||
|
}
|
||||||
|
|
||||||
void _char_91_125integer(void *data, object cont, object args)
|
void _char_91_125integer(void *data, object cont, object args)
|
||||||
{
|
{
|
||||||
Cyc_check_num_args(data, "char->integer", 1, args);
|
Cyc_check_num_args(data, "char->integer", 1, args);
|
||||||
|
@ -4316,6 +4340,10 @@ static primitive_type eqv_127_primitive =
|
||||||
{ {0}, primitive_tag, "eqv?", &_eqv_127 };
|
{ {0}, primitive_tag, "eqv?", &_eqv_127 };
|
||||||
static primitive_type equal_127_primitive =
|
static primitive_type equal_127_primitive =
|
||||||
{ {0}, primitive_tag, "equal?", &_equal_127 };
|
{ {0}, primitive_tag, "equal?", &_equal_127 };
|
||||||
|
static primitive_type assq_primitive = { {0}, primitive_tag, "assq", &_assq };
|
||||||
|
static primitive_type assv_primitive = { {0}, primitive_tag, "assv", &_assv };
|
||||||
|
static primitive_type memq_primitive = { {0}, primitive_tag, "memq", &_memq };
|
||||||
|
static primitive_type memv_primitive = { {0}, primitive_tag, "memv", &_memv };
|
||||||
static primitive_type length_primitive =
|
static primitive_type length_primitive =
|
||||||
{ {0}, primitive_tag, "length", &_length };
|
{ {0}, primitive_tag, "length", &_length };
|
||||||
static primitive_type bytevector_91length_primitive =
|
static primitive_type bytevector_91length_primitive =
|
||||||
|
@ -4539,6 +4567,10 @@ const object primitive_cell = &cell_primitive;
|
||||||
const object primitive_eq_127 = &eq_127_primitive;
|
const object primitive_eq_127 = &eq_127_primitive;
|
||||||
const object primitive_eqv_127 = &eqv_127_primitive;
|
const object primitive_eqv_127 = &eqv_127_primitive;
|
||||||
const object primitive_equal_127 = &equal_127_primitive;
|
const object primitive_equal_127 = &equal_127_primitive;
|
||||||
|
const object primitive_assq = &assq_primitive;
|
||||||
|
const object primitive_assv = &assv_primitive;
|
||||||
|
const object primitive_memq = &memq_primitive;
|
||||||
|
const object primitive_memv = &memv_primitive;
|
||||||
const object primitive_length = &length_primitive;
|
const object primitive_length = &length_primitive;
|
||||||
const object primitive_bytevector_91length = &bytevector_91length_primitive;
|
const object primitive_bytevector_91length = &bytevector_91length_primitive;
|
||||||
const object primitive_vector_91length = &vector_91length_primitive;
|
const object primitive_vector_91length = &vector_91length_primitive;
|
||||||
|
|
|
@ -10,11 +10,11 @@
|
||||||
(import (scheme cyclone common))
|
(import (scheme cyclone common))
|
||||||
(export
|
(export
|
||||||
member
|
member
|
||||||
memv
|
;memv
|
||||||
memq
|
;memq
|
||||||
assoc
|
assoc
|
||||||
assv
|
;assv
|
||||||
assq
|
;assq
|
||||||
cons-source
|
cons-source
|
||||||
syntax-rules
|
syntax-rules
|
||||||
letrec*
|
letrec*
|
||||||
|
@ -542,8 +542,8 @@
|
||||||
(if (pair? compare)
|
(if (pair? compare)
|
||||||
(member-helper obj lst (car compare))
|
(member-helper obj lst (car compare))
|
||||||
(member-helper obj lst equal?)))
|
(member-helper obj lst equal?)))
|
||||||
(define (memq obj lst) (member-helper obj lst eq?))
|
;(define (memq obj lst) (member-helper obj lst eq?))
|
||||||
(define (memv obj lst) (member-helper obj lst eqv?))
|
;(define (memv obj lst) (member-helper obj lst eqv?))
|
||||||
|
|
||||||
(define (assoc-helper obj lst cmp?)
|
(define (assoc-helper obj lst cmp?)
|
||||||
(cond
|
(cond
|
||||||
|
@ -557,8 +557,8 @@
|
||||||
(if (pair? compare)
|
(if (pair? compare)
|
||||||
(assoc-helper obj alist (car compare))
|
(assoc-helper obj alist (car compare))
|
||||||
(assoc-helper obj alist equal?)))
|
(assoc-helper obj alist equal?)))
|
||||||
(define (assq obj alist) (assoc-helper obj alist eq?))
|
;(define (assq obj alist) (assoc-helper obj alist eq?))
|
||||||
(define (assv obj alist) (assoc-helper obj alist eqv?))
|
;(define (assv obj alist) (assoc-helper obj alist eqv?))
|
||||||
|
|
||||||
(define (foldl func accum lst)
|
(define (foldl func accum lst)
|
||||||
(if (null? lst)
|
(if (null? lst)
|
||||||
|
|
|
@ -97,12 +97,11 @@
|
||||||
eqv?
|
eqv?
|
||||||
equal?
|
equal?
|
||||||
Cyc-fast-member
|
Cyc-fast-member
|
||||||
;assoc
|
Cyc-fast-assoc
|
||||||
;assq
|
assv
|
||||||
;assv
|
assq
|
||||||
;memq
|
memq
|
||||||
;memv
|
memv
|
||||||
;member
|
|
||||||
length
|
length
|
||||||
set-car!
|
set-car!
|
||||||
set-cdr!
|
set-cdr!
|
||||||
|
@ -224,12 +223,11 @@
|
||||||
(eqv? 2 2)
|
(eqv? 2 2)
|
||||||
(equal? 2 2)
|
(equal? 2 2)
|
||||||
(Cyc-fast-member 2 2)
|
(Cyc-fast-member 2 2)
|
||||||
;(assoc 2 2)
|
(Cyc-fast-assoc 2 2)
|
||||||
;(assq 2 2)
|
(assq 2 2)
|
||||||
;(assv 2 2)
|
(assv 2 2)
|
||||||
;(memq 2 2)
|
(memq 2 2)
|
||||||
;(memv 2 2)
|
(memv 2 2)
|
||||||
;(member 2 2)
|
|
||||||
(length 1 1)
|
(length 1 1)
|
||||||
(set-car! 2 2)
|
(set-car! 2 2)
|
||||||
(set-cdr! 2 2)
|
(set-cdr! 2 2)
|
||||||
|
@ -531,6 +529,11 @@
|
||||||
((eq? p 'eqv?) "Cyc_eq")
|
((eq? p 'eqv?) "Cyc_eq")
|
||||||
((eq? p 'equal?) "equalp")
|
((eq? p 'equal?) "equalp")
|
||||||
((eq? p 'Cyc-fast-member) "memberp")
|
((eq? p 'Cyc-fast-member) "memberp")
|
||||||
|
((eq? p 'Cyc-fast-assoc) "assoc")
|
||||||
|
((eq? p 'assq) "assq")
|
||||||
|
((eq? p 'assv) "assq")
|
||||||
|
((eq? p 'memq) "memqp")
|
||||||
|
((eq? p 'memv) "memqp")
|
||||||
((eq? p 'boolean?) "Cyc_is_boolean")
|
((eq? p 'boolean?) "Cyc_is_boolean")
|
||||||
((eq? p 'char?) "Cyc_is_char")
|
((eq? p 'char?) "Cyc_is_char")
|
||||||
((eq? p 'null?) "Cyc_is_null")
|
((eq? p 'null?) "Cyc_is_null")
|
||||||
|
@ -576,6 +579,7 @@
|
||||||
>=
|
>=
|
||||||
<=
|
<=
|
||||||
Cyc-fast-member
|
Cyc-fast-member
|
||||||
|
Cyc-fast-assoc
|
||||||
apply
|
apply
|
||||||
car
|
car
|
||||||
cdr
|
cdr
|
||||||
|
@ -627,11 +631,11 @@
|
||||||
Cyc-installation-dir
|
Cyc-installation-dir
|
||||||
Cyc-compilation-environment
|
Cyc-compilation-environment
|
||||||
command-line-arguments
|
command-line-arguments
|
||||||
;assq
|
assq
|
||||||
;assv
|
assv
|
||||||
;assoc
|
;assoc
|
||||||
;memq
|
memq
|
||||||
;memv
|
memv
|
||||||
;member
|
;member
|
||||||
length
|
length
|
||||||
set-car!
|
set-car!
|
||||||
|
|
|
@ -199,12 +199,12 @@
|
||||||
(list 'eq? eq?)
|
(list 'eq? eq?)
|
||||||
(list 'eqv? eqv?)
|
(list 'eqv? eqv?)
|
||||||
(list 'equal? equal?)
|
(list 'equal? equal?)
|
||||||
;(list 'assoc assoc)
|
;(list 'Cyc-fast-assoc Cyc-fast-assoc)
|
||||||
;(list 'assq assq)
|
(list 'assq assq)
|
||||||
;(list 'assv assv)
|
(list 'assv assv)
|
||||||
;(list 'memq memq)
|
(list 'memq memq)
|
||||||
;(list 'memv memv)
|
(list 'memv memv)
|
||||||
;(list 'member member)
|
;(list 'Cyc-fast-member Cyc-fast-member)
|
||||||
(list 'length length)
|
(list 'length length)
|
||||||
(list 'set-car! set-car!)
|
(list 'set-car! set-car!)
|
||||||
(list 'set-cdr! set-cdr!)
|
(list 'set-cdr! set-cdr!)
|
||||||
|
|
Loading…
Add table
Reference in a new issue