added List#reduce