我正在尝试在Haskell Book(第15章,"Monoid,Semigroup")中进行Semigroup 练习之一,但我被卡住了.给出以下内容:
newtype Combine a b =
Combine { unCombine :: (a -> b) }
Run Code Online (Sandbox Code Playgroud)
而且我应该为它编写Semigroup实例Combine.
然后书说它必须表现如下:
Prelude> let f = Combine $ \n -> Sum (n + 1)
Prelude> let g = Combine $ \n -> Sum (n - 1)
Prelude> unCombine (f <> g) $ 0
Sum {getSum = 0}
Prelude> unCombine (f <> g) $ 1
Sum {getSum = 2}
Prelude> unCombine (f <> f) $ 1
Sum {getSum = …Run Code Online (Sandbox Code Playgroud) haskell ×1