在Haskell中执行Parsed函数调用

时间:2016-12-17 13:49:21

标签: haskell call interpreter

首先,我想说我是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 = ?

0 个答案:

没有答案