gpt4 book ai didi

haskell - 没有应用程序的仿函数示例

转载 作者:行者123 更新时间:2023-12-03 23:53:17 26 4
gpt4 key购买 nike

有没有Functor 的好例子不是 Applicative 的年代?好的,我正在寻找不需要诉诸 Const Void 的重要(不是 undefined )示例.如果没有,有什么方法可以证明那里的空间是无趣的?

这类似于 Good examples of Not a Functor/Functor/Applicative/Monad? ,但在那里并没有完全解决。

作为后续问题,Functor 是否有任何有趣的例子? s 可能没有 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 的变体的示例?实例更多的 Material ?

最佳答案

我看到 functor 而不是 applicatives 的主要地方是大型产品类型。考虑类似的东西

 data Mean where
Unfair :: Monad a => a () -> Mean
data Foo a = Bar Int Mean a

这很容易成为一个仿函数,但没有办法让它成为一个应用程序,因为
 (Bar i g f) (Bar i' g' a) = Bar ??? ??? (f a)

我们只能填写我们的 ??? s 与至少在一种方式上类似幺半群的东西和 Mean永远不会,因为我们无法指定一些东西来组合任意类型的两个值 g :: ag' :: b以一种关联的方式。

此外,我们需要 mempty或类似的东西 pure :: a -> f a .我们收到了 a所以大多数数据类型涉及到 a构造起来很简单,但其余的需要一个理智的“空”值。

因此,如果我们将 applicative 和 functor 分解为一个大型类型类,则大部分 lens会分崩离析,因为镜头的大多数有用案例都涉及像这样的情况,其中没有理智 Applicative实例。

因此,以一种随意的方式来说明这一点:当类型中有很多“东西”与定义的类型参数应用程序没有直接关系时,我们需要一种方法来合并所有这些“东西” “这并不总是可能的。

关于haskell - 没有应用程序的仿函数示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22099425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com