[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#848127: ITP: fsm -- state machine library



Package: wnpp
Owner: Matteo F. Vescovi <mfv@debian.org>
Severity: wishlist

* Package name    : fsm
  Version         : 0.2.1
  Upstream Author : Thomas Fitzsimmons <fitzsim@fitzsim.org>
* URL or Web page : http://elpa.gnu.org/packages/fsm.html
* License         : GPL-2+
  Description     : state machine library

 fsm.el is an exercise in metaprogramming inspired by gen_fsm of
 Erlang/OTP. It aims to make asynchronous programming in Emacs Lisp
 easy and fun. By "asynchronous" I mean that long-lasting tasks
 don't interfer with normal editing.

 Some people say that it would be nice if Emacs Lisp had threads
 and/or continuations. They are probably right, but there are few
 things that can't be made to run in the background using facilities
 already available: timers, filters and sentinels. As the code can
 become a bit messy when using such means, with callbacks everywhere
 and such things, it can be useful to structure the program as a
 state machine.

 In this model, a state machine passes between different "states",
 which are actually only different event handler functions. The
 state machine receives "events" (from timers, filters, user
 requests, etc) and reacts to them, possibly entering another state,
 possibly returning a value.

 The essential macros/functions are:

 define-state-machine  - create start-FOO function
 define-state          - event handler for each state (required)
 define-enter-state    - called when entering a state (optional)
 define-fsm            - encapsulates the above three (more sugar!)
 fsm-send              - send an event to a state machine
 fsm-call              - send an event and wait for reply

 fsm.el is similar to but different from Distel:
 <URL:http://fresh.homeunix.net/~luke/distel/>
 Emacs' tq library is a similar idea.


-- 
Matteo F. Vescovi

Attachment: signature.asc
Description: PGP signature


Reply to: