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
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++) {

    std::vector<int> variantC;
    for (int i = 0; i < 100; 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