プロフェッショナル レベルの Racket では、for ループは、シーケンスに対して何かを行うための標準的なアプローチです。たとえば、次の例では単純な乗算表が生成されます。
(define numbers (list 1 2 3 4 5 6))
(for/list ([item numbers])
(list item (* item 2) (* item 3)))
これは、各数値を調べて処理し、結果の新しいリストを生成するループです。かなり標準的です。ほとんどすべてのプログラミング言語には、コレクション全体の反復の概念があります。
コンピューター サイエンスの入門クラスで書かなければならない種類の Racketでは、インストラクターによっては、代わりに明示的な再帰またはmapのような高次関数に頼らなければならない場合があります。繰り返しを表現するこれらの他の方法には、上記のループと同じ力があります。
たとえば、上記の小さな乗算表を作成するための同じ計算は、明示的な再帰を使用して次のように表現されます。
(define (my-loop numbers)
(cond [(empty? numbers) '()]
[else
(define item (first numbers))
(cons (list item (* item 2) (* item 3))
(my-loop (rest numbers)))]))
(my-loop numbers)
を使用して暗黙的にmap
:
(define (f item)
(list item (* item 2) (* item 3)))
(map f numbers)