9
9
* concurrency: both low level ` forkIO ` as well as ` async ` style
10
10
* strict STM
11
11
* access to lazy ST
12
- * schedule discovery (see [ IOSimPOR] ( ./how-to-use-IOSimPOR.md )
12
+ * schedule discovery (see [ IOSimPOR] ( ./how-to-use-IOSimPOR.md ) )
13
13
* eventlog
14
14
* dynamic tracing
15
15
* tracing committed changes to ` TVar ` , ` TMVar ` s, ...
@@ -23,12 +23,12 @@ thus most of the `IO` instances are directly referring to `base`, `async` api.
23
23
However we made some differences, which are reported below.
24
24
25
25
` io-classes ` supports a novel hierarchy for error handling monads as well more
26
- familiar ` exception ` style. The new hierarchy provides ` bracket ` and
26
+ familiar ` exception ` style. The new hierarchy provides ` bracket ` and
27
27
` finally ` functions in the ` MonadThrow ` class, while ` catch ` style operators
28
28
are provided by a super-class ` MonadCatch ` . Both ` bracket ` and ` finally ` are
29
29
the most common interface used to write code with robust exception handling,
30
30
exposing them through the more basic ` MonadThrow ` class informs the reader
31
- / reviewer than no tricky error handling is done in that section of the code
31
+ / reviewer that no tricky error handling is done in that section of the code
32
32
base.
33
33
34
34
` IOSim ` exposes a detailed trace, which can be enhanced by labelling threads,
@@ -69,7 +69,7 @@ The first type of kind `Type -> Type` describe the monad which could be
69
69
instantiated to ` IO ` , ` IOSim ` or some other monad stack build with monad
70
70
transformers. The same applies to many other types, e.g. ` TVar ` , ` TMVar ` .
71
71
72
- The types although similar to the original
72
+ The types although similar to the original
73
73
are not the same as the ones that come from ` base ` , ` async ` , or
74
74
` excpetions ` packages:
75
75
0 commit comments