mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-03 08:34: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"
|
||||
packages { base: "platform" }
|
||||
imports [ base.Task.{ Task, after }, base.File, base.Path ]
|
||||
imports [ base.Task.{ Task }, base.File, base.Path ]
|
||||
provides [ main ] to base
|
||||
|
||||
main : Task.Task {} (File.FileReadErr [BadUtf8])
|
||||
main =
|
||||
when Path.fromStr "Cargo.toml" is
|
||||
Ok path ->
|
||||
Task.after (Task.putLine "Our Cargo.toml:") \_ ->
|
||||
Task.after (File.readUtf8 path) (\line -> Task.putLine line)
|
||||
{} <- Task.await (Task.putLine "Our Cargo.toml:")
|
||||
|
||||
line <- Task.await (File.readUtf8 path)
|
||||
|
||||
Task.putLine line
|
||||
_ -> Task.putLine "invalid path"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
interface Task
|
||||
exposes [ Task, succeed, fail, after, map, putLine ]
|
||||
exposes [ Task, succeed, fail, await, map, putLine ]
|
||||
imports [ fx.Effect ]
|
||||
|
||||
|
||||
|
@ -16,8 +16,8 @@ fail = \val ->
|
|||
Effect.always (Err val)
|
||||
|
||||
|
||||
after : Task a err, (a -> Task b err) -> Task b err
|
||||
after = \effect, transform ->
|
||||
await : Task a err, (a -> Task b err) -> Task b err
|
||||
await = \effect, transform ->
|
||||
Effect.after effect \result ->
|
||||
when result is
|
||||
Ok a -> transform a
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue