~ chicken-core (chicken-5) 0b501bc5a5cc2ac76e9bb78ba48f6e9250b59dc5
commit 0b501bc5a5cc2ac76e9bb78ba48f6e9250b59dc5 Author: Evan Hanson <evhan@foldling.org> AuthorDate: Sat Feb 13 23:56:40 2016 +1300 Commit: Peter Bex <peter@more-magic.net> CommitDate: Sat Feb 13 19:04:05 2016 +0100 Preserve type of first element in mem* procedure results If the result is a list, its first element will be the same type as the first procedure argument. Signed-off-by: Peter Bex <peter@more-magic.net> diff --git a/types.db b/types.db index b5a53336..9d565dfa 100644 --- a/types.db +++ b/types.db @@ -179,19 +179,19 @@ (reverse (forall (a) (#(procedure #:clean #:enforce) reverse ((list-of a)) (list-of a))) ((null) (null) (let ((#(tmp) #(1))) '()))) -(memq (forall (a) (#(procedure #:clean #:foldable) memq (* (list-of a)) - (or false (list-of a)))) +(memq (forall (a b) (#(procedure #:clean #:foldable) memq (a (list-of b)) + (or false (pair a (list-of b))))) ((* null) (let ((#(tmp) #(1))) '#f)) ((* list) (##core#inline "C_u_i_memq" #(1) #(2)))) -(memv (forall (a) (#(procedure #:clean #:foldable) memv (* (list-of a)) - (or false (list-of a)))) +(memv (forall (a b) (#(procedure #:clean #:foldable) memv (a (list-of b)) + (or false (pair a (list-of b))))) ((* null) (let ((#(tmp) #(1))) '#f)) (((or symbol procedure immediate) list) (##core#inline "C_u_i_memq" #(1) #(2)))) -(member (forall (a) (#(procedure #:clean #:foldable) member - (* (list-of a)) (or false (list-of a)))) +(member (forall (a b) (#(procedure #:clean #:foldable) member (a (list-of b)) + (or false (pair a (list-of b))))) ((* null) (let ((#(tmp) #(1))) '#f)) (((or symbol procedure immediate) list) (##core#inline "C_u_i_memq" #(1) #(2)))Trap