blob: dc335955909b1bd68ee605cd4b7232026f02a718 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
{-# OPTIONS -XRecursiveDo #-}
-- test of user defined instance of MonadFix
module Main (main) where
import Control.Monad.Fix
data X a = X a deriving Show
instance Monad X where
return = X
(X a) >>= f = f a
instance MonadFix X where
mfix f = fix (f . unX)
where unX ~(X x) = x
z :: X [Int]
z = mdo x <- return (1:x)
return (take 4 x)
main = print z
|