问题标签 [function-composition]
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中编写函数时需要使用括号?
假设我需要定义以下函数:
身份 = chr.ord
但是上面的行不起作用,正确的方法是:
身份 = (chr.ord)
Haskell 通常是一种极简主义的语言,因此使用额外的括号似乎并不自然(对我来说)。
有谁知道需要引入括号。我不记得我们在 haskell 中在哪里使用点运算符(除小数外)。
根据 Nate/Daniel 的评论进行编辑
你俩都是对的。我的实际方法是:
现在我明白了,在这种情况下,它将评估 ord a 然后尝试评估 chr.97,因此出现错误!
谢谢。
haskell - Haskell:在函数组合中使用映射
我对 Haskell 比较陌生,如果我的问题听起来很愚蠢,我很抱歉。我一直在尝试了解函数组合是如何工作的,并且遇到了一个我想知道有人可以帮助我解决的问题。我在以下两种情况下在函数组合中使用 map:
map (*2) . filter even [1,2,3,4]
map (*2) . zipWith max [1,2] [4,5]
尽管 filter 和 zipWith 函数都返回一个列表,但只有第一个组合有效,而第二个组合抛出以下错误:
任何建议将不胜感激。
lambda - 如何在魔法森林中创建一个 K 组合器?(模仿知更鸟)
回想一下,K 组合子是一个常数函数。它总是返回它的第一个参数:
在《模仿一只知更鸟》一书中,作者展示了一个包含会说话的鸟儿的魔法森林的例子。鸟类有以下行为:
给定任何鸟 A 和 B,如果你向 A 喊 B 的名字,那么 A 会通过向你呼唤某种鸟的名字来回应:我们将用 AB 指定这只鸟。
假设森林由三只鸟 A、B 和 C 组成。是否有可能至少有一只鸟表现得像 K 组合子?
下表显示了魔法森林中鸟类可能的一组行为。第一列是森林中每只鸟的名字。最上面一行有可以叫到每只鸟的名字。身体是鸟对名字的反应。例如,如果你向鸟 A 喊 A 的名字,那么鸟 A 会用 C 回应(见第 2 行第 2 列)。简而言之,AA = C。如果你向鸟 A 喊 B 的名字,那么鸟 A 会用 B 回应(见第 2 行第 3 列)。简而言之,AB = B。AC 的空槽应该输入什么值?
让我们看看我们是否可以让鸟 A 表现得像 K 组合器。上面的一组值看起来很有希望:
对于所有 y,AA = C 和 Cy = A。也就是说,对于所有 y,(AA)y = A。
对于所有 y,AB = B 和 By = B。也就是说,对于所有 y,(AB)y = B。
应该在空槽(AC)中放置什么值?考虑所有情况:
如果 AC = A,那么对于所有 y,Ay 的值必须是 C,这显然是错误的。因此 A 不能是空槽的正确值。
如果 AC = B,那么对于所有 y,By 的值必须是 C,这显然是错误的。因此 B 不可能是空槽的正确值。
如果 AC = C,那么对于所有 y,Cy 的值必须是 C,这显然是错误的。因此 C 不能是空槽的正确值。
因此,对于每个 y,都不能在空槽中放置任何值来满足条件 (AC)y = C。
据我所知,不可能让任何鸟表现得像 K 组合子。我希望你能证明我错了。
list - 通过函数组合有效的列表追加/前置
几个月前,我在某处读到了一种在 O(1) 中将列表附加和前置到其他列表的有效方法,方法是用函数组合表示它们,一旦评估,就会在 O(n) 中构建结果列表。
不幸的是,我不记得这篇文章的来源或(如果存在)这种技术/方法的名称。请问您有这方面的参考吗?
haskell - 功能组合提示
只是在寻找以下组合如何工作的解释:
在哪里
最终类型:
我无法理解如何将ma与(a -> mb)匹配,即。如何将简单类型的返回结果应用于(=<<)期望函数类型的第一个参数?
.net - 如何干净地将参数从函数传递到函数(如组合)
我不知道 F# 中所有不同的运算符和技术,但希望我可以用一些运算符代替 func1 和 func2 的“x y”,以向他们指示“只需使用我的参数”,就像组合如何具有隐式参数一样通过。
或者,如果有人能想到一种更直接、更简洁的方法来消除我的函数将其参数提交的需要,请告诉我。
另外,如果这似乎完全不可能,请告诉我。
谢谢!
haskell - 具有多个变量的无点组合
我已经开始关注它,并且更喜欢将它用于简单的情况,在这些情况下,我基本上可以将值从一个输出传递到一个输入。我喜欢的无点构图的一个简单示例是:
今天在玩 GHCI 时,我想看看我是否可以作曲not
和(==)
复制(/=)
,但我真的无法推理出来。(==)
取两个输入,not
取一个。我认为这可能有效:
假设单个Bool
输出(==)
将转到not
,但它不会编译,引用以下错误:
我希望我能说这对我来说意义重大,但我得到的只是传递给的第二个论点可能是为了(==)
搞砸事情not
?任何人都可以帮助我更好地理解这个组合背后的逻辑吗?
c++ - Boost函数组成
假设我想要一个函数double adapter(double)
,有没有一种通用的方法可以用 a 组合它boost::function<double(...)> functor
来产生另一个boost::function<double(...)> functor2
where functor2(...) == adapter(functor(...))
?特别是,如果有一种方法可以在不使用 C++11 的情况下做到这一点,那就太酷了。
编辑澄清一下,我很想知道是否有办法编写可以处理 any 的东西boost::function<double(...)>
,即具有不同长度签名的东西,而不必为 1、2、3 等参数多次复制和粘贴。
haskell - 寻找haskell高阶函数
将列表压缩到自身上的函数可以定义为:
这行得通,但我想以无点风格定义它。为此,我定义了一个函数dollarize
:
这可行,但显然我宁愿不定义自己的高阶函数。有没有办法找到 的标准等价物dollarize
,假设它存在?如果不是,那么用于组合功能的此类功能在哪里?
haskell - Haskell:函数中的点
谁能告诉我为什么在这个函数中使用“。” ?