使用多参数成员实例化数据类型

时间:2012-04-20 21:51:18

标签: haskell types record

我定义了以下数据类型,该数据类型应提供2个函数:

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

如何实例化此类型?我试过这个:

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

然而我得到: 错误 - 表达式中的语法错误(意外的“_”)

我设法实例化一个类似的数据类型,但其成员只接受一个参数:

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

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

返回True。

但重点是我想用其特定结果和stepcost函数实例化数据类型问题。当然,这些功能取决于他们的论点。那么我怎么能传递一些参数呢?

2 个答案:

答案 0 :(得分:4)

你需要例如lambda表达式,

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

答案 1 :(得分:4)

您需要使用lambda表达式对其进行实例化;你不能把它当作直接带参数的名字。

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