我定义了以下数据类型,该数据类型应提供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函数实例化数据类型问题。当然,这些功能取决于他们的论点。那么我怎么能传递一些参数呢?
答案 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