AP
Size: a a a
AP
AY
MP
AP
Cmd a
Cmd b
Cmd c
Cmd d
type State = {
fieldA : a
fieldB : b,
fieldC : c,
fieldD : d,
}
AP
AP
AP
Result String State
AP
Cmd State
AP
Cmd State
из Cmd a .. Cmd d
AP
n
* три стейта для каждого CmdAP
AP
AP
AP
AY
AP
Cmd.map : (a -> b) -> Cmd a -> Cmd b
AP
AP
AP
State <$> async1 <*> async2 <*> async3 <*> async4
:: Async State
без обработки промежуточных состояний и прочего. Для коротких функций есть liftA2
, liftA3
, а комбинаторы годятся для функций подлиннее (по кол-ву аргументов).AP