[Haskell] evaluate function as a string

Sebastian Sylvan sylvan at dtek.chalmers.se
Fri Apr 23 04:32:54 EDT 2004

Ay Joselito wrote:
 > I want to develop an application
> in which the user enters a mathematical equation,
> presumably as a string (any arbitrary equation, using
> any of the standard mathematical operators : +,*,^,
> etc, and any of the standard functions: sin, exp,
> etc.). I need to take that string, convert it to a
> real function, and evaluate it.

First you need to parse the expression into a Haskell data type. For 
this I would recommend Parsec (see Haskell.org). The Haskell data type 
would be something like

data Expr = AtomD Double | AtomI Integer | Add Expr Expr | Mul Expr Expr 
| Sub Expr Expr | ....

Then when you've parsed the expression you need to evaluate it. This 
should be fairly straightforward (pattern match against the constructors 
and perform the necessary operations recursively).

Good luck.

Clothes make the man. Naked people have little or no influence on society.
- Mark Twain

More information about the Haskell mailing list