次のおもちゃの例では、関数を呼び出して数値を非決定論的に計算しanyFunction
、偶数の選択肢のみを保持します。偶数の選択肢の代わりに最大の選択肢を保持する同様のコードをどのように書くことができますか? 別のモナドスタック署名が必要ですか?
anyFunction :: StateT Int [] Int
anyFunction = undefined
test :: StateT Int [] Int
test = do
s <- anyFunction
put s
v <- get
if even v then return v else mzero