27得票8回答
为什么无状态函数对象的运算符()不能是静态的?

无状态函数对象的operator ()为什么不允许是static?无状态lambda对象可转换为具有与其operator ()相同签名的自由函数指针。 Stephan T. Lavavej在第6页上指出,将其转换为函数指针只是一个operator FunctionPointer()(引用)。...

27得票4回答
哪些单子可以表示为某个函子上的自由单子?

Free文档中说: 一些常见的单子可以作为自由单子(free monads)出现, 给定 data Empty a,Free Empty 同构于 Identity 单子。 Free Maybe 可用于模拟部分性单子,其中每个层次代表运行计算更长时间。 还有...

26得票5回答
在Haskell中,将函数作为Functor的实例感到困惑

Functor 中 fmap 的类型为:fmap :: Functor f => (a -> b) -> f a -> f b 看起来,首先将函数 (a -> b) 应用于 f a 的参数,以创建类型为 b 的结果,然后将 f 应用于该结果,其结果是 f b。 以...

25得票3回答
fmap和bind之间的能力差异?

我对函数式编程比较陌生(来自JavaScript),很难区分这两个概念,这也影响了我对于函子和单子的理解。 函子:class Functor f where fmap :: (a -> b) -> f a -> f b 单子(简化版):class Monad m wh...

25得票1回答
Rust为什么没有高阶类型?这是否有内在的原因解释?

Rust没有高种类类型。例如,在Rust中无法编写函子(因此也无法编写单子)。我想知道是否有深层次的原因解释了这一点,以及为什么。 例如,我可以理解的原因是:缺乏零成本抽象使HKT成为可能。或者类型推断变得更加困难。当然,我还在寻找一种解释,向我展示这是一个真正的限制。 如果答案已经在其他...

24得票2回答
函子实例是唯一的吗?

我在想,在Haskell中,Functor实例在多大程度上是由函子法则唯一确定的。 由于ghc可以为至少“常规”数据类型派生Functor实例,因此它们在很多情况下至少是唯一的。 为了方便起见,Functor定义和函子法则如下:class Functor f where fmap ::...

24得票6回答
为什么一些标准运算符没有标准的函数对象?

我们拥有以下 functors: std::plus (+) std::minus (-) std::multiplies (*) std::divides (/) std::modulus (%) std::negate (-) std::logical_or (||) std::log...

23得票6回答
将C++中的vector of pairs->first转换为新的vector的方法std::transform。

非常抱歉问一个初学者的问题。有向量和成对向量。typedef std::vector <int> TItems; typedef std::vector < std::pair <int, int> > TPairs; 有没有一种方法可以通过一步操作将所有成...

23得票3回答
如何在类内调用成员变量的__invoke方法

我这里是PHP 5.4.5版本。我尝试调用作为其他对象成员存储的对象。大概是这样的:class A { function __invoke () { ... } } class B { private a = new A(); ... $this->a(); ...

23得票4回答
Haskell Functor 暗含法则

Typeclassopedia中说: "类似的论证也表明,任何满足第一个定律(fmap id = id)的Functor实例都将自动满足第二个定律。从实际上讲,这意味着只需要检查第一个定律(通常通过非常简单的归纳法完成)即可确保Functor实例是有效的。" 如果是这样的话,为什么我们还要提到...