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

functional-programming - 这个 OCaml 函数组合运算符定义/表达式是否正确?

  1. 上面的表述正确吗?
  2. 在我看来,上面的代码应该就像定义f++g x = 2 * x + 1. 我对么?
0 投票
2 回答
182 浏览

haskell - 函数组合在 let 中的工作方式不同吗?

要从 GHCi 中的列表中删除最后一项,我可以反转列表,取出尾部,然后再次反转它。例如,

由于那里有很多括号,我想我会改变它以使用函数组合。但是,当我尝试此操作时,出现以下错误。

我认为这意味着它不喜欢 compose reverse [1,2,3,4],所以我尝试在它周围加上括号,但它给了我同样的错误。

但是,如果我执行以下操作,它可以正常工作。

是什么导致了这个错误,为什么 let 绑定阻止了这个错误的发生?

0 投票
3 回答
1105 浏览

haskell - 折叠 foldr 函数组合 - Haskell

所以,我真的在努力理解 foldl.foldr 的组成。这是一个例子:

结果是 22,但这里到底发生了什么?

在我看来,这就是正在发生的事情:foldl (+) 1 [6,15]. 我的怀疑与该foldr部分有关。它不应该将 1 添加到所有子列表中吗?像这样:foldr (+) 1 [1,2,3]。在我的脑海中,1 只添加了一次,对吗?(可能不是,但我想知道如何/为什么!)。

我很困惑(也许让所有的困惑,哈哈)。谢谢!

0 投票
3 回答
2681 浏览

haskell - 地图 。foldr 函数组合 - Haskell

所以,让我们直奔主题。

什么是 [[a1] -> a]?我真的很想理解这个组合,所以我这样做了:

在这一点上会发生什么?谢谢!

0 投票
2 回答
693 浏览

haskell - Haskell:为什么 ((.).(.)) fg 等于 f 。gx?

你能解释一下表达式 ((.).(.)) 的含义吗?据我所知 (.) 的类型为 (b -> c) -> (a -> b) -> a -> c。

0 投票
3 回答
147 浏览

haskell - 在 Haskell 中用算术类型函数组合函数

我现在正在学习 Haskell,并且正在尝试使用函数组合。

我写了两个函数。

let func1 x y = x + y

let func2 t = t*2

但是,当我尝试组合这两个函数时, func2 . func1 1 2我希望得到 6 个。

相反,我收到此错误:

有人可以解释为什么这不起作用吗?

0 投票
3 回答
135 浏览

haskell - 在函数执行递归后操作列表

我是 Haskell 的新手,我正在尝试在列表上执行一些递归函数,并且在递归完成后,我想从递归访问输出列表以执行附加操作。

例如,下面的函数接受一个要保留的值和一个列表,它返回一个列表,其中只包含要保留的值,丢弃所有其他值。

我想做的是了解如何在递归发生后访问输出列表,以便继续对其进行操作。

就像是:

我的功能

提前谢谢了!

0 投票
2 回答
388 浏览

erlang - Erlang 中缺少可变参数的解决方法

对 Erlang 完全陌生。我正在尝试为函数组合定义一些函数,例如compose,但遇到了 Erlang 没有(据我所知)可变参数的事实,因此很难只编写适用于所有输入的此类函数的一个版本.juxtpipe

到目前为止,我最好的想法是将不同数量的函数硬编码到一个合理的数量,并提供一个版本,该版本需要更大的列表,如下所示:

哪个有效,但我很好奇是否有更好的方法?

0 投票
3 回答
182 浏览

haskell - 具有函数组合的类型推理列表

我正在尝试使用折叠来取 Haskell 中整数和的平方。但是,我从 GHCi 收到了一个神秘的错误。这是我的单行:

我从 GHCi 得到的是:

我认为问题出在我基于此类型声明最后传入的列表中。

任何人都可以让我了解为什么这种类型需要一种Enum以及任何方式来显式转换列表以便我可以调试这个函数吗?提前致谢。

0 投票
1 回答
1430 浏览

arguments - Smalltalk:使用块作为块参数?

是否可以将块语句作为给定深度 k 的块参数传递?例如,如果 k = 1,我将 f(x) 定义为[x + 3],但如果 k=2,我想要 f(f(x)),即[[x + 3] + 3]。这是一个分配,所以我需要使用块语句。#value:似乎只取整数,是否有更通用的版本#value:

编辑:让我更清楚一点。我的函数采用从 a 到 b 的范围和深度 k。该函数将对块语句进行评估。因此,for将从 1[x + 3] method: 1 to: 3 for: 2评估[[x+3] + 3]到 3。只要 k = 1,我就可以从 1 评估到 3。我正在尝试将块语句修改[x+3][[x+3]+3],这就是我遇到麻烦的地方。我试过了

但我得到一个 BlockClosure(Object)>>doesNotUnderstand: #adaptToNumber:andSend:错误(这就是为什么我认为它只是整数)