63得票5回答
为什么对数组进行js map操作会修改原始数组?

我对map()的行为感到非常困惑。 我有这样一个对象数组:const products = [{ ..., 'productType' = 'premium', ... }, ...] 我将这个数组传递给一个函数,该函数应返回相同的数组,但其中所有产品都是免费的: A...

62得票3回答
集合、函子与相等性的混淆

最近在工作中讨论了集合(Sets)的话题,Scala中的集合支持zip方法,但使用该方法可能会导致bug,例如:scala> val words = Set("one", "two", "three") scala> words zip (words map (_.length))...

61得票7回答
为什么要使用函数对象而不是普通函数?

比较double average = CalculateAverage(values.begin(), values.end()); 使用double average = std::for_each(values.begin(), values.end(), CalculateAverage(...

60得票3回答
一个不是 Functor(或不可遍历 Traversable)的 Foldable 的例子?

一个实现Foldable的类型通常是一种容器,因此也可能是一个Functor。确实,这里说: Foldable类型也是一种容器(尽管该类不要求技术上需要Functor,但有趣的Foldable都是Functor)。 那么是否有一个既不自然地是Functor也不是Traversabl...

55得票2回答
有趣的重复fmap玩法

我在玩函数子时发现了一些有趣的东西: 显然,id 可以在类型 (a -> b) -> a -> b 实例化。 对于列表函数子,我们有 fmap :: (a -> b) -> [a] -> [b],这与 map 相同。 在 ((->) r) 函数子...

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

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

49得票1回答
functor和endofunctor的区别

有人能简单地解释一下这两者之间的区别吗?我还没有完全理解monads是endofunctors而不仅仅是functors的部分。 有人能简单地解释一下这两者之间的区别吗?我还没有完全理解monads是endofunctors而不仅仅是functors的部分。

48得票4回答
为什么Promises是Monad?

我正在学习函数式编程,并了解到Monads,Functors和Applicatives。 据我理解,以下定义适用: a) ( A=>B ) => C[A] => C[B] | Functor b) ( A=>C[B] ) => C[A] => C[B] | Monad c) ( C[A...

47得票5回答
什么是逆变函子?

这种类型让我惊叹不已:class Contravariant (f :: * -> *) where contramap :: (a -> b) -> f b -> f a 然后我阅读了这篇文章,但与标题相反,我并没有更加清楚。 请问有人能解释什么是逆变函子并提供...

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

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