Search code examples
functional-java

Create Ord from existing Ord


If I have a F<A, B>, how can I convert an existing Ord<A> into an Ord<B>?

For example:

public class Foo {
    public String name;
}

F<Foo, String> f = new F<Foo, String>() {
    public String f(Foo foo) {
        return foo.name;
    }
};

Ord<String> stringOrd = Ord.stringOrd;

Ord<Foo> fooOrd = ???

Solution

  • The answer was in the API for the taking. comap:

    Ord<Foo> fooOrd = Ord.stringOrd.comap(new F<Foo, String>() {
        public String f(Foo foo) {
            return foo.name;
        }
    });