мой взгляд на ФП vs ООП такой: системы (любые, не только в софте) организованы по принципу ООП, а алгоритмы - через ФП. Иными словами, ООП нужно чтоб разделить сложность на части и надежно изолировать их, а ФП нужно чтоб причинно-следственные связи были органично представлены, а не как побочный эффект какой-то императивной стейт-машины (cf. map/fold VS loops/goto's)