# [Haskell-beginners] Re: Finite State Machine ..

Tom Poliquin poliquin at softcomp.com
Tue Mar 3 02:51:03 EST 2009

```Heinrich Apfelmus wrote:
> Tom Poliquin wrote:
> > Heinrich Apfelmus wrote:
> >> You probably want guards, like this
> >>
> >>  fib n
> >>
> >>     | n == 0    = 0
> >>     | n == 1    = 1
> >>     | otherwise = fib (n-1) + fib (n-2)
> >
> > Is this what you had in mind?
> >
> > module Main where
> >
> > foo a b c
> >
> >      | p1 && p2 || not p3 = 42
> >      | p1 || not p2 && p3 = 13
> >      | otherwise = 0
> >
> >   where
> >    -- setup if predicates
> >        p1 = a > b
> >        p2 = a + b > 2
> >        p3 = a - b < 1
> >
> > main = do
> >         x <- return \$ foo 9 2 3
> >         print x
> >
> > --   42
>
> Yes.
>
> Of course, it will become clunky very quickly; only abstraction and
> insights into the problem domain can help in these cases.

ay, there's the rub!   (Hamlet Act III, Scene I)
Those pesky insights into the problem !

If I have time I'll try all three approaches; guards,FSM, and insights.

Thanks everyone for the help!

Tom

```