リストを処理する関数を書いたとして、
(lambda (x)
 (if (null? x)
   empty     ;ここは当然空リスト用コードですが
   non-empty  ;ここに空でないリスト用のコードを書くのか、))
(lambda (x)
 (cond ((null? x) empty)
    ((pair? x) non-empty)
    (else error-code)))  ;のように書くのか
どうするのが一般的か知りたかったんです。
引数の型チェックを自分で行うか
総称関数を使うか
パターンマッチングするか。
プリミティブ関数にエラーを投げさせるか
多値で呼び出し元に知らせるか
自分でエラーを投げるか。