summaryrefslogtreecommitdiff
path: root/Haskell-book/15/semigroup/app/Main.hs
blob: 237aefe697e56ecdcf4ab8732cb07ebd98dfdc05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
module Main where

import Data.Monoid
import Mem

f' :: Num a => Mem a String
f' = Mem $ \s -> ("hi", s + 1)

main :: IO ()
main = do
    let rmzero = runMem mempty 0
        rmleft = runMem (f' <> mempty) 0
        rmright = runMem (mempty <> f') 0
    print $ (rmleft :: (String, Int))
    print $ (rmright :: (String, Int))
    print $ (rmzero :: (String, Int))
    print $ rmleft == runMem f' 0
    print $ rmright == runMem f' 0