-(defun find-if (predicate sequence &key (key #'identity))
- (do-sequence (x sequence)
- (when (funcall predicate (funcall key x))
- (return x))))
-
-(defun some (function seq)
- (do-sequence (elt seq)
- (when (funcall function elt)
- (return-from some t))))
-
-(defun every (function seq)
- (do-sequence (elt seq)
- (unless (funcall function elt)
- (return-from every nil)))
- t)
-
-(defun position (elt sequence)
- (let ((pos 0))
- (do-sequence (x seq)
- (when (eq elt x)
- (return))
- (incf pos))
- pos))
+(defun position (elt sequence &key key (test #'eql testp)
+ (test-not #'eql test-not-p))
+ (do-sequence (x sequence index)
+ (when (satisfies-test-p elt x :key key :test test :testp testp
+ :test-not test-not :test-not-p test-not-p )
+ (return index))))