Плавное преобразование C ++ в F #

Привет, ребята, у меня есть следующий фрагмент кода на C ++.

for (int i=0; i < nObstacles; i++)
{
  int x,y;
  bool bAlreadyExists;
  do {          
    x = rand() % nGridWidth;
    y = rand() % nGridHeight;                   
  } while (HasObstacle(x, y));
  SetObstacle(x, y, true);      
}

Я могу без проблем перевести его на F #.

let R = new System.Random()
for i=0 to nObstacles do
        let mutable bGoodToGo = false;
        let mutable x =0;
        let mutable y = 0
        while not bGoodToGo do
            x <-R.Next(nWidth)
            y <-R.Next(nHeight)
            bGoodToGo <- IsEmptyAt x y
        board.[x,y]<-Obstacle;

Конечно, это, вероятно, заставит многих из вас съежиться, так как F # должен использоваться не так. В этом коде есть некоторые «некошерные» концепции для F #, такие как циклы do-while и изменяемые данные.

Но что мне было бы интересно увидеть, так это «правильный» перевод F # с неизменяемыми данными и своего рода эквивалент do-while.

7
задан user627943 22 March 2011 в 23:31
поделиться