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

Last change on this file since 33182 was 33182, checked in by sjamaan, 3 years ago

srfi-1: Bring types file in synch with latest changes in master, and add missing types for "assoc" and "member"

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