Haskell 反应型香蕉1.0单体API:现在如何定义递归行为?

Haskell 反应型香蕉1.0单体API:现在如何定义递归行为?,haskell,reactive-banana,Haskell,Reactive Banana,当然,这是一个愚蠢的错误。我只需要添加MonadFix m作为约束,因为我没有直接使用时刻Monad: mkCounter :: (MonadFix m,MonadMoment m,Enum a,Ord a) => a -> Maybe a -> Maybe a -> Bool -> Event b -> Event c -> m (Behavior a) 然后它在mdo上按预期工作,所以你最终尝试了1.0?“Moment没有Mon

当然,这是一个愚蠢的错误。我只需要添加
MonadFix m
作为约束,因为我没有直接使用
时刻
Monad:

mkCounter :: (MonadFix m,MonadMoment m,Enum a,Ord a) => a -> Maybe a -> Maybe a -> Bool
          -> Event b -> Event c -> m (Behavior a)

然后它在
mdo

上按预期工作,所以你最终尝试了1.0?“
Moment
没有
MonadFix
实例”--在当前主机中。@ErikAllik是的,我决定从github获得最新版本,而不是用旧API浪费时间:)@duplode哦,我明白了,我犯了一个愚蠢的错误。。。问题解决了!
mkCounter :: (MonadMoment m,Enum a,Ord a) => a -> Maybe a -> Maybe a -> Bool
          -> Event b -> Event c -> m (Behavior a)
mkCounter start minVal maxVal cyclic incE decE = do
  -- .. same as above ..
  counter <- accumB start $ unions [((incF <$> counter) <@ incE)
                                   ,((decF <$> counter) <@ decE)]
  return counter
mkCounter :: (MonadFix m,MonadMoment m,Enum a,Ord a) => a -> Maybe a -> Maybe a -> Bool
          -> Event b -> Event c -> m (Behavior a)