Elmish.WPF: https://github.com/elmish/Elmish.WPF/tree/master/src/Samples/NewWindow.Core
Есть функция cata:
[<AutoOpen>]
module InOutModule =
[<RequireQualifiedAccess>]
type InOut<'a, 'b> =
| In of 'a
| Out of 'b
[<RequireQualifiedAccess>]
module InOut =
let cata f g = function
| InOut.In msg -> msg |> f
| InOut.Out msg -> msg |> g
При использовании этой функции передается первым аргументом вместо функции тип Window2Msg
type Window2Msg =
| SetInput of string
| SetChecked of bool
| Submit
| Cancel
| Close
let mapInOutMsg = InOut.cata Window2Msg mapOutMsg
Как это работает?
https://github.com/elmish/Elmish.WPF/blob/aed7cea7ec0730fdf9ce7612387225b3265f6265/src/Samples/NewWindow.Core/App.fs#L22
Обсуждают сегодня