nri-prelude-0.6.0.6: A Prelude inspired by the Elm programming language
Safe HaskellNone
LanguageHaskell2010

Process

Description

 
Synopsis

Documentation

data Id Source #

A light-weight process that runs concurrently. You can use spawn to get a bunch of different tasks running in different processes. The Elm Haskell will interleave their progress. So if a task is taking too long, we will pause it at an andThen and switch over to other stuff.

Note: We make a distinction between concurrency which means interleaving different sequences and parallelism which means running different sequences at the exact same time. For example, a time-sharing system is definitely concurrent, but not necessarily parallel.

spawn :: Task x a -> Task y Id Source #

Run a task in its own light-weight process. In the following example, task1 and task2 will be interleaved. If task1 makes a long HTTP request or is just taking a long time, we can hop over to task2 and do some work there.

spawn task1
    |> Task.andThen (\_ -> spawn task2)

Note: This creates a relatively restricted kind of Process because it cannot receive any messages. More flexibility for user-defined processes will come in a later release!

sleep :: Float -> Task x () Source #

Block progress on the current process for the given number of milliseconds. The JavaScript equivalent of this is setTimeout which lets you delay work until later.

kill :: Id -> Task x () Source #

Sometimes you spawn a process, but later decide it would be a waste to have it keep running and doing stuff. The kill function will force a process to bail on whatever task it is running. So if there is an HTTP request in flight, it will also abort the request.