/// Simplicity
module FP =
let add_v1 = fun a b -> a + b
let add_v2 = (+)
let add_v3 a b = a + b
FP.add_v1 1 1 |> printfn "%d"
/// Complexity
module OOP =
type Add(a) =
class
member it.Value = a
member it.Plus(b) = Add((b :> Add).Value + a)
end
OOP.Add(1).Plus(OOP.Add(1)).Value |> printfn "%d"
Выше ООП и ФП подход к решению одной задачи.
В чем принципиальное отличие?
На мой взгляд ФП ориентировано на обработку данных,
в то время как ООП старается абстрагировать проблему в некоторую модель,
что делать код намного сложнее в понимании.
Появляется неявный контекст, "за лесом не видно деревьев".