Very good point, thank you for bring it up!
Yes, having batch function might actually be more generally helpful for this. As you pointed out,
- It IS actually a building block for
nonefunction - Even without
none, it allows us to do the equivalent bybatch [] - It essentially enables us to
flattenLists!!
I found the 3rd point very interesting, related to code modularity.
As we are already using Cmd.batch to do things like this:
fooCmd : Cmd Msg
fooCmd =
Cmd.batch [ fooDoThis, fooDoThat ]
barCmd : Cmd Msg
barCmd =
Cmd.batch [ barDo ]
rootCmd : Cmd Msg
rootCmd =
Cmd.batch
[ rootDoThis
, rootDoThat
, fooCmd
, barCmd
]
(Of course we throw in Cmd.map when some of them are within their own Msg scope)
If inlined, it looks like:
rootCmd =
Cmd.batch
[ rootDoThis
, rootDoThat
, Cmd.batch
[ fooDoThis
, fooDoThat
]
, Cmd.batch
[ barDo
]
]
This flatten-ing is, although verbose and manual, quite powerful I think since it cannot be done with ordinary List.flatten.