What do you assume when you see fromListN in a library?
Oleg Grenrus
oleg.grenrus at iki.fi
Fri Feb 28 18:48:41 UTC 2020
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 at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
More information about the Libraries
mailing list