Cond

(cond (test expression ...) (test expression ...) ...) -> #f or varies
(cond (test expression ...) ... (else expression)) -> varies

Each test is performed, from left to right, until a test returns a true value. Then, the expressions associated with that test are performed in order, and the result of the last expression in that set is returned as the result. If all tests return false, the cond returns false.

If the (else) expression is included, and no true test is found, the results of the expression associatred with else is returned.

Example:

>> (define (is-seq? x) (cond (((list? x) #t) ((vector? x) #t) (else #f)))
>> (is-seq? 'a)
:: #f
>> (is-seq? (list 1 2 3))
:: #t

A more sophisticated usage:

(define (first c) (cond ((null? c)
                        (error 'args "empty list" c))
                       ((pair? c)
                        (car c))
                       ((not (vector? c))
                        (error 'args "first can only handle vectors and pairs" c))
                       ((> 0 (vector-length c))
                        (error 'args "empty vector"))
                       (else
                        (vector-ref c 0))))
>> (first (vector 1 2 3))
:: 1