问题标签 [functor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - .NET Action 的 Java 等效项和功能, ETC
Java 中是否有任何标准的通用“回调”或“函数/方法”类型,例如.NETSystem.Action<T>
或System.Func<T,U>
.NET?
在我的具体情况下,我需要一个类来包装一个方法,该方法采用一个(通用)类型参数T
并且不返回任何内容(即void
)。
是的,为自己创建这样一个类/接口很容易,但如果有一个标准库类,我更喜欢它。
haskell - 所有 Haskell 函子都是内函子吗?
我有点困惑,需要有人来纠正我。让我们概述一下我目前的理解:
内函子在哪里E
,A
是某个类别:
既然 Haskell 中的所有类型和态射都在Hask
范畴内,那么 Haskell 中的任何函子不也是endofunctor吗?F : Hask -> Hask
.
我有一种很好的感觉,我错了,并且以某种方式过度简化了这一点,我希望有人告诉我我是多么的白痴。谢谢。
module - 理解 OCaml 中的函子
我对 OCaml 中的以下仿函数问题非常困扰。我粘贴一些代码只是为了让您理解。基本上
我在以下位置定义了这两个模块pctl.ml
:
和以下函子:
然后为了实际使用这些模块,我直接在一个名为的文件中定义了一个新模块prism.ml
:
从第三个来源( )我使用了带有模块formulas.ml
的函子:Prism
最后从main.ml
并编译给出以下错误
错误:此表达式的类型为 Prism.state = Prism.value 数组,但表达式应为 Formulas.PrismPctl.s 类型
据我所知,名称有一种不好的别名,它们是相同的(因为value array
类型定义为t
并且M with type s = P.t
在仿函数中使用)但类型检查器不认为它们相同。
我真的不明白问题出在哪里,有人可以帮助我吗?
提前致谢
c++ - C++ Templated Functor(基于现代 C++ 设计)编译错误
基于“现代 C++ 设计”一书的第 5 章(广义函子)
我正在尝试编写一个 Functor 模板。在问我“为什么我不直接使用 Boost 的 bind 或 Loki ?”之前 简单的答案是“因为我想学习”。
话虽这么说,我已经按照这本书,也使用了示例代码作为参考,但我不断地提出编译时错误,我似乎无法理解为什么。
当我修改本书的示例代码以不使用线程模型时,示例工作正常。但我的代码没有。以下是相关代码:
很基础的TypeList,还有TypeAt和Nulltype、EmptyType(也是根据书上的)
使用这些当然是 Functor
当我尝试这样使用它时:
我收到以下编译时错误:
有谁明白我为什么会看到这个问题?我没主意了。谢谢
interface - 在 OCaml 中使用函子作为接口
我正在 OCaml 中开发一些算法,这些算法需要某些部分是“可插入的”,以便将部分计算留给特定的计算机。
举个例子,假设我有一个这样的签名:
和两个不同的实现将是Alg1
和Alg2
。这个Algorithm
模块应该代表各种实现的接口,比如这两个。
现在我需要另一个组件,我们称它为Executor
使用Alg1
或Alg2
通过其接口的模块..
阅读函子似乎我应该需要一个函子,它接受一个Algorithm
并产生一个ConcreteExecutor
我需要的算法的特定实现。所以这Executor
是一种对其组件之一进行参数化的模块。
我对吗?这是获得我需要的最佳方式吗?我想知道这样的想法,因为我来自 Java/C++ 背景,所以我习惯于使用接口和抽象类,我需要以正确的方式解决这个函子/模块抽象问题。
获得我想要的东西的正确语法是什么?
提前致谢
haskell - Haskell 中状态的 Functor / Applicative 实例
在阅读(并浏览了一些部分)Wadler 关于 monad 的论文之后,我决定更仔细地阅读这篇论文,为他描述的每个 monad 定义函子和应用实例。使用类型同义词
Wadler 用于定义状态 monad,我有以下内容(使用相关名称,以便稍后使用 newtype 声明定义它们)。
当我切换到在 newtype 声明中使用类型构造函数时,例如,
一切都崩溃了。一切都只是轻微的修改,例如,
然而,由于 lambda 表达式隐藏在该类型构造函数中,因此在 GHC 中没有任何运行。现在我看到的唯一解决方案是定义一个函数:
为了将 s 绑定到 'st' 并实际返回一个值,例如,
还有另一种不使用这些辅助功能的方法吗?
module - OCaml 中具有多个参数的函子
我有以下情况:
这可以很好地生成类型模块,这些模块在其实现M
中使用类型模块的特定实现。Something
现在假设我有另一个模块定义为
有各种实现
问题的关键是M
模块现在应该在两件事上参数化:一个Something
模块和一个AU
模块,这样它就像
但我想有一个给定 aSomething
和给定 a 的通用函子,AU
它会产生一个模块,这两个东西都具体化了。有没有办法轻松获得?
由于函子语法很奇怪而且我还是新手,我不知道我所问的问题是否可以通过简单的方式解决。
提前致谢
c++ - 运算符重载问题
这段代码有什么问题?这段代码给了我很多语法错误。另外我想知道为什么在 C++ 中使用函子。
c++ - 如何用函子定义向量
嘿,我实现了以下仿函数:
当我尝试将向量定义如下时,我遇到了很多错误:
在此先感谢您的帮助。
c++ - 函子调用和函数调用的详细区别?
这样做的关键原因是 for_each () 实际上并没有假设 它的第三个参数是一个函数。它只是假设它的第三个参数是可以用适当的参数调用的东西。一个适当定义的对象和一个函数一样——而且通常比一个函数更好。例如,内联类的应用程序运算符比内联作为函数指针传递的函数更容易。因此,函数对象通常比普通函数执行得更快。具有应用运算符(第 11.9 节)的类的对象称为类函数对象、仿函数或简称为函数对象。
[Stroustrup,C++ 第 3 版,18.4-最后一段]
我一直认为operator()调用就像在运行时调用函数一样。它与普通的函数调用有何不同?
为什么内联应用程序运算符比普通函数更容易?
它们比函数调用快多少?