下面的玩具示例通过调用函数来不确定地计算一个数字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