相关疑难解决方法(0)

如何为这种数据类型编写Semigroup实例?

我正在尝试在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

3
推荐指数
2
解决办法
571
查看次数

标签 统计

haskell ×1