when
をリストに使用すると、#<void>
が非常に頻繁に出てきます。以下は、mapとfor/listの使用例です。私が代わりにif
条件を使用する場合リスト出力時のボイドを防ぐ方法
;; using map
(define lst '(0 0 0 1 1 1 2 2 2 3 3))
(map (lambda (x)
(when (equal? 2 x)
x
))
lst)
;; expected => '(2 2 2)
;; output => '(#<void> #<void> #<void> #<void> #<void> #<void>
;; 2 2 2 #<void> #<void>)
;; using for/list
(define my-list '(0 0 0 1 2 1 2 2 2))
(for/list ([a (drop-right my-list 1)]
[b (cdr lst)]
[i (in-naturals)])
(when (> a b)
(list a b i)))
;; expected => '(2 1 4)
;; output => '(#<void> #<void> #<void> #<void> (2 1 4) #<void> #<void> #<void>)
は、私が#false
状態のために置くために何かを持っていません。それらを防ぐには#<void>
?オブジェクトのリストに、彼らは同じ操作を適用し、コンスアプリケーションのすべての結果によって得られたリストを返す: