1

私はスキームに不慣れで、Cのコードが次のようになるネストされたループを作成しようとしています:-

for(i = -1, a = 0; i > -5, a < 5; i--, a++)
{ 
   for(j = i, b = 0; j < (abs(i)), b < 5; j++, b++)
   { 
      <do something>
   }
}

私はこのコンセプトでスキームで同様のことを試みました:-

(let oloop( (i -1) (a 0))
            (display i)(display a) (newline) 
            (if (and (> i -5) (< a 5)) (oloop((- i 1) (+ a 1))))))

4 つのループすべてをネストできず、上記のコードが機能しません。

提案してください。

4

3 に答える 3

0

Racket を使用している場合、反復と内包表記を使用して、C スタイルのループを実装する非常に簡単な方法があります。コードはほとんど同じに見えます:

(for [(i (in-range -1 -5 -1))
      (a (in-range 0 5))]
  ; body of the outer loop
  ; do something with i a
  (for [(j (in-range i (abs i)))
        (b (in-range 0 5))]
    ; body of the inner loop
    ; do something with i a j b
    (display (list i a j b))))
于 2013-04-22T14:52:16.130 に答える