2012-04-20 6 views
1

私は2つの機能を提供するものと、次のデータ型定義された:私はこのタイプのインスタンスを作成するにはどうすればよいマルチパラメータメンバーとデータ型をインスタンス化

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

を?私はこれを試してみました:

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

しかし私が手: ERRORを - 構文エラーを表現して( '_ `予期しない)私は、そのメンバーが1つのだけの引数を取ることを除いて、類似したデータ型のインスタンスを作成するために管理

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

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

を返します。

しかし、ポイントは、特定の結果とstepcost関数でデータ型の問題をインスタンス化したいということです。もちろん、これらの関数は引数に依存します。だから私はそれらにいくつかの引数を渡すことができますか?あなたはそのための例のラムダ式のために必要な

答えて

4

あなたはラムダ式でそれをインスタンス化する必要があります。パラメータを直接取る名前として扱うことはできません。

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

aff ..もちろん!今私はそれが非常に論理的に見えるそれを参照してください。ありがとうございました! – hooch

4

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

ありがとうございます! – hooch

関連する問題