J. *_*son 13 haskell functor applicative
有Functor没有Applicatives的好例子?好的,我正在寻找Const Void不需要诉求的非平凡(不)的例子undefined.如果没有,是否有任何方法可以证明那里的空间无趣?
这类似于不是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
Run Code Online (Sandbox Code Playgroud)
是否存在实例变体Applicative更具实质性的示例?
我看到仿函数但不是应用程序的主要地方是大型产品类型.考虑类似的事情
data Mean where
Unfair :: Monad a => a () -> Mean
data Foo a = Bar Int Mean a
Run Code Online (Sandbox Code Playgroud)
这很容易成为一个仿函数,但是没有办法让它成为一个应用程序,因为
(Bar i g f) (Bar i' g' a) = Bar ??? ??? (f a)
Run Code Online (Sandbox Code Playgroud)
我们只能???用至少一种方式填充我们的类似于幺半群的东西而且Mean永远不会因为我们无法指定某种东西来组合任意类型的两个值g :: a并g' :: b以关联方式.
此外,我们需要mempty或类似的东西pure :: a -> f a.我们给出了a大部分涉及a构造的数据类型,但其余的需要一个理智的"空"值.
因此,如果我们将应用程序和仿函数粉碎成一个大型类,大多数lens都会崩溃,因为镜头的大多数有用情况都涉及这样的情况,其中没有一个理智的Applicative实例.
因此,为了把这个手波浪卷发湿软的方式:当有一个类型是不直接与类型参数应用性做的就是定义在很多"东西",我们需要一种方法来合并所有的这个"东西"这并不总是可行的.
| 归档时间: |
|
| 查看次数: |
430 次 |
| 最近记录: |