Where can I find what functions can be generated with generates Effect with
? I’m curious if there’s something like traverse : List a, (a -> Effect b c) -> Effect (List b) c
it's in crates/compiler/can/src/effect_module.rs
, currently we can generate
pub(crate) struct HostedGeneratedFunctions {
pub(crate) after: bool,
pub(crate) map: bool,
pub(crate) always: bool,
pub(crate) loop_: bool,
pub(crate) forever: bool,
}
so, no traverse, but traverse can be expressed in terms of after
or even in terms of Task
:
map2 : Task a err, Task b err, (a, b -> c) -> Task c err
map2 = \task1, task2, mapper ->
task1 |> Task.await \value1 ->
task2 |> Task.map \value2 ->
mapper value1 value2
traverse : List a, (a -> Task b err) -> Task (List b) err
traverse = \list, f ->
walker : Task (List b) err, a -> Task (List b) err
walker = \state, element -> map2 state (f element) List.append
initialState = Task.succeed (List.withCapacity (List.len list))
List.walk list initialState walker
combine : List (Task a err) -> Task (List a) err
combine = \list -> traverse list (\x -> x)
Last updated: Jul 06 2025 at 12:14 UTC