从现有订单创建订单

Create Ord from existing Ord

如果我有 F<A, B>,如何将现有的 Ord<A> 转换为 Ord<B>

例如:

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 = ???

答案已在 API 中。 comap:

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