是否存在一些优秀的实现了 Functor
但未实现 Applicative
的例子?这里的“优秀”是指非平凡的(不是 Const Void
)例子,且不需要使用 undefined
。如果没有这样的例子,是否有一种方法可以证明该领域并不具有足够的趣味性?
这与 Good examples of Not a Functor/Functor/Applicative/Monad? 相似,但那里并没有完全解决。
作为后续问题,是否存在一些有趣的实现了 Functor
但由于拥有过多的非规范化 Applicative
实例而未实现 Applicative
的例子?例如,“扩展 Maybe
”有点无聊。
data MayB a = Jus a | Nothing1 | Nothing2 | Nothing3 | ...
instance Applicative MayB where
pure = Jus
Jus f <*> Jus x = Jus (f x)
Jus f <*> n = n
n <*> Jus x = n
n1 <*> n2 = methodOfResolvingNothingWhatsoever n1 n2
有没有例子可以说明 Applicative
实例的变化更加重要?
data MayB a = Jus a | Nothin Int
和Nothin n1 <*> Nothin n2 = Nothin $ max n1 n2
是我实现它的方式。然后你就有了一个失败级别的概念,其中较高级别优先。不确定这在哪里有用,但很容易编码。 - bheklilrm
是一个幺半群,那么Cont m
就是一个可应用函子,因此有很多不是可应用函子的函子。基本上,任何具有大量与我们定义的函子参数无关的“结构”的东西都很难成为可应用函子。 - daniel gratzerConst
比它所得到的赞誉更有趣。与大型产品和一般镜头用途的联系表明,除了函子参数之外,拥有结构是多么普遍。 - Anthony