问题标签 [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.

0 投票
1 回答
553 浏览

haskell - 为什么我们在haskell中编写函数时需要使用括号?

假设我需要定义以下函数:

身份 = chr.ord

但是上面的行不起作用,正确的方法是:

身份 = (chr.ord)

Haskell 通常是一种极简主义的语言,因此使用额外的括号似乎并不自然(对我来说)。

有谁知道需要引入括号。我不记得我们在 haskell 中在哪里使用点运算符(除小数外)。

根据 Nate/Daniel 的评论进行编辑

你俩都是对的。我的实际方法是:

现在我明白了,在这种情况下,它将评估 ord a 然后尝试评估 chr.97,因此出现错误!

谢谢。

0 投票
5 回答
3741 浏览

haskell - Haskell:在函数组合中使用映射

我对 Haskell 比较陌生,如果我的问题听起来很愚蠢,我很抱歉。我一直在尝试了解函数组合是如何工作的,并且遇到了一个我想知道有人可以帮助我解决的问题。我在以下两种情况下在函数组合中使用 map:

  • map (*2) . filter even [1,2,3,4]
  • map (*2) . zipWith max [1,2] [4,5]

尽管 filter 和 zipWith 函数都返回一个列表,但只有第一个组合有效,而第二个组合抛出以下错误:

任何建议将不胜感激。

0 投票
2 回答
1183 浏览

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 组合子。我希望你能证明我错了。

0 投票
2 回答
1073 浏览

list - 通过函数组合有效的列表追加/前置

几个月前,我在某处读到了一种在 O(1) 中将列表附加和前置到其他列表的有效方法,方法是用函数组合表示它们,一旦评估,就会在 O(n) 中构建结果列表。

不幸的是,我不记得这篇文章的来源或(如果存在)这种技术/方法的名称。请问您有这方面的参考吗?

0 投票
2 回答
361 浏览

haskell - 功能组合提示

只是在寻找以下组合如何工作的解释:

在哪里

最终类型:

我无法理解如何将ma(a -> mb)匹配,即。如何将简单类型的返回结果应用于(=<<)期望函数类型的第一个参数?

0 投票
1 回答
125 浏览

.net - 如何干净地将参数从函数传递到函数(如组合)

我不知道 F# 中所有不同的运算符和技术,但希望我可以用一些运算符代替 func1 和 func2 的“x y”,以向他们指示“只需使用我的参数”,就像组合如何具有隐式参数一样通过。

或者,如果有人能想到一种更直接、更简洁的方法来消除我的函数将其参数提交的需要,请告诉我。

另外,如果这似乎完全不可能,请告诉我。

谢谢!

0 投票
3 回答
1435 浏览

haskell - 具有多个变量的无点组合

我已经开始关注它,并且更喜欢将它用于简单的情况,在这些情况下,我基本上可以将值从一个输出传递到一个输入。我喜欢的无点构图的一个简单示例是:

今天在玩 GHCI 时,我想看看我是否可以作曲not(==)复制(/=),但我真的无法推理出来。(==)取两个输入,not取一个。我认为这可能有效:

假设单个Bool输出(==)将转到not,但它不会编译,引用以下错误:

我希望我能说这对我来说意义重大,但我得到的只是传递给的第二个论点可能是为了(==)搞砸事情not?任何人都可以帮助我更好地理解这个组合背后的逻辑吗?

0 投票
1 回答
262 浏览

c++ - Boost函数组成

假设我想要一个函数double adapter(double),有没有一种通用的方法可以用 a 组合它boost::function<double(...)> functor来产生另一个boost::function<double(...)> functor2where functor2(...) == adapter(functor(...))?特别是,如果有一种方法可以在不使用 C++11 的情况下做到这一点,那就太酷了。

编辑澄清一下,我很想知道是否有办法编写可以处理 any 的东西boost::function<double(...)>,即具有不同长度签名的东西,而不必为 1、2、3 等参数多次复制和粘贴。

0 投票
3 回答
297 浏览

haskell - 寻找haskell高阶函数

将列表压缩到自身上的函数可以定义为:

这行得通,但我想以无点风格定义它。为此,我定义了一个函数dollarize

这可行,但显然我宁愿不定义自己的高阶函数。有没有办法找到 的标准等价物dollarize,假设它存在?如果不是,那么用于组合功能的此类功能在哪里?

0 投票
3 回答
314 浏览

haskell - Haskell:函数中的点

谁能告诉我为什么在这个函数中使用“。” ?