some lambda in plain java
Mar. 6th, 2008 06:04 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
See what people, I mean,
dtm, can do with our Java::
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
// Look, it's an anonymous recursive function!
public void testY() {
assertEquals(720,
new Function<Function<Fii, Fii>, Fii>() {
public Fii apply(final Function<Fii, Fii> f) {
return new Branch() {
public Fii apply(final Branch x) {
return f.apply(new Fii() {
public Integer apply(Integer y) {
return x.apply(x).apply(y);
}
});
}
}.apply(new Branch() {
public Fii apply(final Branch x) {
return f.apply(new Fii() {
public Integer apply(Integer y) {
return x.apply(x).apply(y);
}
});
}
});
}
}.apply(new Function<Fii, Fii>() {
public Fii apply(final Fii f) {
return new Fii() {
public Integer apply(Integer i) {
return (i <= 0) ? 1 : i * f.apply(i - 1);
}
};
}
}).apply(6).intValue());
}
}
no subject
Date: 2008-03-07 05:26 pm (UTC)Than we use
Also C-strXXX like style for setting arbitrary number of attributes:
no subject
Date: 2008-03-07 05:41 pm (UTC)Я вот думаю такой стиль для манипуляции с коллекциями использовать. Типа, select( new Predicate() {...}).orderedBy(new Predicate() {...}).groupedBy(...). А то
no subject
Date: 2008-03-07 05:58 pm (UTC)не будет оптимизации запроса.
В идеале - так строить запрос - а потом его прозрачно выполнять.
Вроде
select( new Predicate() {...}).orderedBy(new Predicate() {...}).groupedBy(...).go();
Есть пакет работы с матрицами с похожим подходом.
no subject
Date: 2008-03-07 06:14 pm (UTC)Да и никакой оптимизации запросов я, если честно, не планировал. Просто хочется заменить все эти дурацкие циклы, имплементирующие подобную бизнес-логику (e.g. retrieve all purchased items along with their expiration date and group them by bundle id) на коллекциях, возвращаемых всякими веб-сервисами и прочими API, на что-то б.-м. читабельное. Ну и чтоб лепить эту логику быстрее.
Но, может, Вы и правы.
no subject
Date: 2008-03-07 06:00 pm (UTC)no subject
Date: 2008-03-07 06:15 pm (UTC)