Scheme どう書く?的「どうしたデルタ1? 応答しろ!」

整列済みの number のリストがある。

'(1 3 4 5 6 12 13 15)

このようなリストで数が連続している部分は '(1 2 3) -> '(1 . 3) のように両端のみを書くような記法を導入する。

最初の例のリストであれば以下のようになる。

'(1 (3 . 6) (12 . 13) 15)

このようなリストの変換をするコードを書きたい。
Scheme どう書く?的 - ひげぽん OSとか作っちゃうかMona-

group-sequenceを使ってみた。
関数名のdelta1?がかっこいい。

(use srfi-1)
(use gauche.sequence)

(define (group-number-list l)
  (define (delta1? knil)
    (let ((prev knil))
      (lambda (a _)
	(begin0
	  (= (+ prev 1) a)
	  (set! prev a)))))
  
  (map (lambda (x)
	 (if (and (pair? x) (null? (cdr x)))
	   (car x)
	   (cons (car x) (last x))))
       (group-sequence l :test (delta1? (car l)))))

(追記)空リストのときエラーになる><。