1

この質問を説明していただければ、本当にありがたいです。かなり長い間考えていましたが、解決できませんでした。私は自己学習者で、これは MIT の icampusutor サイトからの演習です。

次の各手続きのタイプを示してください。シンボル「->」を使用して、「マップ先」を示します。たとえば、手続きの四角形のタイプは「number->number」です。次の用語を使用して、プリミティブ型のデータを説明します: 数値、ブール値、文字列。

1- (define (テスト バー n) (if (バー n) n (テスト バー (+ n 2))))

2- (define (test foo bar n) (if (bar n) #t (test foo bar (+ n (foo n))))))

3- (定義 (テスト foo バー n) (if (バー n) (+ 1 (foo n)) (テスト foo バー (+ n 3))))

4- (ラムダ (ab) (+ a (b 1 0の場合)))

5- (ラムダ (x) (ラムダ (y) (+ xy)))

6- (ラムダ (xy comp) (if (comp xy) (+ x 1) (+ y 1)))

助けてくれてありがとう。

4

1 に答える 1

1

最初の 3 つの式は、ラムダをシンボル「test」にバインドします。問題は、関数の使用方法とその関数の結果の使用方法から foo と bar の型を推測することです。これは私がそのコードを読んで得たものです:

  1. (n->bn) -> n

    つまり、test は 2 つのパラメーターを受け取ります。1 つ目は数値を受け取りブール値を返すラムダで、2 つ目は数値で、関数の結果は数値です。

  2. (n->n n->bn) -> b

  3. (n->n n->bn) -> n

4,5,6 についても同様ですが、もちろん、式の結果はラムダ自体であり、何にもバインドされていません。

  1. (nb) -> n

  2. n -> (n->n)

    つまり、このラムダの結果は、数値を受け取って数値を返す別のラムダです。

  3. (nn (nn)->b) -> n

    2 つの数値と、2 つの数値を取り、ブール値を返すラムダを取る

于 2012-10-15T21:53:49.453 に答える