休憩を使わずにこの仕事をする方法はありますか?(私はcdr lstをどこにでも置いてみましたが、それは私にエラーをもたらします)プラスif if if if(> N 0)私は、ディスプレイがしたいすべてがリスト出力されますので、 - (リストNE)すべて手続きは単にグローバルスコープ内の変数にバインドされていることをスキームでの残りの部分の交換?
(define (count lst)
(if (null? lst) '()
(let ((display (lambda (N E)
(if (> N 0) (list N E) (list N E)))))
(let loop ((rest (cdr lst))
(E (car lst))
(N 1))
(cond ((null? rest)
(list (display N E)))
((eq? E (car rest))
(loop (cdr rest) E (+ N 1)))
(else
(cons (display N E) (loop (cdr rest) (car rest) 1))))))))
注: 'display'は組み込み関数(値を出力)であるため、別の目的でその名前を使用するのは奇妙に思えます。 – soegaard