我知道它fmap的类型(a -> b) -> f a -> f bwhere fis a functor (并且根据函子的不同做不同的事情)。我的基本问题是这样的:给定一些调用fmap r x,ghc 如何找出函子f是什么,只是给定了xand的类型r?
让我更准确地说。假设f和f'是这样的函子,对于某些类型f a= ,但是和是不同的。如果has type和has type ,似乎有两种不同的可能结果:something of type和 something of type 。这种歧义是如何解决的?f' aaf bf' bra -> bxf afmap r xf bf' b
第二个问题:我想通过制作一个奇怪的函子来测试这一点——也许a对[Int]任何类型都适用a并对函数做一些愚蠢的事情……但我显然还没有找到合适的语法让我以这种方式指定函子。(有类似的东西data Newtype a = [Int]吗?看来我需要先创建一个类型类名称才能使其成为仿函数的实例。)
编辑:我现在明白了,但为了记录,真正的问题(这只是我的问题中隐含的)是我没有意识到你不能拥有一个Foo类似已经存在Foo a的类型的函子。Int