Haskell 带谓词的动态切换

Haskell 带谓词的动态切换,haskell,reactive-programming,frp,reactive-banana,Haskell,Reactive Programming,Frp,Reactive Banana,假设我有一个monadM,一个函数* foo :: forall t. Frameworks t => Int -> M (Behavior t State) 和一个谓词 pred :: State -> Bool 我想得到一个值*(在任何必要的monad中) 这样,bar正好是foo n,直到信号传递的状态满足pred,在该点,bar切换到foo(n+1),并且重复该操作n从任意Int开始,例如1 我在学习玻璃钢方面有很多乐趣,但这个特殊的问题给我带来了麻烦 *同样考虑

假设我有一个monad
M
,一个函数*

foo :: forall t. Frameworks t => Int -> M (Behavior t State)
和一个谓词

pred :: State -> Bool
我想得到一个值*(在任何必要的monad中)

这样,
bar
正好是
foo n
,直到信号传递的状态满足
pred
,在该点,
bar
切换到
foo(n+1)
,并且重复该操作
n
从任意
Int
开始,例如1

我在学习玻璃钢方面有很多乐趣,但这个特殊的问题给我带来了麻烦



*同样考虑到用
行为t
代替
事件t

什么是monad
M
,这可能很重要?还有,你说“
n
从某个int开始”,但是你从哪里得到
n
呢?在我的特殊情况下
M
Rand
from
randommand
Behavior t State
s是一系列随机生成的环境,
n
从1开始,表示从第一个环境开始。啊,所以
n
是函数的固定参数,而不是不断变化的
Behavior
等等。你确定
条码的类型吗?这不应该是
bar::forall t。框架t=>M(行为t状态)
M(行为t状态)
,或
时刻t(行为t状态))
或其他东西是的,我打算
bar
成为某个一元值绑定的对象。
bar :: forall t. Frameworks t => Behavior t State