Don' mean to hamper enthusiasm but here is why code generation from FSM charts can at most be a purely educational exercise. This guy captures it well:
http://www.skorks.com/2011/09/why-developers-never-use-state-machines/ Doing it the other way around, i.e. Generate FSM charts from code (execution traces) offers all the debugging and visualization benefits without the catch-22 mentioned in the article. Sent from my iPhone > On May 17, 2015, at 6:19 AM, Mike Thompson <m.l.thompson...@gmail.com> wrote: > >> On Sunday, May 17, 2015 at 8:15:56 PM UTC+10, Ruslan Prokopchuk wrote: >> Re: Javelin & subscriptions. >> >> Code to mimic subscriptions with cells and to use them as ratoms in Reagent >> code is pretty straightforward: >> >> Definition: >> https://github.com/ul/ampere/blob/master/src/ampere/adapters/reagent.cljs#L5 >> >> Usage in Reagent view: >> https://github.com/ul/ampere/blob/master/examples/todomvc/src/todomvc/views/reagent.cljs#L30 > > > Hey, good to see re-frame port, and also work on applying FSM. I really think > there's a lot of potential in that direction. > > But I can see 3 potential problems ... > > First, when the UI is a bit dynamic and Reagent components are being created > and destroyed, I think that use of add-watch in subscriptions might cause a > memory leak ... worse because they don't go away, you'll end up with old > unused ones firing and slowing things down. At least, it seems like that on > first look (claim untested). > > Second, for larger apps, you want your subscriptions to be created only when > needed. When you have "page 10" open, you don't want "page 2" subscriptions > firing because that page isn't even visible (rendered). Your approach > appears to require that "cells" and "formulas" for all possible subscriptions > are created up-front (and are then used by subscriptions). Again, on first > glance that seems like it would work for a simple case, but not scale up. > > Third, subscriptions sometimes need to be parametrized. I wonder how that > would be done? > > There might well be solutions to all these issues, and perhaps I missing > something, but I thought I'd jot these notes down quickly. > > -- > Mike > > -- > Note that posts from new members are moderated - please be patient with your > first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojurescript+unsubscr...@googlegroups.com. > To post to this group, send email to clojurescript@googlegroups.com. > Visit this group at http://groups.google.com/group/clojurescript. -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescript@googlegroups.com. Visit this group at http://groups.google.com/group/clojurescript.