3
私はdata
型の関数を格納したいと考えています:State Foo a -> a
。おそらく、このタイプのインスタンスが作成されると、プログラムは部分的にevalState
を計算の初期状態に適用し、結果の関数をデータ構造に格納します。その後、その関数をインスタンスから取得し、State
モナド内の1つ以上の計算を評価し、その結果を得るために使用することができる。多型関数をデータ型に格納する方法
-- This doesn't work
data Bar = Bar {
-- other members here
runWithState :: State Foo a -> a
}
==> Not in scope: type variable 'a'
私は計算の最終結果がどうなるか分からない、それは計算が作り出すものに応じて変更することができますので、私はより多くのコンクリートを作ることができません。
これでタイプチェッカーを動作させるにはどうすればよいですか? RankNTypes
拡張子を持つ
注:GHCを使用。拡張機能は正常です。 –