Что у меня есть:
type Item =
{
Name : string
}
type Model =
{
Items : Item list
}
let init = {
Items = []
}
type Msg =
|AddItem
|DoNothing
let update msg model = //Msg -> Model -> Model
match msg with
|AddItem -> {model with Items = List.append [{Name = "NewItem"}] model.Items}
|DoNothing -> model
let rec apply f model list = //(a' -> 'b -> 'b) -> 'b -> 'a list -> 'b
match list with
|[] -> model
|head::tail -> let model' = f head model
apply f model' tail
let msgs = [AddItem; DoNothing; AddItem]
let model' = apply update init msgs
дает результат:
val model' : Model = { Items = [{ Name = "NewItem" }; { Name = "NewItem" }] }
Я проверил fold , map и некоторые другие , но похоже, что ни одна из этих функций не работает так же, как моя apply .
Есть ли встроенная функция в List или где-то еще, которая является так же, как мой применить ? Потому что, если есть, я бы лучше использовал это.