Здравствуйте, лишь недавно начал изучать F# (заодно пришлось и подтягивать знания на английском). Но у меня уже появилась задача, переделать программу написанную в C# на F#. Вот собственно часть кода, которую я собираюсь отлаживать
| Код | open System
// Структура узла type Node = struct val Level : int val Number : int val IsLeaf : bool val Parent: int val Children : int array val LeftKey : int val RightKey : int new(Level, Number, IsLeaf, Parent, Children, LeftKey, RightKey) = // пока не очень разобрался в конструкторах здесь, не очень удобно определять все поля { Level = Level; Number = Number; IsLeaf = IsLeaf; Parent = Parent; Children = Children; LeftKey = LeftKey; RightKey = RightKey } end
// построение случайного дерева let Tree elemCount = let rand = new Random() let levelsCount = rand.Next(2, elemCount) // количество уровней let nodes = Array.create levelsCount 0 // каждый эл-т массива показывает число узлов на уровне let tree = new Node(1, 1, false, 0, null, 0, 0) :: [] // таким образом сформировали корень elemCount - 1 // кол-во оставшийся элементов уменьшили на 1 nodes.[0] <- 1 // корень - он и есть единственный узел
for i in 1 .. levelsCount - 1 do if i = levelsCount - 1 then nodes.[i] <- elemCount // если это последний уровень, то все оставшиеся элементы списка заносим в уровень else nodes.[i] <- rand.Next(1, elemCount - levelsCount + i) // иначе кол-во узлов случайное elemCount - nodes.[i] // уменьшаем кол-во оставшихся элементов
let a = 1
for i in 1 .. levelsCount do // для каждого уровня дерева for j in 0 .. nodes.[i] - 1 do // для каждого узла let node = new Node() // создаем узел node.Level = i + 1 // помечаем его уровень node :: tree // добавляем его в список node.Number = tree.Length // помечаем его порядковый номер if i = 1 then node.Parent = a else node.Parent = rand.Next(a, a + nodes.[i - 1]) // определяем случайным образом его родителей a + nodes.[i - 1] tree
let main() = 10 |> Tree
main()
|
При работе с отладчиком метод (функция?) Tree даже не вызывается. Ну и еще выдает около 15 Warnings. Буду рад любой помощи |