aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/documentation/lux/control/concurrency/async.lux
blob: 4899894eff5e038313b9ebb6a994b080500d3d18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
(.require
 [library
  [lux (.except or and)
   ["$" documentation]
   [data
    [text (.only \n)
     ["%" \\format (.only format)]]]]]
 [\\library
  ["[0]" /]])

(.def .public documentation
  (.List $.Module)
  ($.module /._
            ""
            [($.default /.functor)
             ($.default /.apply)
             ($.default /.monad)

             ($.definition (/.Async it)
               "Represents values produced by asynchronous computations (unlike IO, which is synchronous).")

             ($.definition (/.Resolver it)
               (format "The function used to give a value to an async."
                       \n "Will signal 'true' if the async has been resolved for the 1st time, 'false' otherwise."))

             ($.definition /.resolved
               "Produces an async that has already been resolved to the given value."
               [(resolved value)])

             ($.definition /.async
               "Creates a fresh async that has not been resolved yet."
               [(async _)])

             ($.definition /.value
               "Polls an async for its value.")

             ($.definition /.upon!
               "Executes the given function as soon as the async has been resolved."
               [(upon! function async)])

             ($.definition /.resolved?
               "Checks whether an async's value has already been resolved.")

             ($.definition /.and
               "Combines the results of both asyncs, in-order."
               [(and left right)])

             ($.definition /.or
               (format "Yields the results of whichever async gets resolved first."
                       \n "You can tell which one was resolved first through pattern-matching.")
               [(or left right)])

             ($.definition /.either
               (format "Yields the results of whichever async gets resolved first."
                       \n "You cannot tell which one was resolved first.")
               [(either left right)])

             ($.definition /.schedule!
               (format "Runs an I/O computation on its own thread (after a specified delay)."
                       \n "Returns an async that will eventually host its result.")
               [(schedule! milli_seconds computation)])

             ($.definition /.future
               (format "Runs an I/O computation on its own thread."
                       \n "Returns an async that will eventually host its result.")
               [(future computation)])

             ($.definition /.after
               "Delivers a value after a certain period has passed."
               [(after milli_seconds value)])

             ($.definition /.delay
               "An async that will be resolved after the specified amount of milli-seconds."
               [(delay milli_seconds)])

             ($.definition /.within
               "Wait for an async to be resolved within the specified amount of milli-seconds."
               [(within milli_seconds async)])]
            []))