Hw6#13
Conversation
| if Single.IsFinite(a) && Single.IsFinite(b) then | ||
| abs (a - b) < epsilon | ||
| elif Single.IsNaN(a) && Single.IsNaN(b) then | ||
| true |
There was a problem hiding this comment.
А нельзя ли вот жто всё в одно логическое выражение записать?
| elif Single.IsPositiveInfinity(a) && Single.IsPositiveInfinity(b) then | ||
| true | ||
| else | ||
| false |
There was a problem hiding this comment.
Точно через форматтер гоняли?
| member _.floatTest(tree: MyTree<float32>) = | ||
| let treeList = MyTree.treeToList (MyTree.map id tree) | ||
| let list = MyTree.treeToList tree | ||
| Assert.True(List.forall2 (fun a b -> areAlmostEqual a b 1e-10f) list treeList) |
| let sum acc value = value + acc | ||
| let actsum = MyTree.fold sum 0f tree | ||
| let expsum = List.fold (fun x acc -> sum acc x) 0f (MyTree.treeToList tree) | ||
| //Assert.True(areAlmostEqual actsum expsum 1e-10f) |
|
|
||
| [<Property>] | ||
| member _.floatFoldTest(tree: MyTree<float32>) = | ||
| let sum acc value = value + acc |
There was a problem hiding this comment.
Добавьте тесты, которые покажут, что с ассоциативностью и фолдами всё хорошо.
There was a problem hiding this comment.
Неплохо, но нужно провреить ещё и ассоциативность поэлементных операций.
There was a problem hiding this comment.
Если я правильно понял, то это проверка ассоциативности map-а?
There was a problem hiding this comment.
Нет. Речь именно про fold с операциями с различной ассоциативностью.
There was a problem hiding this comment.
Хорошо, сейчас поправлю
There was a problem hiding this comment.
Т.е., нужно проверить ассоциативность функции sum которую я написал?
|
И всё же, как проверить, что с операциями типа деления всё нормально? |
Сделал 6 домашку. Написал тип MyTree, где дерево может иметь произвольное количество сыновей с помощью библиотеки FsharpPlus. Также к этому типу были написаны map, fold, foldBack и height. Они были также протестированы с помощью свойств.