1

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 = ???
Synesso
  • 37,610
  • 35
  • 136
  • 207

1 Answers1

2

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;
    }
});
Synesso
  • 37,610
  • 35
  • 136
  • 207