问题标签 [partial-application]
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.
haskell - Haskell:部分应用函数,光线追踪器程序中的函数组合
我在理解函数组成和部分应用函数的概念时遇到了问题。
实际上,我正在编写一个小型光线追踪器,并有一些我不完全理解的示例实现。这是一个我不明白的例子(https://github.com/ryanl/haskell-raytracer/blob/master/src/RayTracer.hs):它是检测光线颜色的函数:
我对(子)函数感兴趣,lightadded
其中foldr
-part 表示部分应用的函数(当我是对的时候)。函数的概念很明确,就是要把可见光源的光加在曲面上的一点上。对于每个可见光源,都effectivelight
映射了一个函数。我不明白的是foldr
-function 的最后一个参数(.map effectivelight)和函数的完整构造。有人可以向我解释功能(部分)和功能的构造吗?也许人们可以以更直观的方式编写函数?
javascript - 在 Crockford 的 `curry` 方法中,`this` 无效有什么原因吗?
在 Douglas Crockford 的“Javascript: The Good Parts”一书中,他提供了一个curry
方法的代码,该方法接受一个函数和参数,并返回带有已添加参数的函数(显然,这不是“咖喱”的真正含义,而是一个例子“部分应用”)。这是代码,我已对其进行了修改,以便无需他制作的其他一些自定义代码即可工作:
因此,如果您有一个add
功能:
您可以创建一个已经有一个参数的新函数:
这很好用。但我想知道的是他为什么this
要这样做null
?预期的行为不会是咖喱方法与原始方法相同,包括相同this
吗?
我的咖喱版本如下所示:
例子
如果我尝试按照 Douglas Crockford 的方式进行操作:
如果我按照我的方式做:
但是,我觉得如果道格拉斯·克罗克福德按照自己的方式行事,他可能有充分的理由。我错过了什么?
javascript - Using Function.prototype.bind with an array of arguments?
How can I call Function.prototype.bind with an array of arguments, as opposed to hardcoded arguments? (Not using ECMA6, so no spread operator).
I'm trying to put a promises wrapper around a module that uses callbacks and I want to bind all of the arguments passed in to my wrapper method and bind them. Then I want to call the partially applied bound function with my own callback, which will resolve or reject a promise.
But obviously this doesn't work because bind expects arguments rather than an array of arguments. I know I could do this by inserting my callback onto the end of the arguments array and using apply:
Or by iterating over the arguments array and rebinding the function for each argument:
But both of these methods feel dirty. Any ideas?
partial-application - 是否可以在 Livescript 中定义提升的咖喱函数?
如何function
在 Livescript 中使用关键字定义柯里化函数?
更简洁地说,我怎样才能得到这个
像这样行事
clojure - 阅读器 monad 和 Clojure 中的部分函数有什么区别?
Leonardo Borges对 Clojure 中的Monads进行了精彩的演示。在其中,他使用以下代码描述了 Clojure 中的 reader monad :
这样做的好处是您正在以纯粹的功能方式从环境中读取值。
但是这种方法看起来非常类似于 Clojure 中的偏函数。考虑以下代码:
我的问题是:读者单子和 Clojure 中的部分函数有什么区别?
map - 如何在 Common Lisp 中映射函数?
我在 Common Lisp 中制作了这个函数
它工作正常。问题是我想在 Common Lisp 湖中创建一个函数,如下 Haskell 函数
namley,将f
部分应用于列表的函数映射。
我做了以下函数来创建列表
并且工作正常,我只需要知道如何进行映射。
javascript - 是我,还是 John Resig 关于部分应用的热门博文不起作用?
John Resig 有一篇关于偏应用的热门博文:http ://ejohn.org/blog/partial-functions-in-javascript/很多地方都提到过,并且有
但是,博客文章中的代码不起作用。这里是:
现在,如果您尝试在控制台中运行它,它将正常工作。但是,如果您再次尝试使用延迟功能,它将无法正常工作。运行第一段后,尝试在控制台中运行它:
请注意,第二条消息不会出现 - 第一条消息会出现。当然,如果你重新制作延迟函数,它会起作用,但你到底为什么要在每次使用它时重新制作部分应用的函数呢?
现在,鉴于这篇博文是“部分应用程序 javascript”的第二个谷歌搜索结果,而且似乎相当流行,我怀疑它完全被破坏了。另一方面,大量的代码示例和流行的 Prototype.js 库函数以我期望的方式 - 可重用的部分应用程序。他的柯里化功能,在页面稍高的地方,完全符合我的预期。因此:
- John Resig 的代码不正确吗?
- 如果不是,为什么他的代码每次要使用它时都强迫你重新制作部分应用的函数?
haskell - 追查函数偏应用的类型
我一直在检查它的类型Lens
以了解它,并且无法确定那里的部分应用程序的结果类型。
初始类型是这样的:type RefF a b = forall f. Functor f => (b -> f b) -> (a -> f a)
上面申请的Identity
functor类型变成了这样:
它们的修改函数定义如下:
我将上述定义单独分解以更好地理解它。
从上面,类型Identity . m
是b -> Identity b
我什至使用类型检查器验证了这一点:
现在,我尝试制定r (Identity . m)
. 这里是我的头脑变得空虚的地方。部分应用的实际结果r (Identity . m)
似乎a -> Identity a
如下类型检查:
一个人如何在心理上解决这个问题?当我尝试部分适用che
于 时r
,它似乎不适合:
怎么查出偏应用r che
是(a -> Identity a)
c++ - C/C++: A (*eval(A (*function)(B),B b))(){ ... } 可能吗?(可能是 C++11 之前的版本)
在 C/C++(可能是 C++11 之前的版本)中,是否可以这样做
即,一个函数
- 从 B 值返回 A 值的函数,
- 一个 B 值被馈送到该函数,
它返回 - 一个从 () 中返回 A 的函数 ...??
如果是,会是
- 高效的??
- 保证编译器生成在调用返回函数之前不执行的代码?
提前感谢和欢呼,尼克
2014-4-20 (1): 感谢您提及 'evtl.'(固定)std::bind。:-)
所以——要理解——(在没有 Boost 的 C/pre C++11 中)函数指针是例外的,因为在函数内部,只能声明它们,但无法生成或修改实例——如函数/方法定义是函数指针实例的唯一可能来源,它们可以显式地或通过函数/方法参数从那里移交?
只是问,因为我不清楚函数指针的可能内部表示......
2014-4-20(2):随着Danvil的贡献,是时候揭晓目的了,这里同模板:
这是可行的,而——正如一些人可能已经猜到的那样——从任意匹配的函数/参数集合中的整体,旨在作为零参数过程发送到类似于 try/catch 的单个函数/方法处理执行中。
由于不必为每个不同的参数计数使用几乎相同的代码,实际的想法是生成仍未执行的作业,作为所有情况下相同类型的零参数过程。
尽管如此,我还是没有找到如何在函数内部构造或修改函数指针的方法。以某种方式对 Evaluator 进行“类型转换”似乎不切实际,是吗?
再次,非常感谢,复活节快乐...... :-)
haskell - Haskell 如何评估这个用偏应用定义的函数?
我试图了解 Haskell 是如何评估pp1 [1,2,3,4]
到[(1,2),(2,3),(3,4)]
这里的:
我是这样开始的:
有什么帮助吗?