问题标签 [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.
functional-programming - 这个 OCaml 函数组合运算符定义/表达式是否正确?
- 上面的表述正确吗?
- 在我看来,上面的代码应该就像定义
f++g x = 2 * x + 1
. 我对么?
haskell - 函数组合在 let 中的工作方式不同吗?
要从 GHCi 中的列表中删除最后一项,我可以反转列表,取出尾部,然后再次反转它。例如,
由于那里有很多括号,我想我会改变它以使用函数组合。但是,当我尝试此操作时,出现以下错误。
我认为这意味着它不喜欢 compose reverse [1,2,3,4]
,所以我尝试在它周围加上括号,但它给了我同样的错误。
但是,如果我执行以下操作,它可以正常工作。
是什么导致了这个错误,为什么 let 绑定阻止了这个错误的发生?
haskell - 折叠 foldr 函数组合 - Haskell
所以,我真的在努力理解 foldl.foldr 的组成。这是一个例子:
结果是 22,但这里到底发生了什么?
在我看来,这就是正在发生的事情:foldl (+) 1 [6,15]
. 我的怀疑与该foldr
部分有关。它不应该将 1 添加到所有子列表中吗?像这样:foldr (+) 1 [1,2,3]
。在我的脑海中,1 只添加了一次,对吗?(可能不是,但我想知道如何/为什么!)。
我很困惑(也许让所有的困惑,哈哈)。谢谢!
haskell - 地图 。foldr 函数组合 - Haskell
所以,让我们直奔主题。
什么是 [[a1] -> a]?我真的很想理解这个组合,所以我这样做了:
在这一点上会发生什么?谢谢!
haskell - Haskell:为什么 ((.).(.)) fg 等于 f 。gx?
你能解释一下表达式 ((.).(.)) 的含义吗?据我所知 (.) 的类型为 (b -> c) -> (a -> b) -> a -> c。
haskell - 在 Haskell 中用算术类型函数组合函数
我现在正在学习 Haskell,并且正在尝试使用函数组合。
我写了两个函数。
let func1 x y = x + y
let func2 t = t*2
但是,当我尝试组合这两个函数时,
func2 . func1 1 2
我希望得到 6 个。
相反,我收到此错误:
有人可以解释为什么这不起作用吗?
haskell - 在函数执行递归后操作列表
我是 Haskell 的新手,我正在尝试在列表上执行一些递归函数,并且在递归完成后,我想从递归访问输出列表以执行附加操作。
例如,下面的函数接受一个要保留的值和一个列表,它返回一个列表,其中只包含要保留的值,丢弃所有其他值。
我想做的是了解如何在递归发生后访问输出列表,以便继续对其进行操作。
就像是:
我的功能
提前谢谢了!
erlang - Erlang 中缺少可变参数的解决方法
对 Erlang 完全陌生。我正在尝试为函数组合定义一些函数,例如compose
,但遇到了 Erlang 没有(据我所知)可变参数的事实,因此很难只编写适用于所有输入的此类函数的一个版本.juxt
pipe
到目前为止,我最好的想法是将不同数量的函数硬编码到一个合理的数量,并提供一个版本,该版本需要更大的列表,如下所示:
哪个有效,但我很好奇是否有更好的方法?
haskell - 具有函数组合的类型推理列表
我正在尝试使用折叠来取 Haskell 中整数和的平方。但是,我从 GHCi 收到了一个神秘的错误。这是我的单行:
我从 GHCi 得到的是:
我认为问题出在我基于此类型声明最后传入的列表中。
任何人都可以让我了解为什么这种类型需要一种Enum
以及任何方式来显式转换列表以便我可以调试这个函数吗?提前致谢。
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:
错误(这就是为什么我认为它只是整数)