Devoxx - filter, partition and offset

Jed Wesley-Smith jed at wesleysmith.io
Wed Apr 3 14:50:28 PDT 2013


On 3 April 2013 22:36, Stephen Colebourne <scolebourne at joda.org> wrote:
> It didn't come up in the Devoxx lab, but I found the filter() method
> confusing when reading code in the talks. It was not obvious to me
> whether it was filtering in or out.
>
> I was then surprised that there was only one method in the API for
> filtering, rather than two - one to remove and one to retain. While
> clearly they are a logical not, in code readbility terms its typically
> a lot clearer.
>
> Perhaps keep() and reject()? I'm sure there are other names, but
> filter alone feels very unclear. (I can't remember which it is now).

Haskell:
http://www.haskell.org/ghc/docs/latest/html/libraries/base/Data-List.html#v:filter

Scala:
http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.List

Standard ML:
http://www.standardml.org/Basis/list.html#SIG:LIST.filter:VAL

Erlang:
http://www.erlang.org/doc/man/lists.html#filter-2

Guava:
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Iterables.html#filter(java.lang.Iterable,
com.google.common.base.Predicate)

Wikipedia:
http://en.wikipedia.org/wiki/Filter_(higher-order_function)

all define the same behaviour and name of this method.

It is sufficiently commonplace that to define it differently would be
arbitrary and random.

cheers,
jed.


More information about the lambda-dev mailing list