问题标签 [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 回答
1137 浏览

haskell - 续传风格——函数组合

我正在使用 Racket 学习 CPS,并且我已经设法编写了这些函数:

他们似乎工作正常

我想知道这些功能是否仍然是“真正的 CPS”。我用这些函数搞砸了“真正的”延续传递吗?在 CPS 中使用函数组合技术是否符合规定?是鼓励吗?或者这样做是否会被视为“妥协”?有没有更多的 CPS-y 方式来做到这一点?

是的,我知道我刚刚问了 5 个问题,但它们背后的基本思想(我不确定我是否理解正确)是相同的。其他 Lisps、Haskell、Erlang 或其他函数式语言的解释都很好。

0 投票
3 回答
1189 浏览

f# - 我错过了什么:具有多个参数的函数组合是否可能?

我了解 F# 中函数组合的基础知识,例如,此处所述。

不过,也许我错过了一些东西。>>and<<运算符似乎是在假设每个函数只接受一个参数的情况下定义的:

但是,我想做的是如下所示:

但即使add' 的输出是 ' 输入所需的类型double,它也会被拒绝。

我知道我可以用一个元组参数重写 add :

或者我可以为第一个函数的每个可能参数编写一个新运算符:

但这似乎很愚蠢!我错过了更好的方法吗?

0 投票
2 回答
295 浏览

list - Haskell中令人困惑的函数应用和函数组合

操作

给出一个错误。如何在该列表上正确应用此过滤器?

0 投票
2 回答
1483 浏览

haskell - 在 Haskell 中表达长链组合

(不重要的背景信息/动机)

受Yesod 书不鼓励使用它的nub启发,我正在实施不同版本的.

map head . group . sort比调用更有效nub。然而,在我们的例子中,顺序很重要......

所以我开始写一个类似于顺序不重要版本的“更好”的小块。我最终得到了这个:

这当然做了很多额外的工作,但它应该是 O(n log n) 而不是原始 nub 的 O(n 2 )。但这无关紧要。问题是,太长了!它真的没有那么复杂,但它很长(我是那些讨厌超过 80 列或 StackOverflow 代码块上的水平滚动条的人之一)。

(问题)

Haskell中有什么更好的方法来表达这样的长链函数组合?

0 投票
6 回答
12141 浏览

haskell - (c→d) → (a→b→c) → (a→b→d) 类型的 Haskell 函数组合算子

普通函数组合的类型

我认为这应该概括为以下类型:

一个具体的例子:计算差异平方。我们可以写diffsq a b = (a - b) ^ 2,但感觉我应该能够作曲(-)(^2)写出类似的东西diffsq = (^2) . (-)

我当然不能。我可以做的一件事是使用元组而不是两个参数来(-)转换它uncurry,但这是不一样的。

有可能做我想做的事吗?如果不是,我有什么误解让我认为它应该是可能的?


注意:这实际上已经在这里问过了,但没有给出答案(我怀疑必须存在)。

0 投票
5 回答
200 浏览

list - 将 2 个列表函数合并为 1 个?

我将如何结合以下两个功能:

成一个单一的功能?

是否可以?

0 投票
2 回答
5067 浏览

haskell - Haskell 中带有元组参数的函数组合

有时我有两种形式的功能:

我需要作文g。我通过将 h 更改为 h' 来解决这个问题:

你能告诉我(如果可能的话)一个函数 m,这样:

或者另一种处理这种情况的方法。谢谢。

0 投票
5 回答
856 浏览

haskell - composition with dyadic operator?

I want to do something fairly simple; I am using the operator (++) with Data.Map insertWith, and it works fine, but I want to eliminate duplicates in the value created, so want to compose it with nub.

I tried (nub (++)), (nub $ (++)), (nub . (++)), all to no avail, in that the type of (++) does not match the expected type of nub ( [a] ).

I could of course define an auxiliary function or a lambda, but I think that probably there is a composition which would be clearer.

Hints please!

0 投票
2 回答
1678 浏览

python - Python函数组合(最大递归深度误差,范围?)

这个功能有什么问题?这似乎是一个范围错误(尽管我认为我已经通过将每个可调用对象放在列表中而不是直接使用它来解决这个问题)。错误是达到最大递归深度(调用 comp(inv,dbl,inc) 时)...

注意:问题是:为什么它甚至是递归的,而不是为什么它达到最大深度......

回溯(如果有帮助):

0 投票
3 回答
559 浏览

haskell - Haskell中函数组合的困惑

考虑以下 ghci 中的函数定义。

在哪里, 。代表两个函数的组合(右结合)。这个我可以打电话

它给了我想要的结果。显然,它将列表 [3.14, 3.14] 传递给函数“sum”,并将其“结果”传递给 cos 等等。但是,如果我在口译员中这样做

或者

然后我遇到了麻烦。将其修改为以下内容给了我想要的结果。

或者

(.) 的类型表明以下形式不应该有问题,因为 'sum y' 也是一个函数(不是吗?毕竟在 Haskell 中一切都是函数?)

更有趣的是,我可以使用两个(或多个)参数(考虑将列表 [3.14, 3.14] 作为两个参数 x 和 y 传递),我必须编写以下内容

HaskellWiki 上有一些关于这种形式的讨论,他们称之为“PointFree”形式http://www.haskell.org/haskellwiki/Pointfree。通过阅读这篇文章,我怀疑这种形式不同于两个 lambda 表达式的组合。当我尝试画一条分隔这两种样式的线时,我感到困惑。