functor相关内容

在绑定方面,如何定义应用?

在Haskell中,应用程序被认为比函数器更强,这意味着我们可以使用应用程序Like来定义函数器 -- Functor fmap :: (a -> b) -> f a -> f b fmap f fa = pure f fa 和Monad被认为比Applicative&;Functor更强,这意味着。 -- Functor fmap :: (a -> b) -> f ..
发布时间:2022-04-20 14:24:58 其他开发

Monad定义中的样板代码

由于Functor-Applicative-Monad Proposal,Monad是应用类的子类,而应用类又是函数子类。从数学上讲,这似乎是一个明智的选择,我对此没有任何问题。 然而,令我恼火的是,即使fmap和pure和的相应定律无论如何都是由单子定律固定的,也需要写下函数式和应用实例。事实上,在上面的链接提案中,它们自己写道:&您只需添加以下代码即可从Monad派生这些实例: ..
发布时间:2022-04-20 13:41:58 其他开发

函数者和单子之间的区别是什么?

这里有类似的问题,但它们与特定的编程语言有关,我正在寻找概念级别的答案。 据我所知,函数器本质上是不变的容器,它公开派生另一个函数器的map()API。哪项添加使将特定的函数器称为单体成为可能? 据我所知,每个单子都是函子,但并不是每个函子都是单子。 推荐答案 (请注意,这将是对范畴理论概念的简化解释) 函数器 函数器是从一组值a到另一组值a -> b的函数。对于编 ..
发布时间:2022-04-20 13:38:52 其他开发

为什么 2 元组 Functor 实例只将函数应用于第二个元素?

导入 Control.Applicative主 = 打印 $ fmap (*2) (1,2) 产生(1,4).我希望它产生 (2,4) 但该函数仅应用于元组的第二个元素. 更新我几乎马上就明白了这一点.我会在一分钟内发布我自己的答案.. 解决方案 Functor 实例实际上来自 GHC.Base 模块. 尝试编写我想要的实例,我可以看到它不会工作,给定元组的定义;实例只需要一 ..
发布时间:2022-01-19 23:53:21 其他开发

有状态函子 &STL:未定义的行为

我正在关注这个 函数对象教程 复制下面的意大利面: 我无法理解以下内容: 谓词应始终实现为无状态函数对象,以避免出现意外结果.无法保证算法在内部复制谓词的频率.因此,将谓词实现为有状态的函数对象可能会产生未执行的结果. 示例如下: #include #include #include #include 类谓词{上市:谓词(int 条件):条件_(条件),状态_(0){}b ..
发布时间:2022-01-07 11:38:43 C/C++开发

为什么在函数上使用函子?

比较 double average = CalculateAverage(values.begin(), values.end()); 与 double average = std::for_each(values.begin(), values.end(), CalculateAverage()); 在函数上使用函子有什么好处?第一个是不是更容易阅读(甚至在添加实现之前)? 假设函 ..
发布时间:2022-01-07 10:58:36 C/C++开发

如果 SML.NET 有函子,为什么 F# 不能?

这个问题开始于 我翻译的“ML for the Working Programmer"(WorldCat) 由 LC PAULSON 到 F# 使用函子作为示例. 最终希望翻译“纯函数数据结构"(WorldCat)作者 Chris Okasaki,使用函子. 阅读“类别类型和结构 - 类别理论简介供计算机科学家使用"(WorldCat),作者:Andrea Asperti 和 Giuse ..
发布时间:2022-01-05 10:10:47 其他开发

机器学习函子可以在 .NET (C#/F#) 中完全编码吗?

ML 函子可以用 .NET 接口和泛型实际表达吗?是否有一个高级 ML 函子使用示例来对抗此类编码? 答案摘要: 在一般情况下,答案是否定的.ML 模块提供功能(例如通过签名共享规范 [1]) 不直接映射到 .NET 概念. 但是,对于某些用例,可以翻译 ML 习语.这些情况不仅包括基本的 Set 函子 [2],还有 monad 的函式编码 [3],甚至更高级的 Haskell ..
发布时间:2022-01-05 09:50:03 C#/.NET

F# 对 OCaml 的更改

F# 是从 OCaml 派生出来的,但是缺少或添加了哪些主要项目?具体来说,我很好奇可用于学习 OCaml 的资源是否对想要学习 F# 的人也有用. 解决方案 主要区别在于 F# 不支持: 函子 OCaml 风格的对象 多态变体 camlp4/5 预处理器或扩展点 (ppx) 此外,F# 对标记参数和可选参数有不同的语法. 理论上,不使用这些特性的 OCaml 程序 ..
发布时间:2022-01-05 09:34:15 其他开发

函子和自函子的区别

有人能简单解释一下两者之间的区别吗?我没有完全理解 monad 是内函子而不是函子的部分. 解决方案 一个函子可以从一个类别转到另一个类别,一个内函子是一个起始类别和目标类别相同的函子. 与内同态与态射相同. 那么,为什么 monad 必须是内函子? 有一句名言“Monads 只是属于内函子范畴的幺半群".幸运的是,其他人已经在在这个答案中很好地解释了这一点. mo ..
发布时间:2022-01-02 13:56:48 其他开发

标准 ML 函子示例

Standard ML 中的Functor 与模块系统相关,可以根据其他结构生成结构.下面给出了一个为各种类型的列表生成列表组合子的函子的例子,但这个例子有一个问题: 各种类型的列表都有优点——例如,惰性列表可以无限长,连接列表有一个 O(1) 连接运算符.但是当所有这些列表类型都符合相同的签名时,函子只能使用它们的通用属性. 因此,我的问题是:当函子有用并且各种生成的结构不会失去它们 ..
发布时间:2022-01-02 13:48:40 其他开发

为什么要覆盖 operator()?

在 Boost Signals 库中,他们正在重载 () 运算符. 这是 C++ 中的约定吗?用于回调等? 我在一位同事(他恰好是 Boost 的忠实粉丝)的代码中看到了这一点.在所有 Boost 优点中,这只会让我感到困惑. 对此超载的原因有任何见解吗? 解决方案 重载 operator() 的主要目标之一是创建一个函子.函子的行为就像函数一样,但它的优点是它是有状态的 ..

将 boost::function 降级为普通函数指针

想要将 boost::bind 传递给需要普通函数指针(相同签名)的方法. typedef void TriggerProc_type(Variable*,void*);void InitVariable(TriggerProc_type *proc);boost::function触发过程...InitVariable(triggerProc);错误 C2664:“InitVariable": ..
发布时间:2021-12-24 14:59:58 C/C++开发

何时在 lambda 上使用函子

是否存在创建函子比使用 lambda 更有意义的情况? 我知道我的问题实际上是 何时在函子上使用 lambda,但我想不出在实践中函子会首选而不是 lambda 的情况.对此有什么想法吗? 解决方案 lambda 是一个函子 - 只是用更短的语法定义. 问题是这种语法是有限的.它并不总是允许您以最有效和最灵活的方式解决问题 - 或者根本不解决.在 C++14 之前,operat ..
发布时间:2021-12-23 22:07:11 C/C++开发