7得票2回答
`Alt` 类型类的函数子分配律是否平凡?

我正在查看与 Alt 类型类 相关的法律,其代码如下: class Functor f => Alt f where (<!>) :: f a -> f a -> f a 一条法则是这样的: <$> left-distributes...

36得票3回答
为什么函数不是一个对象?

我在标准n4296(草案)§1.8第7页中读到: “对象是存储区域。[注:不管函数是否以对象存储的方式占据存储空间,函数都不是对象。 ——编者注]” 我在网络上花了几天时间寻找这种排除的好理由,但没有成功。也许是因为我不完全理解对象。所以: 1. 为什么函数不是对象?有什么区别? 2. ...

9得票2回答
强闭合协函子的泛化

我正在查看强闭合 profunctors 的类: class Profunctor p where dimap :: (a' -> a) -> (b -> b') -> p a b -> p a' b' class Profunctor p => ...

7得票3回答
OCaml中分别存储Functors的方法是什么?

我想要一个大的函数对象Hello(Blah: Blah_type),并将其保存在hello.ml文件中,但是我该如何做呢? 如果我只是在我的顶层文件中,我会有以下代码: module Hello(Blah: Blah_type) = struct val x = 2 end...

15得票1回答
使用全局变量和函数对象实现日志记录

我想实现以下特征的C++日志记录: 它必须对所有源代码可用,而不需要为每个函数添加额外参数(这需要全局变量) 日志调用可以指定严重级别(INFO、DEBUG、WARN等),并且可以在运行时设置日志设施以忽略低于某个严重级别的调用 日志输出可在运行时设置为控制台或文件。 我不需要的功能是...

7得票2回答
为什么 "fmap (replicate 3) Just" 的类型是 "a -> [Maybe a]" 在 Haskell 中?

最近我在 Learn You a Haskell for Great Good 上线学习 Haskell。 我有两个问题: fmap (replicate 3) 是类型为 Functor f=> f a -> f [a]。为什么它可以应用于 Just? 此外,为什么 fmap...

46得票1回答
如何在可变模板类中获取函数指针的参数类型?

这是对于这个问题的跟进:通用函数对象,适用于任意参数列表的函数 我有一个函数对象类(完整代码请参见上面的链接): template<typename... ARGS> class Foo { std::function<void(ARGS...)> m_f;...

13得票4回答
为什么 `pure` 只在适用于应用和不适用于函子时才需要?

阅读这本关于Haskell和范畴论基础的Wikibook,我学到了有关Functor的知识: Functor本质上是类别之间的转换,因此给定类别C和D,一个函子F:C -> D 将C中的任何对象A映射到D中的F(A)。 将C中的态射f:A -> B映射到D中的F(f):F(A)...

29得票4回答
两个Functor组合是什么意思?

Haskell Typeclassopedia Section 3.2的第5题要求证明或反例以下语句: 两个Functor的组合也是一个Functor。 起初,我以为它是在谈论将两个不同实例的Functor的fmap方法进行组合,但这似乎不合理,因为就我所知,类型无法匹配。对于两种...

53得票5回答
Haskell中的functor如何工作?

我正在尝试学习Haskell,已经掌握了所有基础知识。但是现在我陷入了困境,试图理解functor。 我读到过“functor将一个范畴转换成另一个范畴”。这是什么意思? 我知道这很难,但有人能否给我提供一个通俗易懂的functor解释或者一个简单的用例呢?