My personal expectations may be different based on what the container in question is. Elsewhere in the discussion types in `primitive` and `vector` were mentioned. They are however different. Compare to C++ code snippets, which are all morally `fromList(N)`: std::array<int, 100> variantA; for (int i = 0; i < 100; i++) { primitive[i] = f(i); } // not good std::vector<int> variantB; for (int i = 0; i < 100; i++) { primitive.push_back(f(i)); } std::vector<int> variantC; variantC.reserve(100); for (int i = 0; i < 100; i++) { primitive.push_back(f(i)); } I'm not a fan of changing `fromListN` to be partial function, but if that change is carried on in `vector` there should be a variant which allows to `reserve` without worrying about partiality. - Oleg On 28.2.2020 4.53, Carter Schonwald wrote:
Hey everyone: When you see fromListN as a function in a library, do you assume / presume it’s expecting an exactly N element list ? Or do you expect/tolerate other behavior ?
Should it reject shorter lists?
Should it truncate or reject longer lists?
A corner case of this came up in some bug discussion I was having regarding vector, and I shall claim and or presume that most folks assume exact size with prompt rejection of too long or too short.
Thoughts please ?
-Carter
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries