Package maintainers and Hackage trustees are allowed to edit certain bits
of package metadata after a release, without uploading a new tarball.
Note that the tarball itself is never changed, just the metadata that is
stored separately. For more information about metadata revisions, please
refer to the
Hackage Metadata Revisions FAQ.
| No. |
Time |
User |
SHA256 |
| -r1 |
2026-09-09T10:50:58Z |
AxelUlmestig |
0b65fa39ee1c6579467f2369587f12c8b3ff065c546f33730b3e7cc879faa3b6
|
|
Changed description
from Define a statechart (<https://statecharts.dev/>) in SCXML inside a Haskell
module and get typed states, events and a step function out of it.
.
> [scxml|
> <scxml initial="Draft">
> <state id="Draft"><transition event="Submit" target="Review"/></state>
> <state id="Review">
> <onentry><script>notifyReviewers</script></onentry>
> <transition event="Approve" target="Done"/>
> </state>
> <final id="Done"/>
> </scxml>
> |]
.
generates @FsmState@, @FsmEvent@ and the functions
@initiateStateMachine :: m FsmState@ and
@notifyStateMachine :: FsmState -> FsmEvent -> m FsmState@, which call the
callbacks named in the @\<script\>@ elements. Compound states become sum
types and parallel states become products, so a value of @FsmState@ is
exactly one legal configuration: illegal states are unrepresentable and
@case@ is exhaustive. Names in the XML are used verbatim as Haskell
constructor names.
.
Hierarchy, parallel regions, entry and exit callbacks and SCXML's
@done.state@ completion events are supported. @cond@ guards and eventless
transitions are deliberately not: a decision becomes a state whose entry
callback raises one of the events leading out of it, which keeps the
branching visible in the chart. See the README for the full mapping and
the list of unsupported SCXML features.
to Define a statechart (<https://statecharts.dev/>) in SCXML inside a Haskell
module and get typed states, events and a step function out of it.
> [scxml|
> <scxml initial="Draft">
> <state id="Draft"><transition event="Submit" target="Review"/></state>
> <state id="Review">
> <onentry><script>notifyReviewers</script></onentry>
> <transition event="Approve" target="Done"/>
> </state>
> <final id="Done"/>
> </scxml>
> |]
generates @FsmState@, @FsmEvent@ and the functions
@initiateStateMachine :: m FsmState@ and
@notifyStateMachine :: FsmState -> FsmEvent -> m FsmState@, which call the
callbacks named in the @\<script\>@ elements. Compound states become sum
types and parallel states become products, so a value of @FsmState@ is
exactly one legal configuration: illegal states are unrepresentable and
@case@ is exhaustive. Names in the XML are used verbatim as Haskell
constructor names.
Hierarchy, parallel regions, entry and exit callbacks and SCXML's
@done.state@ completion events are supported. @cond@ guards and eventless
transitions are deliberately not: a decision becomes a state whose entry
callback raises one of the events leading out of it, which keeps the
branching visible in the chart. See the README for the full mapping and
the list of unsupported SCXML features.
|
| -r0 |
2026-09-09T09:48:29Z |
AxelUlmestig |
12c1763b646f2560e79ae060eaaa0e8b112180c7357bee2c2b016f4be5f72368
|
|
|