Added some special cases to type signatures for pair accessors.
This commit is contained in:
parent
eb95b35a12
commit
f77e4eeb41
|
@ -40,15 +40,20 @@
|
||||||
(->acc (list (-pair a b)) b (list -cdr))
|
(->acc (list (-pair a b)) b (list -cdr))
|
||||||
(->* (list (-lst a)) (-lst a))))]
|
(->* (list (-lst a)) (-lst a))))]
|
||||||
|
|
||||||
|
;; these type signatures do not cover all valid uses of these pair accessors
|
||||||
[caar (-poly (a b c)
|
[caar (-poly (a b c)
|
||||||
(cl->* [->acc (list (-pair (-pair a b) c)) a (list -car -car)]
|
(cl->* [->acc (list (-pair (-pair a b) c)) a (list -car -car)]
|
||||||
|
[-> (-lst (-pair a b)) a]
|
||||||
|
[-> (-pair (-lst a) b) a]
|
||||||
[-> (-lst (-lst a)) a]))]
|
[-> (-lst (-lst a)) a]))]
|
||||||
[cdar (-poly (a b c)
|
[cdar (-poly (a b c)
|
||||||
(cl->* [->acc (list (-pair (-pair a b) c)) b (list -cdr -car)]
|
(cl->* [->acc (list (-pair (-pair a b) c)) b (list -cdr -car)]
|
||||||
|
[-> (-lst (-pair a b)) b]
|
||||||
|
[-> (-pair (-lst a) b) (-lst a)]
|
||||||
[-> (-lst (-lst a)) (-lst a)]))]
|
[-> (-lst (-lst a)) (-lst a)]))]
|
||||||
[cadr (-poly (a b c)
|
[cadr (-poly (a b c)
|
||||||
(cl->* [->acc (list (-pair a (-pair b c))) b (list -car -cdr)]
|
(cl->* [->acc (list (-pair a (-pair b c))) b (list -car -cdr)]
|
||||||
[-> (-lst a) a]))]
|
[-> (-lst a) a]))]
|
||||||
[cddr (-poly (a b c)
|
[cddr (-poly (a b c)
|
||||||
(cl->* [->acc (list (-pair a (-pair b c))) c (list -cdr -cdr)]
|
(cl->* [->acc (list (-pair a (-pair b c))) c (list -cdr -cdr)]
|
||||||
[-> (-lst a) (-lst a)]))]
|
[-> (-lst a) (-lst a)]))]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user