具体类型无法成为应用程序的Functor示例?

Geo*_*rge 7 haskell category-theory

来自不适用的仿函数:

一个类型构造函数,它是一个Functor但不是Applicative.一个简单的例子是一对:

instance Functor ((,) r) where
    fmap f (x,y) = (x, f y)
Run Code Online (Sandbox Code Playgroud)

但是如何在Applicative不对其施加额外限制的情况下定义其实例是没有办法的r.特别是,没有办法如何定义pure :: a -> (r, a)任意的r.

在这里,pure不能同时为所有类型定义; 但是,对于任何具体类型T,人们都可以((,) T)申请.

问题:是否有一个具体仿函数的例子(即,没有涉及类型变量)是一个仿函数而不是一个应用程序?

rba*_*sso 5

我在这里没有50条声誉可以发表评论,因此我将尝试做为答案:

但是,对于任何具体的T类型,都可以使((,)T)为可应用的。

...

在数学中有一个定理,任何具有至少2个元素的集合都可以被制成一个半群。因此,对于任何具体的T类型,原则上都可以将其作为Monoid的成员,然后原则上可以将其用作应用。这个推理怎么了?

那无人型的元组呢? (,) Void

Functor,对吗?

你能Applicative为它推导吗?如何pure实施?