2017-06-28 33 views
3

我有以下數據類型定義:如何使用數據類型包含功能

newtype Combine a b = 
    Combine { unCombine :: a -> b } 

,然後我可以定義如下:

Prelude> let f = Combine $ \n -> Sum (n + 1) 

我的問題是,如何使用f

回答

7
Prelude Data.Monoid> unCombine f 1 
Sum {getSum = 2} 
Prelude Data.Monoid> unCombine f 42 
Sum {getSum = 43}