@@ -36,7 +36,7 @@ others experimental.
36
36
* [ rank1dynamic] [ rank1dynamic ] : Like ` Data.Dynamic ` and ` Data.Typeable ` but supporting polymorphic values
37
37
* [ network-transport] [ network-transport ] : Generic ` Network.Transport ` API
38
38
* [ network-transport-tcp] [ network-transport-tcp ] : TCP realisation of ` Network.Transport `
39
- * [ network-transport-inmemory] [ network-transport-inmemory ] : In-memory realisation of ` Network.Transport ` (incomplete)
39
+ * [ network-transport-inmemory] [ network-transport-inmemory ] : In-memory realisation of ` Network.Transport ` (incomplete)
40
40
* [ network-transport-composed] [ network-transport-composed ] : Compose two transports (very preliminary)
41
41
* [ distributed-process-simplelocalnet] [ distributed-process-simplelocalnet ] : Simple backend for local networks
42
42
* [ distributed-process-azure] [ distributed-process-azure ] : Azure backend for Cloud Haskell (proof of concept)
@@ -50,7 +50,7 @@ backend transports.
50
50
51
51
Abstracting over the transport layer allows different protocols for
52
52
message passing, including TCP/IP, UDP,
53
- [ MPI] ( http://en.wikipedia.org/wiki/Message_Passing_Interface ) ,
53
+ [ MPI] ( http://en.wikipedia.org/wiki/Message_Passing_Interface ) ,
54
54
[ CCI] ( http://www.olcf.ornl.gov/center-projects/common-communication-interface/ ) ,
55
55
ZeroMQ, SSH, MVars, Unix pipes, and more. Each of these transports would provide
56
56
its own implementation of the ` Network.Transport ` and provide a means of creating
@@ -109,7 +109,7 @@ The Cloud Haskell interface and backend, make use of the Transport
109
109
interface provided by the ` Network.Transport ` module.
110
110
This also serves as an interface for the ` Network.Transport.* `
111
111
module, which provides a specific implementation for this transport,
112
- and may, for example, be based on some external library written in
112
+ and may, for example, be based on some external library written in
113
113
Haskell or C.
114
114
115
115
### Network Transport Abstraction Layer
@@ -166,7 +166,7 @@ For more details about `Network.Transport` please see the [wiki page](/wiki/netw
166
166
167
167
The * Process Layer* is where Cloud Haskell's support for concurrency and
168
168
distributed programming are exposed to application developers. This layer
169
- deals explicitly with
169
+ deals explicitly with
170
170
171
171
The core of Cloud Haskell's concurrency and distribution support resides in the
172
172
[ distributed-process] [ distributed-process ] library. As well as the APIs necessary for starting
@@ -254,10 +254,10 @@ We create channels with a call to `newChan`, and send/receive on them using the
254
254
channelsDemo :: Process ()
255
255
channelsDemo = do
256
256
(sp, rp) <- newChan :: Process (SendPort String, ReceivePort String)
257
-
257
+
258
258
-- send on a channel
259
259
spawnLocal $ sendChan sp "hello!"
260
-
260
+
261
261
-- receive on a channel
262
262
m <- receiveChan rp
263
263
say $ show m
@@ -356,13 +356,13 @@ demoAsync = do
356
356
357
357
-- we can cancel the task if we want to
358
358
-- cancel hAsync
359
-
359
+
360
360
-- or cancel it and wait until it has exited
361
361
-- cancelWait hAsync
362
-
362
+
363
363
-- we can wait on the task and timeout if it's still busy
364
364
Nothing <- waitTimeout (within 3 Seconds) hAsync
365
-
365
+
366
366
-- or finally, we can block until the task is finished!
367
367
asyncResult <- wait hAsync
368
368
case asyncResult of
@@ -400,11 +400,11 @@ and another for tasks you wish to execute on remote nodes.
400
400
{% highlight haskell %}
401
401
-- | A task to be performed asynchronously.
402
402
data AsyncTask a =
403
- AsyncTask
403
+ AsyncTask
404
404
{
405
405
asyncTask :: Process a -- ^ the task to be performed
406
406
}
407
- | AsyncRemoteTask
407
+ | AsyncRemoteTask
408
408
{
409
409
asyncTaskDict :: Static (SerializableDict a)
410
410
-- ^ the serializable dict required to spawn a remote process
0 commit comments