Add Task as a built-in module/type

This commit is contained in:
Sam Mohr 2024-06-25 00:03:56 -07:00
parent d47a073634
commit 700c7ae9aa
No known key found for this signature in database
GPG key ID: EA41D161A3C1BC99
86 changed files with 925 additions and 2670 deletions

View file

@ -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 {})

View file

@ -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 *

View file

@ -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 * *