filter() : type bound fix
filter() signature fix + don't create a new instance of Success when predicate matches