[Haskell-cafe] Encoding for flow charts

Tom Ellis tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk
Tue Dec 30 16:30:02 UTC 2014


On Tue, Dec 30, 2014 at 04:23:25PM +0000, Tom Ellis wrote:
> On Thu, Dec 25, 2014 at 04:34:19PM -0700, Richard Wallace wrote:
> > I've been working to encode a fairly complex flow chart.
> 
> What precisely do you mean by "flow chart"?
> 
> If you mean something loosely described as "a sequence of nodes which lets
> you perform actions and choose a next path based on the results of those
> actions" then isn't each node just `M Bool` for some monad of appropriate
> actions `M`?

For example here is the flowchart from the top of

    http://en.wikipedia.org/wiki/Flowchart

implemented as I describe:

    plugInLamp  :: M ()
    replaceBulb :: M ()
    repairLamp  :: M ()

    lampPluggedIn :: M Bool
    bulbBurnedOut :: M Bool

    lampDoesn'tWork :: M ()
    lampDoesn'tWork = do
        p <- lampPluggedIn
        if not p then plugInLamp
        else do
            b <- bulbBurnedOut
            if b then replaceBulb
            else repairLamp


More information about the Haskell-Cafe mailing list