首先,我想说我是Haskell的新手。这是我的问题: 对于一个学校项目,我需要能够解析和插入并执行一个fucntion调用。此调用需要能够执行haskell中已定义的函数 解析调用有效,但我不知道如何执行该函数,因为参数和类型的数量是未知的。
以下是我如何表示我的数据
type Name = String
type Cond = Expr
data Expr
= Num Int
| Boolean Bool
| BinOp Op Expr Expr
| Var Name
deriving (Eq, Ord, Show)
data Stmnt
= Call Name [Expr]
| If Cond [Stmnt] [Stmnt]
| While Cond [Stmnt]
| VarDef Name Expr
deriving (Eq, Ord, Show)
这是我的插件的一部分。 funcall 的实施需要帮助。
data Value = FineInt Int
| FineBool Bool
| FineFun ([Value] -> Value)
-- The enviroment keeps track of variables in the program
type Env = [(Name,Value)]
-- A state that takes an enviroment
type StEnv = State Env
evalstm :: Stmnt -> StEnv ()
evalstm (Call name exprs) = funcall name exprs
-- funcall name exprs = ?