【发布时间】:2013-04-20 08:44:11
【问题描述】:
我是一个 Haskell 新手,如果答案很明显,我深表歉意,但我正在阅读 Typeclassopedia 以更好地理解类别。在做 Functors 部分的练习时,我遇到了这个问题:
举一个 * -> * 类型的例子,它不能作为一个实例 函子(不使用未定义的)。
我的第一个想法是定义某种无限递归的 fmap 定义,但这与在定义中使用undefined 本质上不一样吗?
如果有人能解释答案,将不胜感激。
谢谢!
原始练习的来源在这里,第 3 部分:http://www.haskell.org/haskellwiki/Typeclassopedia#Introduction
【问题讨论】:
-
(-> int)呢? -
@RamonSnir
((->) Int)实际上很好,你需要像data K a = K (a -> Int)这样的东西。 -
@MikhailGlushenkov,这几乎肯定是 Ramon 的意思,就像
(+ 1) = \a -> a + 1。 -
@MikhailGlushenkov 正如@dbaupp 所说,
(-> int)((->) int)。
标签: haskell functional-programming