Skip to content

Commit 21392e6

Browse files
committed
io-sim: generalise selector types
Generalised `selectTraceEvents'` and friends. It can work with any return type, not just `SimResult`.
1 parent 785dc08 commit 21392e6

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

io-sim/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@
1414
the value to other waiting threads.
1515
- Faster handling of timeouts and timers by using a more efficient
1616
internal representation.
17+
- The signature of:
18+
- `selectTraceEvents'`,
19+
- `selectTraceEventsDynamic'`,
20+
- `selectTraceEventsDynamicWithTime'`,
21+
- `selectTraceEventsSay'` and
22+
- `selectTraceEventsSayWithTime'`
23+
is more general. These functions now accepts trace with any result, rather
24+
than one that finishes with `SimResult`.
1725

1826
## 1.6.0.0
1927

io-sim/src/Control/Monad/IOSim.hs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,12 @@ selectTraceEvents fn =
144144
. traceSelectTraceEvents fn
145145

146146
-- | Like 'selectTraceEvents', but it returns even if the simulation trace ends
147-
-- with 'Failure'.
147+
-- with 'Failure'. It also works with any return type, not only `SimResult`
148+
-- like `selectTraceEvents` does.
148149
--
149150
selectTraceEvents'
150151
:: (Time -> SimEventType -> Maybe b)
151-
-> SimTrace a
152+
-> Trace a SimEvent
152153
-> [b]
153154
selectTraceEvents' fn =
154155
bifoldr ( \ _ _ -> [] )
@@ -228,7 +229,7 @@ selectTraceEventsDynamicWithTime = selectTraceEvents fn
228229
-- | Like 'selectTraceEventsDynamic' but it returns even if the simulation trace
229230
-- ends with 'Failure'.
230231
--
231-
selectTraceEventsDynamic' :: forall a b. Typeable b => SimTrace a -> [b]
232+
selectTraceEventsDynamic' :: forall a b. Typeable b => Trace a SimEvent -> [b]
232233
selectTraceEventsDynamic' = selectTraceEvents' fn
233234
where
234235
fn :: Time -> SimEventType -> Maybe b
@@ -238,7 +239,7 @@ selectTraceEventsDynamic' = selectTraceEvents' fn
238239
-- | Like `selectTraceEventsDynamic'` but it also captures time of the trace
239240
-- event.
240241
--
241-
selectTraceEventsDynamicWithTime' :: forall a b. Typeable b => SimTrace a -> [(Time, b)]
242+
selectTraceEventsDynamicWithTime' :: forall a b. Typeable b => Trace a SimEvent -> [(Time, b)]
242243
selectTraceEventsDynamicWithTime' = selectTraceEvents' fn
243244
where
244245
fn :: Time -> SimEventType -> Maybe (Time, b)
@@ -268,7 +269,7 @@ selectTraceEventsSayWithTime = selectTraceEvents fn
268269
-- | Like 'selectTraceEventsSay' but it returns even if the simulation trace
269270
-- ends with 'Failure'.
270271
--
271-
selectTraceEventsSay' :: SimTrace a -> [String]
272+
selectTraceEventsSay' :: Trace a SimEvent -> [String]
272273
selectTraceEventsSay' = selectTraceEvents' fn
273274
where
274275
fn :: Time -> SimEventType -> Maybe String
@@ -277,7 +278,7 @@ selectTraceEventsSay' = selectTraceEvents' fn
277278

278279
-- | Like `selectTraceEventsSay'` but it also captures time of the trace event.
279280
--
280-
selectTraceEventsSayWithTime' :: SimTrace a -> [(Time, String)]
281+
selectTraceEventsSayWithTime' :: Trace a SimEvent -> [(Time, String)]
281282
selectTraceEventsSayWithTime' = selectTraceEvents' fn
282283
where
283284
fn :: Time -> SimEventType -> Maybe (Time, String)

0 commit comments

Comments
 (0)