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

python - Python 中更好的函数组合

我在 Python 中工作。最近,我发现了一个很棒的小包,叫做fn。我一直在使用它进行功能组合。

例如,而不是:

使用 fn,您可以编写:

看到这里,我立刻想到了 Clojure:

但是请注意,在 Clojure 中,输入是如何在左侧的。我想知道这在 python/fn 中是否可行。

0 投票
1 回答
366 浏览

playframework-2.0 - 如何在播放框架 2.0 中的动作组合期间更改包装的动作调用

根据我对动作组合的理解,我们可以将多个动作类包装在一个动作类周围,以便在动作动作类之前首先调用包装的类

所以,例如:

任何对 index 的调用都将首先通过 a & b 的 call() 方法。这里的关键是,在某个时间点,需要将控制权委托给 index() 方法。

我的问题是;是否可以在 a 或 b 中将呼叫从索引更改为注销。

我尝试调用 controller.Application.logout() 而不是 delegate.call 但 logout 方法没有得到上下文的句柄。有任何想法吗?

0 投票
2 回答
211 浏览

haskell - 用否定理解函数组合

从一个很棒的网站阅读了关于高阶函数的页面后,我仍然无法理解与函数组合配对的否定函数。

更具体地说,请看这段代码:

产生:

我再次重新阅读了该页面,但老实说,我仍然不知道那行代码是如何产生这个答案的,如果有人能引导我完成这个过程,我将非常感激!

0 投票
1 回答
183 浏览

scala - scala中函数组合顺序的编译时约束

我想定义一些处理自然语言文本的函数。这些函数中的每一个都为文本添加了一些“注释”,例如:

所以我可能有一个添加 Token 注释的 Tokenizer 函数,一个添加 Sentence 注释的 SentenceSegmenter 函数等。这些函数对它们的运行顺序有一些限制。例如,Tokenizer 可能需要 Sentence 注释,因此它必须在 SentenceSegmenter 之后运行。在这种情况下,如果我不小心以错误的顺序组合这些函数,我想得到一个编译错误。所以sentenceSegmenter andThen tokenizer应该编译,但tokenizer andThen sentenceSegmenter不应该。

下面是我的尝试。我为文本定义了一个特殊的容器类型,其中类型参数指定(通过复合类型)向文本添加了哪些注释,然后函数适当地指定它们的类型参数以确保它们在它们的先决条件之前不能运行是复合类型的一部分。

到目前为止,一切都很好。当我尝试实际定义其中一个函数时,问题就出现了。例如,我想定义tokenizer如下内容:

但是 Scala 编译器无法弄清楚如何推断++方法的类型参数,除非我手动指定类型参数,否则text.++[Token](...)会产生错误:

有没有办法推断出这个类型参数?或者,或者,我是否考虑错了问题?有没有更好的方法来在 Scala 中捕获这些类型的函数组合约束?

0 投票
1 回答
181 浏览

scala - 防止scala函数组合推断?类型

我正在尝试在其类型参数中组合一些具有复合类型的函数:

我的主要目标是能够用以下简单的东西来组合它们:

但是,这会产生编译错误,因为 Scala 推断需要的类型tokenizerContains[? with Sentence] => ?

我尝试了一个稍微不同的定义,tokenizer它更接近 Scala 推断的类型,但我得到了类似的错误:

如果我指定几乎任何类型以及sentenceSegmenter,或者如果我创建一个没有类型参数的虚假初始函数,我可以编译一些东西:

我不介意类型Any或被Nothing推断,因为我真的不在乎是什么T。(我主要关心这with XXX部分。)但我希望它被推断出来,而不是必须明确指定它,或者通过虚假的初始函数提供它。

0 投票
2 回答
633 浏览

scala - 如何使类型推断与部分函数一起使用

我想定义使用部分函数处理消息的类的类层次结构。每个类都应该将它无法处理的消息推迟到它的超类。像这样的东西:

你明白了。但是当我尝试这个时,我得到以下错误

当我明确给出 {...} 块的类型时,它可以工作:

有没有办法实现这一点而不必显式指定部分功能块的类型?

0 投票
2 回答
220 浏览

f# - Understanding the F# Composition Operators

I am well-versed in using the >> and << operators in F#. However, after looking in the F# source to establish a deeper understanding I became confused with this:

How do I interpret these expressions conceptually? Also, how would you describe these expressions? Are they defining a type?

0 投票
1 回答
675 浏览

api - Scala API 2.10.*:Function2.and 然后发生了什么?

我正在阅读 Joshua Suereth 的《Scala in Depth》,这本书是我为明确确立作者的能力而购买的。我在第 3 页,经过一堆拼写错误和不连贯的格式(好吧,我已经容忍了这些错误),我偶然发现了以下关于解决一个非常简单场景的功能性方法的示例。

我谨慎地举了这个例子,前提是它显然是一个蓝图(没有定义具体的方法......)......«catch»显然是另一个错字,只要它是一个保留字......Cat并且Bird不可实例化......</p>

…但是,尽管示例质量很差,但我不能认为根据函数组合定义的«story» val(andThen是 的«reverse-associative» compose)是另一个意外错误,前提是它是示例的核心

实际上,该示例无法在我的本地版本的 Scala (2.10.1) 上编译,并且在可用的最新版本 (2.10.2) 上也没有记录。

毫无疑问它的用处和它的实现很容易完成(跟随):

在对 API 进行了简短的审查后,我发现它andThen仅受 Function1 支持,并且据说从 Function2 消失到 Function22 所以,问题是:

当前要支持的习语是什么,andThen并且composeFunction* 的数量大于 1?

0 投票
3 回答
885 浏览

haskell - Haskell 元组函数组合

我已经从 Richard Bird 的使用 Haskell 的 Introduction to FP 开始学习 Haskell,但我坚持证明以下几点:

对的定义如下:

有人能指出我正确的方向吗?请记住,我只是在开始。提前致谢!

0 投票
3 回答
640 浏览

haskell - `foldMap 的类型。折叠地图`

(这是Typeclassopedia中的一个练习。)

如何计算两个非平凡函数的组合类型,例如foldMap . foldMap

对于简单的情况,这很容易:只需查看类型(.)

并找到类型a,bc两个函数。

在 的情况下foldMap,类型是

我看不出有什么办法可以将这个函数的类型“拆分”成两部分,这样我就可以得到一个“a”、“b”和“c”,就像 for 的类型一样(.)

然后我要求ghci计算它的类型。它通过以下类型成功:

如何从foldMapand(.)的类型派生该类型?我特别困惑的是,在's 类型中t (t1 a)找不到的“新”类型如何出现在 for 类型中。foldMapfoldMap . foldMap