@@ -1,9 +1,11 @@
1+{-# LANGUAGE BangPatterns #-}
1{-# LANGUAGE ConstraintKinds #-}
2{-# LANGUAGE ConstraintKinds #-}
2{-# LANGUAGE FlexibleContexts #-}
3{-# LANGUAGE FlexibleContexts #-}
3{-# LANGUAGE FlexibleInstances #-}
4{-# LANGUAGE FlexibleInstances #-}
4{-# LANGUAGE GADTs #-}
5{-# LANGUAGE GADTs #-}
5{-# LANGUAGE MultiParamTypeClasses #-}
6{-# LANGUAGE MultiParamTypeClasses #-}
6{-# LANGUAGE RankNTypes #-}
7{-# LANGUAGE RankNTypes #-}
8+{-# LANGUAGE RecursiveDo #-}
8module Reflex.Test.Micro (testCases) where
10module Reflex.Test.Micro (testCases) where
@@ -12,12 +14,11 @@ import Reflex.TestPlan
13import Control.Applicative
15import Control.Applicative
14import Control.Monad
16import Control.Monad
17+import Control.Monad.Fix
15import Data.Char
18import Data.Char
16import Data.Functor.Misc
19import Data.Functor.Misc
17import Data.Monoid
20import Data.Monoid
19import Data.Foldable
21import Data.Foldable
21import qualified Data.Map as Map
22import qualified Data.Map as Map
23import Prelude
24import Prelude
@@ -249,6 +250,14 @@ testCases =
249 f <- fanMap . fmap toMap <$> events1
250 f <- fanMap . fmap toMap <$> events1
250 return $ toList <$> mergeList [ select f (Const2 'b'), select f (Const2 'b'), select f (Const2 'e'), select f (Const2 'e') ]
251 return $ toList <$> mergeList [ select f (Const2 'b'), select f (Const2 'b'), select f (Const2 'e'), select f (Const2 'e') ]
253+ , testE "lazy-hold" $ do
254+ let lazyHold :: forall t m. (Reflex t, MonadHold t m, MonadFix m) => m (Event t ())
256+ rec !b <- hold never e
257+ let e = never <$ switch b
254 events1, events2, events3 :: TestPlan t m => m (Event t String)
263 events1, events2, events3 :: TestPlan t m => m (Event t String)