4

私は他の言語のwhileループに精通していますが、ここでは項の和の導関数を計算する小さな関数を書きましたが、それは最初の2つだけを行います。 2?

式、E、はリストとして表されるため、次のように表され2x + 2y + x^3ます(+ (* 2 x) (* 2 y) (expt x 3))

指数関数を計算する関数を既に作成していますが、これは合計の一部であり、最初の 2 の後に停止することに注意してください。

(define (make-sum v1 v2)
  (list '+ v1 v2))

(define (diff-sum x E)
  (make-sum (diff x (first-operator E)) (diff x (last-operator E))))
4

1 に答える 1

17

プロフェッショナル レベルの 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)
于 2012-10-19T03:42:52.200 に答える