Jun. 22nd, 2009
I wonder how much it makes sense...
Jun. 22nd, 2009 03:35 pmAnd whether I should describe the whole beauty of this "to the people"...
public abstract class Monoid<X>
{
abstract X unit();
abstract X m(X x, X y);
public X fold(Iterable<X> source) {
X result = unit();
for (X x : source) {
result = m(result, x);
}
return result;
}
public X fold(X[] source) {
X result = unit();
for (X x : source) {
result = m(result, x);
}
return result;
}
public final static Monoid<Integer> INT = new Monoid<Integer>() {
Integer unit() { return 0; }
Integer m(Integer x, Integer y) { return x + y; }
};
public final static Monoid<Double> DOUBLE = new Monoid<Double>() {
Double unit() { return 0.; }
Double m(Double x, Double y) { return x + y; }
};
public final static Monoid<String> STRING = new Monoid<String>() {
String unit() { return ""; }
String m(String x, String y) { return x + y; }
};
public static void main(String[] args) {
System.out.println(STRING.fold(new String[]{"this ", "is ", "a ", "string!"}));
System.out.println(INT.fold(new Integer[]{1, 2, 3, 4, 5}));
}
}
now I know what I'm celebrating tonight:
Jun. 22nd, 2009 09:41 pmkeyboard is out at Google!
(Ну и как обычно в таких случаях, надо будет поправить список т.наз. друзей в линктине, которые успешно вывели на орбиту мою клавку но не потрудились сообщить мне об этом интересном факте.)
(Ну и как обычно в таких случаях, надо будет поправить список т.наз. друзей в линктине, которые успешно вывели на орбиту мою клавку но не потрудились сообщить мне об этом интересном факте.)