add collection
add reduceRight
add applicative2
add applicative3