George Neuner wrote on 02/13/2017 01:39 PM:
However, for a particular protocol, or class of protocols you identify,
you might be able to come up with a DSL that expresses everything, and
which is easier to verify. You might also have a DSL layer that almost
exactly matches the formal specification for the protocol (though it's
usually not that easy, and specs usually get fuzzy on important details).
A generic state machine generator / combinator might be a useful
starting point. Is there anything like that available for Racket?
I don't know of an off-the-shelf reusable one. Implementing a simple
FSM in a Scheme descendant is often (usually?) best a call graph of
state procedures, each with `case` or other branching on event, and
doing tail calls to transition.
Shriram did use a simple FSM as an example for an introduction to macros:
https://cs.brown.edu/~sk/Publications/Papers/Published/sk-automata-macros/paper.pdf
In the early days of Java, I made a DSL with rich state-ish dynamic
modeling semantics, which generated Java code, and I included an example
of TCP connection behavior, but I never used it for real-world
problems. I've been wanting to do more on this, as a Racket syntax
extension suitable for real-world high-performance work, but not yet had
an excuse that simultaneously paid bills. :)
--
You received this message because you are subscribed to the Google Groups "Racket
Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/racket-dev/82c99b9e-3aa2-d69c-f799-fb5d880d9f07%40neilvandyke.org.
For more options, visit https://groups.google.com/d/optout.