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!
(Ну и как обычно в таких случаях, надо будет поправить список т.наз. друзей в линктине, которые успешно вывели на орбиту мою клавку но не потрудились сообщить мне об этом интересном факте.)
(Ну и как обычно в таких случаях, надо будет поправить список т.наз. друзей в линктине, которые успешно вывели на орбиту мою клавку но не потрудились сообщить мне об этом интересном факте.)