2012-04-20 64 views
1

我所定义的数据类型如下,其应提供两个功能:与多参数成员实例化的数据类型

data Problem = Prob { result :: State -> Action -> State 
        , stepCost :: State -> Action -> Integer 
        } 

如何可以实例化这种类型?我尝试这样做:

let mcp = Prob { result _ _ = (False, (1,1)), stepCost _ _ = 1 } in True 

但我得到: 错误 - 语法错误在表达式(意外'_')

我设法实例化一个类似的数据类型与它的成员只需要1个参数异常:

data Lala = La { omg :: State 
       , gee :: Integer 
       } 

let mcp = La { omg = (False, (1,1)), gee = 1 } in True 

返回True。

但重点是,我想实例化具体结果和stepcost函数的数据类型问题。当然,这些功能取决于他们的论点。那么我怎么能通过他们一些论据?

回答

4

您需要一个带lambda表达式实例化;你不能把它当作一个直接带参数的名字。

let mcp = Prob { result = \_ _ -> (False, (1,1)), stepCost = \_ _ -> 1 } in True 
+0

aff ..当然!现在我看到它似乎很合乎逻辑。谢谢! – hooch 2012-04-20 21:59:09

4

需要用于该示例lambda表达式,

let mcp = Prob { result =\ _ _ -> (False, (1,1)), stepCost =\ _ _ -> 1 } in True 
+0

也谢谢! – hooch 2012-04-20 21:59:26

相关问题