mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-04 12:18:19 +00:00
Add Task as a built-in module/type
This commit is contained in:
parent
d47a073634
commit
700c7ae9aa
86 changed files with 925 additions and 2670 deletions
|
@ -4,10 +4,10 @@ Effect : [
|
|||
DoIt {} ({} -> Effect),
|
||||
]
|
||||
|
||||
Task := ({} -> Effect) -> Effect
|
||||
MockTask := ({} -> Effect) -> Effect
|
||||
|
||||
doIt : {} -> Task
|
||||
doIt : {} -> MockTask
|
||||
doIt = \{} ->
|
||||
#^^^^{-1} {} -[[doIt(0)]]-> Task
|
||||
@Task \toNext ->
|
||||
#^^^^{-1} {} -[[doIt(0)]]-> MockTask
|
||||
@MockTask \toNext ->
|
||||
DoIt {} \{} -> (toNext {})
|
||||
|
|
|
@ -2,8 +2,8 @@ app "test" provides [always] to "./platform"
|
|||
|
||||
Effect a := {} -> a
|
||||
|
||||
Task a err : Effect (Result a err)
|
||||
MockTask a err : Effect (Result a err)
|
||||
|
||||
always : a -> Task a *
|
||||
always : a -> MockTask a *
|
||||
always = \x -> @Effect (\{} -> Ok x)
|
||||
#^^^^^^{-1} a -[[always(0)]]-> Task a *
|
||||
#^^^^^^{-1} a -[[always(0)]]-> MockTask a *
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
app "test" provides [tforever] to "./platform"
|
||||
|
||||
Effect a := {} -> a
|
||||
Task ok err := {} -> ok err
|
||||
|
||||
eforever : Effect a -> Effect b
|
||||
|
||||
Task a err : Effect (Result a err)
|
||||
|
||||
tforever : Task val err -> Task * *
|
||||
tforever = \task -> eforever task
|
||||
tforever : Task val * -> Task * *
|
||||
tforever = \task -> Task.forever task
|
||||
#^^^^^^^^{-1} Task val err -[[tforever(0)]]-> Task * *
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue