这是新类型:
newtype Combine a b = Combine { unCombine :: (a -> b) }
我在理解这条线的许多事情时遇到了问题,但首先是大括号。它们是什么以及它们在这里做什么 - 从两种输入数据类型创建函数?
答案 0 :(得分:4)
大括号允许记录语法。它可以被认为是以下方面的简写:
newtype Combine a b = Combine (a -> b)
unCombine :: Combine a b -> (a -> b)
unCombine (Combine a) = a
记录语法会自动为您创建unCombine
函数,因此您无需自己定义它。当你的类型有很多类型参数时,它会派上用场。