source: project/release/5/srfi-1/trunk/srfi-1.types @ 32318

Last change on this file since 32318 was 32318, checked in by felix winkelmann, 4 years ago

added srfi-1 egg for chicken 5

File size: 11.8 KB
Line 
1;; srfi-1 -*- Scheme -*-
2
3(alist-cons (forall (a b c) (#(procedure #:clean) alist-cons (a b (list-of c)) (pair a (pair b (list-of c))))))
4(alist-copy (forall (a) (#(procedure #:clean #:enforce) alist-copy ((list-of a)) (list-of a))))
5(alist-delete (forall (a b) (#(procedure #:enforce) alist-delete (a (list-of b) #!optional (procedure (a b) *)) list)))
6(alist-delete! (forall (a b) (#(procedure #:enforce) alist-delete! (a (list-of b) #!optional (procedure (a b) *)) undefined)))
7(any (forall (a) (#(procedure #:enforce) any ((procedure (a #!rest) *) (list-of a) #!rest list) *)))
8(append! (#(procedure #:enforce) append! (#!rest list) list))
9
10(append-map
11 (forall (a b) (#(procedure #:enforce) append-map ((procedure (a #!rest) (list-of b)) (list-of a) #!rest list)
12                           (list-of b))))
13
14(append-map!
15 (forall (a b) (#(procedure #:enforce) append-map! ((procedure (a #!rest) (list-of b)) (list-of a) #!rest list)
16                           (list-of b))))
17
18(append-reverse (#(procedure #:clean #:enforce) append-reverse (list list) list))
19(append-reverse! (#(procedure #:enforce) append-reverse! (list list) list))
20(break (forall (a) (#(procedure #:enforce) break ((procedure (a) *) (list-of a)) (list-of a) (list-of a))))
21(break! (forall (a) (#(procedure #:enforce) break! ((procedure (a) *) (list-of a)) (list-of a) (list-of a))))
22(car+cdr (forall (a b) (#(procedure #:clean #:enforce) car+cdr ((pair a b)) a b)))
23(circular-list (#(procedure #:clean) circular-list (#!rest) list))
24
25(circular-list? (#(procedure #:clean #:foldable) circular-list? (*) boolean)
26                ((null) (let ((#(tmp) #(1))) '#f)))
27
28(concatenate (#(procedure #:clean #:enforce) concatenate ((list-of list)) list))
29(concatenate! (#(procedure #:enforce) concatenate! ((list-of list)) list))
30(cons* (forall (a) (#(procedure #:clean) cons* (a #!rest) (pair a *))))
31(count (forall (a) (#(procedure #:enforce) count ((procedure (a #!rest) *) (list-of a) #!rest list) fixnum)))
32(delete (forall (a b) (#(procedure #:enforce) delete (a (list-of b) #!optional (procedure (a *) *)) (list-of b))))
33(delete! (forall (a b) (#(procedure #:enforce) delete! (a (list-of b) #!optional (procedure (a *) *)) (list-of b))))
34
35(delete-duplicates
36 (forall (a) (#(procedure #:enforce) delete-duplicates ((list-of a) #!optional (procedure (a *) *)) (list-of a))))
37
38(delete-duplicates!
39 (forall (a) (#(procedure #:enforce) delete-duplicates! ((list-of a) #!optional (procedure (a *) *)) (list-of a))))
40
41(dotted-list? (#(procedure #:clean #:foldable) dotted-list? (*) boolean))
42(drop (forall (a) (#(procedure #:enforce) drop ((list-of a) fixnum) (list-of a))))
43(drop-right (forall (a) (#(procedure #:enforce) drop-right ((list-of a) fixnum) (list-of a))))
44(drop-right! (forall (a) (#(procedure #:enforce) drop-right! ((list-of a) fixnum) (list-of a))))
45(drop-while (forall (a) (#(procedure #:enforce) drop-while ((procedure (a) *) (list-of a)) (list-of a))))
46(eighth (#(procedure #:clean #:enforce #:foldable) eighth (pair) *))
47
48(every
49 (forall (a) (#(procedure #:enforce) every ((procedure (a #!rest) *) (list-of a) #!rest list) *)))
50
51(fifth (#(procedure #:clean #:enforce #:foldable) fifth (pair) *))
52(filter (forall (a) (#(procedure #:enforce) filter ((procedure (a) *) (list-of a)) (list-of a))))
53(filter! (forall (a) (#(procedure #:enforce) filter! ((procedure (a) *) (list-of a)) (list-of a))))
54
55(filter-map
56 (forall (a b) (#(procedure #:enforce) filter-map ((procedure (a #!rest) b) (list-of a) #!rest list) (list-of b))))
57
58(find (forall (a) (#(procedure #:enforce) find ((procedure (a) *) (list-of a)) *)))
59(find-tail (forall (a) (#(procedure #:enforce) find-tail ((procedure (a) *) (list-of a)) *)))
60
61(first (forall (a) (#(procedure #:clean #:enforce #:foldable) first ((pair a *)) a))
62       ((pair) (##core#inline "C_u_i_car" #(1))))
63
64(fold (#(procedure #:enforce) fold ((procedure (* #!rest) *) * #!rest list) *)) ;XXX
65(fold-right (#(procedure #:enforce) fold-right ((procedure (* #!rest) *) * #!rest list) *)) ;XXX
66
67(fourth (forall (a) (#(procedure #:clean #:enforce #:foldable) fourth ((pair * (pair * (pair * (pair a *))))) a))
68        (((pair * (pair * (pair * (pair * *)))))
69         (##core#inline "C_u_i_car" 
70                        (##core#inline "C_u_i_cdr"
71                                       (##core#inline "C_u_i_cdr"
72                                                      (##core#inline "C_u_i_cdr" #(1)))))))
73
74(iota (#(procedure #:clean #:enforce) iota (fixnum #!optional fixnum fixnum) (list-of number)))
75(last (#(procedure #:clean #:enforce #:foldable) last (pair) *))
76(last-pair (#(procedure #:clean #:enforce #:foldable) last-pair (pair) *))
77(length+ (#(procedure #:clean #:enforce #:foldable) length+ (list) *))
78(list-copy (forall (a) (#(procedure #:pure) list-copy (a) a)))
79(list-index (forall (a) (#(procedure #:enforce) list-index ((procedure (a #!rest) *) (list-of a) #!rest list) *)))
80(list-tabulate (forall (a) (#(procedure #:enforce) list-tabulate (fixnum (procedure (fixnum) a)) (list-of a))))
81(list= (#(procedure #:clean #:enforce) list= (#!optional (procedure (list list) *) #!rest list) boolean)
82       (() '#t)
83       ((procedure) (let ((#(tmp) #(1))) '#t)))
84
85(lset-adjoin 
86 (forall (a) (#(procedure #:enforce) lset-adjoin ((procedure (a a) *) (list-of a) #!rest a) (list-of a)))
87 ((procedure list) (let ((#(tmp) #(1))) #(2))))
88
89(lset-diff+intersection
90 (forall (a)
91         (#(procedure #:enforce) lset-diff+intersection ((procedure (a a) *) (list-of a) #!rest (list-of a))
92                     (list-of a) (list-of a)))
93 ((procedure list) (let ((#(tmp) #(1))) (##sys#values #(2) '()))))
94
95(lset-diff+intersection! 
96 (forall (a)
97         (#(procedure #:enforce) lset-diff+intersection! ((procedure (a a) *) (list-of a) #!rest (list-of a))
98                     (list-of a) (list-of a)))
99 ((procedure list) (let ((#(tmp) #(1))) (##sys#values #(2) '()))))
100
101(lset-difference
102 (forall (a) (#(procedure #:enforce) lset-difference ((procedure (a a) *) (list-of a) #!rest (list-of a)) (list-of a)))
103 ((procedure list) (let ((#(tmp) #(1))) #(2))))
104
105(lset-difference!
106 (forall (a) (#(procedure #:enforce) lset-difference! ((procedure (a a) *) (list-of a) #!rest (list-of a)) (list-of a)))
107 ((procedure list) (let ((#(tmp) #(1))) #(2))))
108
109(lset-intersection
110 (forall (a) (#(procedure #:enforce) lset-intersection ((procedure (a a) *) (list-of a) #!rest (list-of a)) (list-of a)))
111 ((procedure list) (let ((#(tmp) #(1))) #(2))))
112
113(lset-intersection!
114 (forall (a) (#(procedure #:enforce) lset-intersection! ((procedure (a a) *) (list-of a) #!rest (list-of a)) (list-of a)))
115 ((procedure list) (let ((#(tmp) #(1))) #(2))))
116
117(lset-union
118 (forall (a) (#(procedure #:enforce) lset-union ((procedure (a a) *) #!rest (list-of a)) (list-of a)))
119 ((procedure) (let ((#(tmp) #(1))) '()))
120 ((procedure list) (let ((#(tmp) #(1))) #(2))))
121
122(lset-union!
123 (forall (a) (#(procedure #:enforce) lset-union! ((procedure (a a) *) #!rest (list-of a)) (list-of a)))
124 ((procedure) (let ((#(tmp) #(1))) '()))
125 ((procedure list) (let ((#(tmp) #(1))) #(2))))
126
127(lset-xor
128 (forall (a) (#(procedure #:enforce) lset-xor ((procedure (a a) *) #!rest (list-of a)) (list-of a)))
129 ((procedure) (let ((#(tmp) #(1))) '()))
130 ((procedure list) (let ((#(tmp) #(1))) #(2))))
131
132(lset-xor!
133 (forall (a) (#(procedure #:enforce) lset-xor! ((procedure (a a) *) #!rest (list-of a)) (list-of a)))
134 ((procedure) (let ((#(tmp) #(1))) '()))
135 ((procedure list) (let ((#(tmp) #(1))) #(2))))
136
137(lset<=
138 (forall (a) (#(procedure #:enforce) lset<= ((procedure (a a) *) #!rest (list-of a)) boolean))
139 ((procedure) (let ((#(tmp) #(1))) '#t))
140 ((procedure list) (let ((#(tmp1) #(1)) (#(tmp2) #(2))) '#t)))
141
142(lset=
143 (forall (a) (#(procedure #:enforce) lset= ((procedure (a a) *) #!rest (list-of a)) boolean))
144 ((procedure) (let ((#(tmp) #(1))) '#t))
145 ((procedure list) (let ((#(tmp1) #(1)) (#(tmp2) #(2))) '#t)))
146
147(make-list (forall (a) (#(procedure #:clean #:enforce) make-list (fixnum #!optional a) (list-of a))))
148
149(map!
150 (forall (a b) (#(procedure #:enforce) map! ((procedure (a #!rest) b) (list-of a) #!rest list) (list-of b))))
151
152(map-in-order
153 (forall 
154  (a b)
155  (#(procedure #:enforce) map-in-order ((procedure (a #!rest) b) (list-of a) #!rest list) (list-of b))))
156
157(ninth (#(procedure #:clean #:enforce #:foldable) ninth (pair) *))
158
159(not-pair? (#(procedure #:clean #:foldable) not-pair? (*) boolean)
160           ((pair) (let ((#(tmp) #(1))) '#f))
161           (((not (or pair list))) (let ((#(tmp) #(1))) '#t)))
162
163(null-list? (#(procedure #:clean #:enforce #:foldable) null-list? (list) boolean)
164            ((pair) (let ((#(tmp) #(1))) '#f))
165            ((list) (let ((#(tmp) #(1))) '#f))
166            ((null) (let ((#(tmp) #(1))) '#t)))
167
168(pair-fold (#(procedure #:enforce) pair-fold (procedure * list #!rest list) *)) ;XXX do this
169(pair-fold-right (#(procedure #:enforce) pair-fold-right (procedure * list #!rest list) *)) ;XXX
170(pair-for-each (#(procedure #:enforce) pair-for-each ((procedure (#!rest) . *) list #!rest list) undefined)) ;XXX
171(partition (forall (a) (#(procedure #:enforce) partition ((procedure (a) *) (list-of a)) (list-of a) (list-of a))))
172(partition! (forall (a) (#(procedure #:enforce) partition! ((procedure (a) *) (list-of a)) (list-of a) (list-of a))))
173
174(proper-list? (#(procedure #:clean #:foldable) proper-list? (*) boolean)
175              ((null) (let ((#(tmp) #(1))) '#t)))
176
177(reduce (#(procedure #:enforce) reduce ((procedure (* *) *) * list) *)) ;XXX
178(reduce-right (#(procedure #:enforce) reduce-right ((procedure (* *) *) * list) *)) ;XXX
179(remove (forall (a) (#(procedure #:enforce) remove ((procedure (a) *) (list-of a)) (list-of a))))
180(remove! (forall (a) (#(procedure #:enforce) remove! ((procedure (a) *) (list-of a)) (list-of a))))
181(reverse! (forall (a) (#(procedure #:enforce) reverse! ((list-of a)) (list-of a))))
182
183(second (forall (a) (#(procedure #:clean #:enforce #:foldable) second ((pair * (pair a *))) a))
184        (((pair * (pair * *))) (##core#inline "C_u_i_car" (##core#inline "C_u_i_cdr" #(1)))))
185
186(seventh (#(procedure #:clean #:enforce #:foldable) seventh (pair) *))
187(sixth (#(procedure #:clean #:enforce #:foldable) sixth (pair) *))
188(span (forall (a) (#(procedure #:enforce) span ((procedure (a) *) (list-of a)) (list-of a) (list-of a))))
189(span! (forall (a) (#(procedure #:enforce) span! ((procedure (a) *) (list-of a)) (list-of a) (list-of a))))
190(split-at (forall (a) (#(procedure #:enforce) split-at ((list-of a) fixnum) (list-of a) (list-of a))))
191(split-at! (forall (a) (#(procedure #:enforce) split-at! ((list-of a) fixnum) (list-of a) (list-of a))))
192(take (forall (a) (#(procedure #:enforce) take ((list-of a) fixnum) (list-of a))))
193(take! (forall (a) (#(procedure #:enforce) take! ((list-of a) fixnum) (list-of a))))
194(take-right (forall (a) (#(procedure #:enforce) take-right ((list-of a) fixnum) (list-of a))))
195(take-while (forall (a) (#(procedure #:enforce) take-while ((procedure (a) *) (list-of a)) (list-of a))))
196(take-while! (forall (a) (#(procedure #:enforce) take-while! ((procedure (a) *) (list-of a)) (list-of a))))
197(tenth (#(procedure #:clean #:enforce #:foldable) tenth (pair) *))
198
199(third (forall (a) (#(procedure #:clean #:enforce #:foldable) third ((pair * (pair * (pair a *)))) a))
200       (((pair * (pair * (pair * *))))
201        (##core#inline "C_u_i_car" 
202                       (##core#inline "C_u_i_cdr" (##core#inline "C_u_i_cdr" #(1))))))
203
204(unfold (#(procedure #:enforce) unfold ((procedure (*) *) (procedure (*) *) (procedure (*) *) * #!optional (procedure (*) *)) *)) ;XXX
205(unfold-right (#(procedure #:enforce) unfold-right ((procedure (*) *) (procedure (*) *) (procedure (*) *) * #!optional (procedure (*) *)) *)) ;XXX
206(unzip1 (forall (a) (#(procedure #:clean #:enforce) unzip1 ((list-of (pair a *))) (list-of a))))
207(unzip2 (forall (a b) (#(procedure #:clean #:enforce) unzip2 ((list-of (pair a (pair b *)))) (list-of a) (list-of b))))
208
209(unzip3
210 (forall (a b c) (#(procedure #:clean #:enforce) unzip3 ((list-of (pair a (pair b (pair c *))))) (list-of a) (list-of b) (list-of c))))
211
212(unzip4 (#(procedure #:clean #:enforce) unzip4 (list) list list list list)) ; yeah
213(unzip5 (#(procedure #:clean #:enforce) unzip5 (list) list list list list list)) ; yeah, too
214(xcons (forall (a b) (#(procedure #:pure) xcons (a b) (pair b a))))
215(zip (forall (a) (#(procedure #:clean #:enforce) zip ((list-of a) #!rest list) (list-of (pair a *)))))
Note: See TracBrowser for help on using the repository browser.