mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-03 16:44:33 +00:00
Use backpassing and await in task example
This commit is contained in:
parent
23f4f1f2d0
commit
6dcea4f151
2 changed files with 9 additions and 6 deletions
|
@ -1,12 +1,15 @@
|
||||||
app "task-example"
|
app "task-example"
|
||||||
packages { base: "platform" }
|
packages { base: "platform" }
|
||||||
imports [ base.Task.{ Task, after }, base.File, base.Path ]
|
imports [ base.Task.{ Task }, base.File, base.Path ]
|
||||||
provides [ main ] to base
|
provides [ main ] to base
|
||||||
|
|
||||||
main : Task.Task {} (File.FileReadErr [BadUtf8])
|
main : Task.Task {} (File.FileReadErr [BadUtf8])
|
||||||
main =
|
main =
|
||||||
when Path.fromStr "Cargo.toml" is
|
when Path.fromStr "Cargo.toml" is
|
||||||
Ok path ->
|
Ok path ->
|
||||||
Task.after (Task.putLine "Our Cargo.toml:") \_ ->
|
{} <- Task.await (Task.putLine "Our Cargo.toml:")
|
||||||
Task.after (File.readUtf8 path) (\line -> Task.putLine line)
|
|
||||||
|
line <- Task.await (File.readUtf8 path)
|
||||||
|
|
||||||
|
Task.putLine line
|
||||||
_ -> Task.putLine "invalid path"
|
_ -> Task.putLine "invalid path"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
interface Task
|
interface Task
|
||||||
exposes [ Task, succeed, fail, after, map, putLine ]
|
exposes [ Task, succeed, fail, await, map, putLine ]
|
||||||
imports [ fx.Effect ]
|
imports [ fx.Effect ]
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,8 +16,8 @@ fail = \val ->
|
||||||
Effect.always (Err val)
|
Effect.always (Err val)
|
||||||
|
|
||||||
|
|
||||||
after : Task a err, (a -> Task b err) -> Task b err
|
await : Task a err, (a -> Task b err) -> Task b err
|
||||||
after = \effect, transform ->
|
await = \effect, transform ->
|
||||||
Effect.after effect \result ->
|
Effect.after effect \result ->
|
||||||
when result is
|
when result is
|
||||||
Ok a -> transform a
|
Ok a -> transform a
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue