【问题标题】:Instantiating datatype with multi-parameter members使用多参数成员实例化数据类型
【发布时间】:2012-04-20 21:51:17
【问题描述】:

我定义了以下数据类型,它应提供 2 个功能:

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

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

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

但是我得到: ERROR - 表达式中的语法错误(意外的 `_')

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

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

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

返回 True。

但重点是我想用它的具体结果和 stepcost 函数来实例化数据类型 Problem。当然,这些函数取决于它们的参数。那么我该如何向他们传递一些参数呢?

【问题讨论】:

    标签: haskell types record


    【解决方案1】:

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

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

    【讨论】:

    • aff.. 当然!现在我看到它似乎很合乎逻辑。谢谢!
    【解决方案2】:

    你需要例如 lambda 表达式,

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

    【讨论】:

      猜你喜欢
      • 2019-02-10
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      相关资源
      最近更新 更多