2012-04-20 65 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

相關問題